1

我想打开和关闭位置提供程序,即 GPS 和无线位置

我在清单中添加了权限

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

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

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

logcat 输出

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

我搜索了这个,很多人说

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

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

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

提前致谢

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

4

1 回答 1

0

AndroidSettings.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);
     }
 }
于 2012-06-29T07:59:16.920 回答