无法通过System.secure切换GPS开/关和无线位置设置

时间:2012-06-29 07:38:20

标签: android gps location wireless

我希望开启和关闭位置提供商,即GPS和无线位置

我在清单

中添加了权限

我更改无线位置设置的代码是......

  

Settings.Secure.setLocationProviderEnabled(context.getContentResolver(),provider,true);

每当我运行此代码时,logcat都会显示错误

logcat out put

Caused by: java.lang.SecurityException: Permission denial: writing to secure settings requires android.permission.WRITE_SECURE_SETTINGS

我搜索过这个,很多人说

WRITE_SECURE_SETTINGS权限不适用于不属于固件的应用,因为安全设置旨在防止第三方应用修改

是真的吗 如果是的话,我需要任何其他方式来实现这一目标,

如果没有,那么如何使用它,我的代码中是否有任何错误......

先谢谢

* 注意:* 我在不同的类文件中定义了这个方法,并从SERVICE中调用它

1 个答案:

答案 0 :(得分:0)

Android Settings.Secure.setLocationProviderEnabled不允许直接从任何其他应用程序调用“设置”。请尝试通过这种方式检查或启用gps:

private void isGPSEnable() {
        String str = Settings.Secure.getString(getContentResolver(),
                Settings.Secure.LOCATION_PROVIDERS_ALLOWED);
        Log.v("GPS", str);
        if (str != null) {
            return str.contains("gps");
        }
        else{
            return false;
        }
    }

启用/禁用GPS:

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

     if(!provider.contains("gps")){
         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"));  //SET 3 for gps,3 for bluthooth
         sendBroadcast(poke);
     }
     }
     catch(Exception e)
     {
      Log.d("Location", " exception thrown in enabling GPS "+e);
     }
 }