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

标签 java android file permissions

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

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

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

最佳答案

如果不想权限,Android4.4及以上有办法。让用户将数据导入程序目录,另见:

Starting in Android 4.4, the owner, group and modes of files on external storage devices are now synthesized based on directory structure. This enables apps to manage their package-specific directories on external storage without requiring they hold the broad WRITE_EXTERNAL_STORAGE permission. For example, the app with package name com.example.foo can now freely access Android/data/com.example.foo/ on external storage devices with no permissions. These synthesized permissions are accomplished by wrapping raw storage devices in a FUSE daemon.

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

关于java - 如何在不声明权限的情况下读取内部存储中的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41990589/

相关文章:

java ArrayBlockingQueue同时put和take会导致死锁吗?

java - 从 Android 到服务器、PC 和 Android 设备的实时视频流

php - 如何通过 JavaScript 连接到我的 PHP 程序所在的服务器?

java - 是否可以将对象存储到 Java 中的属性文件?

java - nio.file 中默认的 StandardOpenOptions 是什么?

java - 如何对字符串进行排序,使带有额外信息的值首先出现?

Java序列化ArrayList

javascript - Worklight - 打开 native 应用程序

java - 有没有办法在设备内存 (RAM) 上最多存储 ~1GB?

Java:文件类型为 `url.openStream()`