gpt4 book ai didi

java - Android,当应用程序启用设备管理员时更改 GPS 状态

转载 作者:行者123 更新时间:2023-12-02 04:34:56 26 4
gpt4 key购买 nike

当用户将应用设置为设备管理员时,如何设置 GPS 状态。

我正在使用这个方法:

private void turnGPSOn() {
Intent intent = new Intent("android.location.GPS_ENABLED_CHANGE");
intent.putExtra("enabled", true);
getApplicationContext().sendBroadcast(intent);

String provider = Settings.Secure.getString(getApplicationContext()
.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"));
this.getApplicationContext().sendBroadcast(poke);

}
}

并且至少在 API-21 上收到此错误:

java.lang.SecurityException: Permission Denial: not allowed to send broadcast android.location.GPS_ENABLED_CHANGE from pid=27737, uid=10464

请注意已启用的设备管理员权限,不要将问题标记为重复!

最佳答案

android.location.GPS_ENABLED_CHANGE Intent 只能由系统应用程序广播,因为它是 protected 广播(意味着您的应用程序应该使用 systemsignature 进行签名,或者它应该是系统应用程序)。即使您的应用程序被用户选择为设备管理应用程序,也不意味着它有资格使用系统功能。设备管理应用将有权访问由 DevicePolicyManager 类公开的功能。一些全局设置和安全设置可以使用 Lollipop 及更高版本上的 DevicePolicyManger 类进行控制。

Control Secure Settings

Control Global Settings

关于java - Android,当应用程序启用设备管理员时更改 GPS 状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30950623/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com