Android:如何禁止用户更改Marshmallow的权限

时间:2016-12-18 16:52:34

标签: android

我的应用在清单文件中定义了几个(危险的)权限,效果很好。但是(流氓/坏人)用户可以打开设置 - >应用 - > appname - >禁用权限的权限,它会启动应用程序(任何时候用户手动更改设置权限,它会调用App.create()并使用已禁用的权限重新初始化应用程序)

如何阻止用户手动更改权限?

Gradle文件如下所示(我在6.0.1上运行应用程序,但是我不想将目标版本更改为23;因此我无法合并来自https://developer.android.com/guide/topics/security/permissions.html#perm-groups的危险权限)

android {
compileSdkVersion 21
buildToolsVersion "21.1.2"
defaultConfig {
    applicationId "com.XX.main"
    minSdkVersion 19
    targetSdkVersion 21
    versionCode 21

}

下图显示了权限已启用且也未显示为灰色(因此用户可以禁用它们) settings -> apps -> appname -> permissions

1 个答案:

答案 0 :(得分:5)

  

如何阻止用户手动更改权限?

这是不可能的。它是用户的设备,而不是您的设备,在Android 6.0+上,用户可以撤消运行时权限。

  

用户手动更改设置权限时,会调用App.create()并使用已禁用的权限重新初始化应用

您的流程将在许多情况下终止。禁用运行时权限的用户只是其中之一。您的应用程序需要能够处理其终止进程,无论出于何种原因终止(例如,当您的应用程序在后台时释放系统RAM)。

  

但是我不想将目标版本更改为23;因此我无法合并危险权限

您仍然可以use PermissionChecker查看用户是否撤销了该权限,以便您可以执行其他操作并避免崩溃。