我一定要同时声明WRITE_EXTERNAL_STORAGE和READ_EXTERNAL_STORA

2019-06-27 00:36发布

是否足以声明<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />或者我也要申报<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 的Javadoc忽略这个重要的信息。

Answer 1:

READ_EXTERNAL_STORAGE只存在为果冻豆(等级16)。 根据该文档 ,所有的应用程序为果冻豆的取得许可,即使没有它声明:

提供保护的读访问外部存储。 在搭载Android 4.1默认情况下,所有的应用程序都还在读访问。 这将在以后的版本中改为要求应用程序中使用此权限明确要求读取权限。 如果您的应用程序已经请求写入访问时,将自动获得读访问也是如此。 有一个新的开发选项打开读访问限制,为开发者测试其对机器人如何在未来行为的应用程序。

所以,你应该把它声明为未来的兼容性,但是这可能不是你的问题的根源,除非您使用的是果冻豆电话,并设置选项开发商“保护USB存储设备”选项。



Answer 2:

这是最好要明确,并宣布双方的权限,但在宣布仅android.permission.WRITE_EXTERNAL_STORAGE会自动添加android.permission.READ_EXTERNAL_STORAGE在构建时您将APK。

您可以使用命令aapt dump badging上的APK看到Android的考虑写权限的使用暗示你也想读取权限。

下面是一些AAPT输出为我,我声明的APK 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'


文章来源: Do I have to declare both WRITE_EXTERNAL_STORAGE and READ_EXTERNAL_STORAGE?