声明<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />就足够了吗?或者我还需要声明<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />吗?Javadoc忽略了这一重要信息。
发布于 2012-08-14 05:17:58
READ_EXTERNAL_STORAGE仅在Jelly Bean (16级)中存在。根据the docs的说法,从Jelly Bean开始的所有应用程序都有这个权限,即使没有声明它:
提供对外部存储的受保护的读取访问权限。在Android4.1中,默认情况下所有应用程序仍然拥有读访问权限。这将在将来的版本中进行更改,以要求应用程序显式请求使用此权限的读访问权限。如果您的应用程序已经请求了写访问权限,那么它也将自动获得读访问权限。有了一个新的开发者选项来开启读访问限制,开发者可以根据Android未来的行为来测试他们的应用程序。
所以,你应该声明它是为了将来的兼容性,但这可能不是问题的根源,除非你使用的是Jelly Bean手机,并设置了开发人员选项“保护USB存储”选项。
发布于 2013-03-07 19:58:47
最好是显式地声明这两个权限,但是只声明APK会在构建时自动将android.permission.READ_EXTERNAL_STORAGE添加到android.permission.WRITE_EXTERNAL_STORAGE中。
你可以在APK上使用命令aapt dump badging来查看安卓是否考虑使用写权限,这意味着你也想要读权限。
下面是我的一个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'https://stackoverflow.com/questions/11942400
复制相似问题