1

今天我在 Android M (6.0) 上测试我的一个应用程序。我了解此版本中的权限授予已更改,我需要进行一些更改以使我的应用程序与 Android 6.0 兼容(这里是详细信息)。

据我了解,例如,如果我想授予写入 sdcard(永恒存储)的访问权限,这是一个危险的权限,我必须要求用户授予访问权限,然后处理用户决定(授予/拒绝),否则我的请求总是得到总是被拒绝。

我不知道我是否正确,但我想知道它是否以某种方式反对向后兼容性?我的意思是在旧版本中运行的每个应用程序都需要更改才能在 6.0 版中运行?如果不再支持特殊的应用程序,那么android 6.0是我们应该说再见的地方吗?

在这种新环境下,我需要更改我的旧应用程序以使它们在 Marshmallow 中运行(如果它们需要危险的权限)?

4

2 回答 2

1

似乎保持了向后兼容性。从您链接的页面

  • 如果设备运行 Android 5.1 或更低版本,或者您的应用的目标 SDK 为 22 或更低版本: 如果您在清单中列出危险权限,则用户必须在安装应用时授予该权限;如果他们不授予权限,则系统根本不会安装该应用程序。
  • 如果设备运行 Android 6.0 或更高版本,并且您的应用的目标 SDK 为 23 或更高版本:应用必须在清单中列出权限,并且必须在应用运行时请求它需要的每个危险权限。用户可以授予或拒绝每个权限,即使用户拒绝权限请求,应用程序也可以继续以有限的功能运行。

因此,针对 SDK 22 或更低版本的旧应用程序将看到在安装时授予权限的旧行为。只有针对 SDK 23 或更高版本的新应用程序才需要立即担心这一点。

该页面确实列出了您应该注意的一个警告:

注意:从 Android 6.0(API 级别 23)开始,用户可以随时撤消任何应用的权限,即使该应用的目标 API 级别较低。您应该测试您的应用程序以验证它在缺少所需权限时是否正常运行,无论您的应用程序目标是什么 API 级别。

这对您的应用程序(即使是旧版应用程序)意味着它们需要能够在缺少您通常期望它们拥有的特权时幸存下来。相应地测试和更新。

对于您已安装的任何第三方遗留应用程序而言,这意味着在撤销其权限时必须谨慎行事,因为假设其特权操作将成功的应用程序可能会在这些权限被意外撤销时出现问题。显然,第三方开发人员应该对此进行测试和解决,但这可能并不总是发生。

于 2016-06-16T20:06:14.863 回答
0

来自 Android 文档:

在所有版本的 Android 上,您的应用都需要在其应用清单中声明其所需的正常权限和危险权限,如声明权限中所述。但是,根据系统版本和应用的目标 SDK 级别,该声明的效果会有所不同:

  • 如果设备运行 Android 5.1 或更低版本,或者您的应用的目标 SDK 为 22 或更低版本: 如果您在清单中列出危险权限,则用户必须在安装应用时授予该权限;如果他们不授予权限,则系统根本不会安装该应用程序。
  • 如果设备运行 Android 6.0 或更高版本,并且您的应用的目标 SDK 为 23 或更高版本:应用必须在清单中列出权限,并且必须在应用运行时请求它需要的每个危险权限。用户可以授予或拒绝每个权限,即使用户拒绝权限请求,应用程序也可以继续以有限的功能运行。

如果要在其中运行应用程序,Android 6.0则必须编写逻辑以在运行时请求权限。
但它不会改变您的应用在旧版本中的行为,对于这些情况,将在安装时请求权限。

于 2016-06-16T20:06:53.947 回答