【问题标题】:Confusion about android:installLocation permissions关于 android:installLocation 权限的困惑
【发布时间】:2015-08-30 06:31:16
【问题描述】:

只是查看我的应用程序的权限,我想知道在使用 android:installLocation="auto" 时是否需要在我的清单中添加 android.permission.READ_EXTERNAL_STORAGE

我查看了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 属性的权限,因为这意味着我的应用程序将从外部存储中读取,但正如我之前所说,专门针对应用程序安装的文档位置未提及权限。

我需要许可吗?

【问题讨论】:

    标签: android android-manifest android-permissions


    【解决方案1】:

    您不需要权限。

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

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

    【讨论】:

    • 感谢您快速详细的回复。我会尽快接受,而且我不知道您在上一段中解释的新 Android 6.0 功能。
    • @FarbodSalamat-Zadeh:您可以在the 6.0 preview documentation 中了解有关“可采用”可移动存储的更多信息。现在,它并没有那么有用,因为没有 Nexus 设备提供 micro SD 卡,而且将 USB OTG 拇指驱动器挂在手机或平板电脑上有点尴尬...... :-)
    猜你喜欢
    • 2020-11-21
    • 2014-07-14
    • 2019-05-17
    • 2020-03-06
    • 2016-03-16
    • 2013-07-27
    • 1970-01-01
    • 2012-09-20
    • 1970-01-01
    相关资源
    最近更新 更多