Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 启用GPS空指针异常_Android_Android Intent - Fatal编程技术网

Android 启用GPS空指针异常

Android 启用GPS空指针异常,android,android-intent,Android,Android Intent,您好,我已经尝试启用GPS,因为我正在使用下面的代码,但我在启用GPS时收到NullPointerException private void turnGPSOn(){ String provider = Settings.Secure.getString(getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED); if(!provider.contains("gps")){ //if gps is disab

您好,我已经尝试启用GPS,因为我正在使用下面的代码,但我在启用GPS时收到NullPointerException

     private void turnGPSOn(){
String provider = Settings.Secure.getString(getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED);

if(!provider.contains("gps")){ //if gps is disabled
    final Intent poke = new Intent();
    poke.setClassName("com.android.settings", "com.android.settings.widget.SettingsAppWidgetProvider"); 
    poke.addCategory(Intent.CATEGORY_ALTERNATIVE);
    poke.setData(Uri.parse("3")); 
    sendBroadcast(poke);
}
}

我的日志是

  09-08 23:12:28.799: W/System.err(7222): java.lang.NullPointerException
  09-08 23:12:28.799: W/System.err(7222):   at  android.content.ContextWrapper.getContentResolver(ContextWrapper.java:90)
  09-08 23:12:28.799: W/System.err(7222):   at com.eheuristics.android.diegodeals.googleplacesandmaps.GPSTracker.turnGPSOn(GPSTracker.java:110)
  09-08 23:12:28.799: W/System.err(7222):   at com.eheuristics.android.diegodeals.googleplacesandmaps.GPSTracker.getLocation(GPSTracker.java:63)
  09-08 23:12:28.799: W/System.err(7222):   at com.eheuristics.android.diegodeals.googleplacesandmaps.GPSTracker.<init>(GPSTracker.java:45)
  09-08 23:12:28.799: W/System.err(7222):   at com.eheuristics.android.diegodeals.NearestLocation.onCreate(NearestLocation.java:79)
  09-08 23:12:28.799: W/System.err(7222):   at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
  09-08 23:12:28.799: W/System.err(7222):   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1722)
  09-08 23:12:28.799: W/System.err(7222):   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1784)
  09-08 23:12:28.799: W/System.err(7222):   at android.app.ActivityThread.access$1500(ActivityThread.java:123)
  09-08 23:12:28.799: W/System.err(7222):   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:939)
  09-08 23:12:28.799: W/System.err(7222):   at android.os.Handler.dispatchMessage(Handler.java:99)
  09-08 23:12:28.799: W/System.err(7222):   at android.os.Looper.loop(Looper.java:130)
  09-08 23:12:28.799: W/System.err(7222):   at android.app.ActivityThread.main(ActivityThread.java:3835)
  09-08 23:12:28.799: W/System.err(7222):   at java.lang.reflect.Method.invokeNative(Native Method)
  09-08 23:12:28.799: W/System.err(7222):   at java.lang.reflect.Method.invoke(Method.java:507)
  09-08 23:12:28.799: W/System.err(7222):   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:864)
 09-08 23:12:28.799: W/System.err(7222):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:622)
 09-08 23:12:28.799: W/System.err(7222):    at dalvik.system.NativeStart.main(Native Method)
09-08 23:12:28.799:W/System.err(7222):java.lang.NullPointerException
09-08 23:12:28.799:W/System.err(7222):位于android.content.ContextWrapper.getContentResolver(ContextWrapper.java:90)
09-08 23:12:28.799:W/System.err(7222):位于com.eheuristics.android.diegodeals.googleplacesandmaps.GPSTracker.turnGPSOn(GPSTracker.java:110)
09-08 23:12:28.799:W/System.err(7222):位于com.eheuristics.android.diegodeals.googleplacesandmaps.GPSTracker.getLocation(GPSTracker.java:63)
09-08 23:12:28.799:W/System.err(7222):在com.eheuristics.android.diegodeals.googleplacesandmaps.GPSTracker.(GPSTracker.java:45)
09-08 23:12:28.799:W/System.err(7222):位于com.eheuristics.android.diegodeals.NearestLocation.onCreate(NearestLocation.java:79)
09-08 23:12:28.799:W/System.err(7222):位于android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
09-08 23:12:28.799:W/System.err(7222):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1722)
09-08 23:12:28.799:W/System.err(7222):位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1784)
09-08 23:12:28.799:W/System.err(7222):在android.app.ActivityThread.access$1500(ActivityThread.java:123)
09-08 23:12:28.799:W/System.err(7222):位于android.app.ActivityThread$H.handleMessage(ActivityThread.java:939)
09-08 23:12:28.799:W/System.err(7222):位于android.os.Handler.dispatchMessage(Handler.java:99)
09-08 23:12:28.799:W/System.err(7222):位于android.os.Looper.loop(Looper.java:130)
09-08 23:12:28.799:W/System.err(7222):位于android.app.ActivityThread.main(ActivityThread.java:3835)
09-08 23:12:28.799:W/System.err(7222):位于java.lang.reflect.Method.invokenactive(本机方法)
09-08 23:12:28.799:W/System.err(7222):位于java.lang.reflect.Method.invoke(Method.java:507)
09-08 23:12:28.799:W/System.err(7222):位于com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:864)
09-08 23:12:28.799:W/System.err(7222):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:622)
09-08 23:12:28.799:W/System.err(7222):在dalvik.System.NativeStart.main(本机方法)
我在

中的第一行出错,如果
设置,则将返回null。安全。允许的位置
不在其数据库中

在您的上下文中,如果
提供商
包含
“gps”
,则gps已启用。因此,如果所有内容都被禁用,那么
提供程序
可能是
空的

尝试添加:

if(provider == null || !provider.contains("gps")) {

由于您可能使用LooStices管理器来检索GPS坐标,请考虑使用该方法。这里有一个例子:


是的,我可以检查它,这不是一个问题,但如何启动GPS这是主要问题我无法打开它如果我尝试使用上述代码我得到空指针例外出于安全原因,应用程序无法打开或关闭GPS设置,但您可以打开设置菜单,以便用户可以更改此设置。
final LocationManager manager = (LocationManager) getSystemService( Context.LOCATION_SERVICE );
if (!manager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
    // Open Location Permissions Settings
    startActivityForResult(new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS), GPS_REQUEST_CODE);

    // Override onActivityResult() to verify that the user has turned the GPS on.
}