关于android:installLocation权限的困惑

时间:2015-08-29 22:28:10

标签: android android-manifest android-permissions

只是浏览我的应用的权限,我想知道在使用android.permission.READ_EXTERNAL_STORAGE时我的清单中是否需要android:installLocation="auto"

我查看了developer docs没有提及权限的内容,但是other documentation表示我确实需要获得从外部存储中读取的权限:

  

要在外部存储上读取或写入文件,您的应用必须获得READ_EXTERNAL_STORAGEWRITE_EXTERNAL_STORAGE系统权限。

此外,documentation about the permission州:

  

允许应用程序从外部存储中读取。

     

任何声明WRITE_EXTERNAL_STORAGE权限的应用都会被隐式授予此权限。

     

此权限从API级别19开始强制执行。在API级别19之前,不会强制执行此权限,并且所有应用程序仍有权从外部存储读取。您可以通过在运行Android 4.1或更高版本的设备上的“设置”应用中的“开发者”选项下启用“保护USB存储”来强制执行权限来测试您的应用。

     

同样从API级别19开始,读取/写入getExternalFilesDir(String)getExternalCacheDir()返回的特定于应用程序的目录中的文件不需要此权限。

因此我不确定我是否确实需要Manifest文件中installLocation属性的权限,因为这意味着我的应用程序将从外部存储中读取,但正如我之前所说,文档特别是应用安装位置未提及权限。

我需要获得许可吗?

1 个答案:

答案 0 :(得分:3)

您不需要许可。

在Android 6.0之前,android:installLocation不会影响应用的内部存储空间(例如getFilesDir())。它只会影响APK的位置。因此,许可不适用。

Android 6.0现在允许用户将可移动存储(例如,微型SD卡)专用于安装应用程序的位置。在这种情况下,您的内部存储恰好位于可移动存储上的加密分区上。但是,这仍然不是外部存储,因此权限不适用。