我希望开启和关闭位置提供商,即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中调用它
答案 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);
}
}