Android,当应用程序已启用设备管理员时更改GPS状态 [英] Android, Change GPS status when app is device administrator enabled

查看:134
本文介绍了Android,当应用程序已启用设备管理员时更改GPS状态的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当用户将应用设置为Device administrator时如何设置GPS状态.

How to set GPS status on when the app is set as Device administrator by user.

我正在使用这种方法:

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上得到此错误:

and getting this error at least on API-21:

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

请注意启用的 Device administrator 权限,不要将问题标记为重复

推荐答案

android.location.GPS_ENABLED_CHANGE 意向只能由系统应用广播,因为它是受保护的广播(意味着您的应用应为使用systemsignature签名,或者应该是系统应用).即使您的应用被用户选择为Device Admin应用,也并不意味着它有资格使用系统功能. Device Admin应用将可以访问 DevicePolicyManager 类公开的功能.可以使用Lollipop及更高版本上的 DevicePolicyManger 类来控制某些全局设置和安全设置.

android.location.GPS_ENABLED_CHANGE intent can only be broadcasted by system apps as it is a protected broadcast(means your app should be either signed with systemsignature or it should be a system app). Even if your app is selected as Device Admin app by user, it does not mean it is eligible to use system features. Device Admin app will get access to features that are exposed by DevicePolicyManager class. Some of the global settings and secure settings can be controlled using DevicePolicyManger class on Lollipop and above.

控制安全设置

查看全文

登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆