如何在不声明权限的情况下读取内部存储中的文件?

时间:2017-02-01 21:59:38

标签: java android file permissions

我正在编写一个应用程序,允许用户从外部位置(如下载文件夹)导入自己的数据(通过.zip,.png等)。

我的应用正确地从URI获取文件路径,但是我不希望在我的应用中需要WRITE_EXTERNAL_STORAGE权限,我需要这样才能读取用户提供给我的文件。我觉得Android应该允许我的应用程序读取此文件的权限,因为用户选择了它。

有没有办法让Android将此文件复制到我可以阅读的临时位置,这样我就不需要询问用户这个权限了吗?

1 个答案:

答案 0 :(得分:1)

如果您不想获得该权限,那么Android4.4及更高版本就有了一种方法。让用户将数据导入程序目录,另见:

  

从Android 4.4开始,文件的所有者,组和模式   外部存储设备现在基于目录合成   结构体。这使应用程序可以管理其特定于程序包   外部存储上的目录,不需要他们持有广泛的   WRITE_EXTERNAL_STORAGE权限。例如,带包的应用程序   名称com.example.foo现在可以自由访问   Android / data / com.example.foo /在外部存储设备上没有   权限。这些合成的权限是通过   将原始存储设备包装在FUSE守护程序中。

摘自本页 - > https://source.android.com/devices/storage/index.html