我在运行我的方法时遇到了一些问题。 如何让它工作,以便我的模拟位置能够在我的实际设备上工作。 (PS。我已经包含了权限)。
这提供了一个空指针异常,我不确定为什么?
方法:
private void setMockLocation() {
{
Context context = null;
LocationManager locationManager = (LocationManager)context.getSystemService( Context.LOCATION_SERVICE );
Criteria criteria = new Criteria();
criteria.setAccuracy( Criteria.ACCURACY_COARSE );
String provider = locationManager.getBestProvider( criteria, true );
if ( provider == null ) {
Log.e( TAG, "No location provider found!" );
return;
}
locationManager.getLastKnownLocation(provider);
Location newLocation = new Location(LocationManager.GPS_PROVIDER);
newLocation.setLatitude(55.9500);
newLocation.setLongitude(3.1833);
newLocation.setAccuracy(500);
mLocationManager.setTestProviderEnabled
(
LocationManager.GPS_PROVIDER,
true
);
mLocationManager.setTestProviderStatus
(
LocationManager.GPS_PROVIDER,
LocationProvider.AVAILABLE,
null,
System.currentTimeMillis()
);
mLocationManager.setTestProviderLocation
(
LocationManager.GPS_PROVIDER,
newLocation
);
}
}
堆栈跟踪:
05-10 18:50:46.218 14398-14398/com.example.ankhit.saveme E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.NullPointerException
at com.example.ankhit.saveme.UserLocation.setMockLocation(UserLocation.java:220)
at com.example.ankhit.saveme.UserLocation.access$000(UserLocation.java:42)
at com.example.ankhit.saveme.UserLocation$4.onClick(UserLocation.java:175)
at android.view.View.performClick(View.java:4439)
at android.view.View$PerformClick.run(View.java:18398)
at android.os.Handler.handleCallback(Handler.java:725)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:176)
at android.app.ActivityThread.main(ActivityThread.java:5299)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
at dalvik.system.NativeStart.main(Native Method)
但是,当我将下面的代码添加到上面显示的上下文代码中时,我收到“GPS 提供商未知”错误
LocationManager locationManager = (LocationManager)context.getSystemService( Context.LOCATION_SERVICE );
Criteria criteria = new Criteria();
criteria.setAccuracy( Criteria.ACCURACY_COARSE );
String provider = locationManager.getBestProvider( criteria, true );
if ( provider == null ) {
Log.e( TAG, "No location provider found!" );
return;
}
lastLocation = locationManager.getLastKnownLocation(provider);
堆栈跟踪:
05-10 18:54:37.395 15159-15159/com.example.ankhit.saveme E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.IllegalArgumentException: Provider "gps" unknown
at android.os.Parcel.readException(Parcel.java:1429)
at android.os.Parcel.readException(Parcel.java:1379)
at android.location.ILocationManager$Stub$Proxy.removeTestProvider(ILocationManager.java:956)
at android.location.LocationManager.removeTestProvider(LocationManager.java:1194)
at com.example.ankhit.saveme.UserLocation.setMockLocation(UserLocation.java:218)
at com.example.ankhit.saveme.UserLocation.access$000(UserLocation.java:42)
at com.example.ankhit.saveme.UserLocation$4.onClick(UserLocation.java:175)
at android.view.View.performClick(View.java:4439)
at android.view.View$PerformClick.run(View.java:18398)
at android.os.Handler.handleCallback(Handler.java:725)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:176)
at android.app.ActivityThread.main(ActivityThread.java:5299)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
at dalvik.system.NativeStart.main(Native Method)
有什么想法吗?
最佳答案
NullPointerException
应该来自
Context context = null;
LocationManager locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE );
因为 context
为 null
并且您调用了它的方法。
关于java - 调用方法时出现运行时错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30155304/