2014-05-17 2 views
0

네이티브 안드로이드에서 자바 스크립트로 값을 보내고 싶습니다. 나는 아래처럼 노력하지만 nullPointerException을 얻고 나는이 질문을하고 사람이 나에게 말하기를, 나는 새로운 것으로 인스턴스를 만들어서는 안된다! 하지만 난 어떻게이 문제를 해결할 수 있습니다 그리고 어떻게이 클래스를 선언 할 수 및 loadUrl() 또는 sendJavascriptInterface()이 클래스에서 호출 할 수 있습니다 (주요 calss, 나는이 새로운 클래스에서이 메서드를 사용하는 의미). 나는이 코드를 쓴다. 나는 새로운 클래스가 잘못되었다는 것을 알지만 어떻게 해결할 수 있는지 모르겠습니다! :(phonegap에서 새 클래스의 인스턴스화

public class Test extends DroidGap { 
@Override 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
super.init(); 
     super.loadUrl("file:///android_asset/www/index.html"); 
Log.e("run javascript func from native android", ""); 


LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
LocationListener locationListener = new GPSLocationListener(); 
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 
     0, locationListener); 
} 
} 

GPSLocationListener :

public class GPSLocationListener implements LocationListener{ 

@Override 
public void onLocationChanged(Location location) { 
// TODO Auto-generated method stub 
if (location != null) { 
    GPScls MyGPS= new GPScls(); 
    Log.e(""+location.getLatitude(), ""+location.getLongitude()); 
    MyGPS.GPS(location.getLatitude(),location.getLongitude()); 

} 
} 

@Override 
public void onProviderDisabled(String arg0) { 
// TODO Auto-generated method stub 

} 

@Override 
public void onProviderEnabled(String arg0) { 
// TODO Auto-generated method stub 

} 

@Override 
public void onStatusChanged(String arg0, int arg1, Bundle arg2) { 
// TODO Auto-generated method stub 

} 

} 

GPScls :

public class GPScls extends DroidGap { 
public void GPS(double latitude,double longitude) { 
super.loadUrl("javascript:GPS("+latitude+","+longitude+");"); 
//this.sendJavascript("javascript:GPS("+latitude+","+longitude+")"); 
} 
} 

나는 이일 주변 검색하지만 난 이해할 수 없었다 :(

내가 쓸 수 있도록 제발 도와주세요 올바른 코드! 고마워요

+0

var longitude=getURLParameter('longitude'); var latitude=getURLParameter('latitude'); 

클래스를 얻기 위해 문서로드에 getURLParameter를 호출합니다. http://docs.phonegap.com/en/3.4.0/guide_hybrid_plugins_index.md.html#Plugin%20Development%20Guide – Ved

+0

그리고 단순히 위도와 경도를 원할 경우 직접 자바 스크립트를 사용하지 마십시오 – Ved

답변

1

원하는 값을 얻기 위해 html 파일에 매개 변수를 추가하십시오. 그런 다음 HTML 스크립트 태그에 아래 함수를 추가하여 html URL에서 값을 가져옵니다.

function getURLParameter(name) 
{ 
      return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(location.search)||[,""])[1].replace(/\+/g, '%20'))||null 
     } 

는 당신이 안드로이드 폰갭 플러그인을 사용하여이 작업을 수행 할 수

public class Test extends DroidGap { 
@Override 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
super.init(); 
LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
LocationListener locationListener = new GPSLocationListener(); 
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 
     0, locationListener); 


     super.loadUrl("file:///android_asset/www/index.html?longitude="+longitude+"&latitude="+latitude); 
Log.e("run javascript func from native android", ""); 


} 
} 
+0

답장을 보내 주셔서 감사합니다.하지만 답합니다. gps android에서 GeoLocation을 가져 와서 목표를 가지고 어떻게 JS를 호출하고 변수를 보낼 수 있는지 검토합니다. 어떻게 sencond 클래스의 loadUrl을 주 클래스가 아닌 (Test 클래스) 호출 할 수 있습니까? Geolocation을 가져오고 다른 클래스를 추가 할 필요가없는 경우 – user3209380

+0

. phonegap에는 geolocation을 얻는 API가 있습니다. 만약 내가 원하는 건 내가 geolocation을 얻을 코드를 보낼 수 있습니다. – Navneeth

+0

나는 휴대 전화에서 위도와 경도를 얻기위한 플러그인을 알고 있습니다. 그러나 나는 이것을 연습하고 싶고 이것 때문에 나는 플러그인을 사용하지 않고 나를 통해 위도와 날을 보내고 싶다. 도와 주셔서 감사합니다. 나는 phonegap 2.9를 사용한다. – user3209380

관련 문제