申报就够了<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
还是我也必须申报<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
?Javadocs 省略了这一重要信息。
问问题
30583 次
2 回答
19
最好是显式地声明两个权限,但仅声明android.permission.WRITE_EXTERNAL_STORAGE
会在构建时自动添加android.permission.READ_EXTERNAL_STORAGE
到您的 APK。
您可以在 APK 上使用该命令aapt dump badging
来查看 Android 认为使用写入权限意味着您也需要读取权限。
这是我的一个 APK 的 aapt 的一些输出,我只 WRITE_EXTERNAL_STORAGE
在清单中声明:
uses-permission:'android.permission.WRITE_EXTERNAL_STORAGE'
uses-permission:'android.permission.READ_EXTERNAL_STORAGE'
uses-implied-permission:'android.permission.READ_EXTERNAL_STORAGE',
'requested WRITE_EXTERNAL_STORAGE'
于 2013-03-07T11:58:46.743 回答
17
READ_EXTERNAL_STORAGE
仅存在于 Jelly Bean(16 级)。根据文档,Jelly Bean 的所有应用程序都具有该权限,即使没有声明它:
提供对外部存储的受保护读取访问。默认情况下,在 Android 4.1 中,所有应用程序仍然具有读取权限。这将在未来的版本中进行更改,以要求应用程序使用此权限明确请求读取访问权限。如果您的应用程序已经请求写入权限,它也会自动获得读取权限。有一个新的开发人员选项可以打开读取访问限制,以便开发人员根据 Android 未来的行为来测试他们的应用程序。
因此,您应该声明它以供将来兼容,但这可能不是问题的根源,除非您使用的是果冻豆手机并设置开发人员选项“保护 USB 存储”选项。
于 2012-08-13T21:17:58.497 回答