Android M 权限 install/update 行为

Android M permission install/update behavior

Android Marshmallow 有一个新的权限模型。实施新模型对我受影响的应用程序权限来说并不是什么大问题。但是关于安装和更新行为存在一些问题。我确定了一些对我很重要的场景。我知道官方文档 (https://developer.android.com/preview/features/runtime-permissions.html),有些事情可能很清楚,但我想确定一下。

  1. 目标 SDK 最大的应用程序。 22 安装在 M 设备上并授予所有权限 -> 使用新权限模型更新应用程序

  2. 目标 SDK 最大的应用程序。 22 安装在 M 设备上并且所有权限都被拒绝 -> 使用新权限模型更新应用程序

  3. 在 M 设备上使用目标 SDK 23 安装应用程序

  4. 目标 SDK 22 或 23 且已授予所有权限的应用程序 -> 添加已授予组权限的新权限 (read_storage) 和另一个组的新权限 (read_contacts)

  5. 目标 SDK 23 和 read_contacts 已授予的应用 -> 从联系人组添加另一个权限 (write_contacts)

使用开发者控制台和 Beta 测试 Android 我测试了我自己的场景。这是我的结果。他们中的大多数都符合我的期望,但我也想总结一下。也许这可以帮助你们中的一个有同样的问题,只是想知道它是否像预期的那样表现。并没有声称这是完整的。

  1. 目标 SDK 最大的应用程序。 22 安装在 M 设备上并授予所有权限 -> 使用新权限模型更新应用程序

    • 使用目标 SDK 23 权限的应用更新后仍然被授予
  2. 目标 SDK 最大的应用程序。 22 安装在 M 设备上,所有权限都被拒绝 -> 使用新权限模型更新应用程序

    • 使用目标 SDK 23 权限的应用更新后仍然被拒绝
  3. 在 M 设备上使用目标 SDK 23 安装应用程序

    • 无需任何用户交互或通知即可安装
    • 安装后所有权限都被拒绝,需要授予 -> 权限对话框显示为已实现
  4. 目标 SDK 22 或 23 且已授予所有权限的应用程序 -> 添加已授予组权限的新权限 (read_storage) 和另一个组的新权限 (read_contacts)

    • 拥有 write_storage 会自动授予 read_storage(开发者控制台已将其添加到 APK 的权限信息中)
    • read_contacts 仅请求 read_contacts(开发者控制台仅显示 APK 的此特定权限)
    • 以前授予的权限可以,read_contacts需要授予
  5. 目标 SDK 23 和 read_contacts 已授予的应用 -> 从联系人组添加另一个权限 (write_contacts)

    • 无需特殊处理,无需任何进一步的用户交互即可使用权限
    • 在旧设备上(目标最大 22)用户不会收到有关新权限的通知,因为他已经授予组权限
    • 在开发者控制台中添加 write_contacts 时权限可见但未标记为新权限(在 APK 的权限信息中)