12

在 Google I/O 上宣布 Android 4.1 JellyBean (API 16) 时,它引入了以下权限:

READ_EXTERNAL_STORAGE

提供对外部存储的受保护读取访问。默认情况下,在 Android 4.1 中,所有应用程序仍然具有读取权限。这将在未来的版本中进行更改,以要求应用程序使用此权限明确请求读取访问权限。如果您的应用程序已经请求写入权限,它也会自动获得读取权限。有一个新的开发人员选项可以打开读取访问限制,以便开发人员根据 Android 未来的行为来测试他们的应用程序。

http://developer.android.com/about/versions/android-4.1.html#Permissions

我有一个应用程序标记 API 16 并需要 WRITE_EXTERNAL_STORAGE 权限。我正准备部署更新,并注意到 READ_EXTERNAL_STORAGE 权限现在在开发人员门户中列为必需权限。对于上周部署的更新,它未在 Google Play 中列为必需的权限。此应用程序未明确请求 READ_EXTERNAL_STORAGE 权限。

已授予此应用程序的 WRITE_EXTERNAL_STORAGE 权限的用户在更新应用程序时是否会被提示授予额外的、隐式的 READ_EXTERNAL_STORAGE 权限?

更新:

我们已经发布了应用程序,JellyBean 设备会自动更新,无需请求 READ_EXTERNAL_STORAGE 权限。在未来的版本中,当我明确声明对 READ_EXTERNAL_STORAGE 的要求时,是否会要求已经授予 WRITE_EXTERNAL_STORAGE 权限的用户授予 READ_EXTERNAL_STORAGE 权限?

4

2 回答 2

3

只要READ_EXTERNAL_STORAGE您有WRITE_EXTERNAL_STORAGE. 以前,操作系统没有强制对外部存储进行只读访问,这种情况正在发生变化,您现在必须请求它。但是,如果您具有写访问权限,您将隐式获得读访问权限。

来自http://developer.android.com/training/basics/data-storage/files.html

如果您的应用需要读取外部存储(但不写入),那么您需要声明 READ_EXTERNAL_STORAGE 权限...

但是,如果您的应用程序使用 WRITE_EXTERNAL_STORAGE 权限,那么它也隐式地拥有读取外部存储的权限。

于 2012-11-11T23:41:28.193 回答
3

从 API 19 (Android 4.4) 开始,您必须明确指定READ_EXTERNAL_STORAGE权限。是的,如果您有WRITE_EXTERNAL_STORAGE权限,您将被隐式授予READ_EXTERNAL_STORAGE,但如果您需要对外部存储的只读访问权限,则必须指定READ_EXTERNAL_STORAGE.

证明链接:http : //developer.android.com/reference/android/Manifest.permission.html#READ_EXTERNAL_STORAGE

于 2013-11-17T21:03:11.430 回答