如何在 Android 5.0 及更高版本中请求写入可移动 SD 卡的权限
How to request permission to write to removable sd card in Android 5.0 and above
一个简单的问题。默认情况下 android 不允许第 3 方应用写入可移动 SD 卡。
但在 Android 5.0 中我可以请求写入可移动 sdcard 的权限并写入该目录中的任何文件。
那么该怎么做呢?我需要一个输出流来写入文件。
I can request for permission to write to external sdcard and write any file in that directory.
不是真的。
在 Android 4.4+ 上,您可以使用 getExternalFilesDirs()
、getExternalCacheDirs()
和 getExternalMediaDirs()
。如果那些 return 2+ 个项目,第二个和后续项目将位于可移动存储上。
在 Android 5.0+ 上,您可以使用 ACTION_OPEN_DOCUMENT_TREE
,要求用户授予您访问文档树的权限。 可能 是可移动存储的根……或者用户想要使用的任何其他东西。这为您提供了 Uri
支持,您可以将其与 DocumentFile
和存储访问框架的其余部分一起使用。它 不会 为您提供文件系统访问权限(例如,通过 File
)。
在 Android 7.0+ 上,您可以使用 StorageManager
和 StorageVolume
请求访问可移动存储卷。不过,您再次获得 Uri
以与 DocumentFile
、ContentResolver
等一起使用——您无法访问文件系统。
一个简单的问题。默认情况下 android 不允许第 3 方应用写入可移动 SD 卡。
但在 Android 5.0 中我可以请求写入可移动 sdcard 的权限并写入该目录中的任何文件。
那么该怎么做呢?我需要一个输出流来写入文件。
I can request for permission to write to external sdcard and write any file in that directory.
不是真的。
在 Android 4.4+ 上,您可以使用 getExternalFilesDirs()
、getExternalCacheDirs()
和 getExternalMediaDirs()
。如果那些 return 2+ 个项目,第二个和后续项目将位于可移动存储上。
在 Android 5.0+ 上,您可以使用 ACTION_OPEN_DOCUMENT_TREE
,要求用户授予您访问文档树的权限。 可能 是可移动存储的根……或者用户想要使用的任何其他东西。这为您提供了 Uri
支持,您可以将其与 DocumentFile
和存储访问框架的其余部分一起使用。它 不会 为您提供文件系统访问权限(例如,通过 File
)。
在 Android 7.0+ 上,您可以使用 StorageManager
和 StorageVolume
请求访问可移动存储卷。不过,您再次获得 Uri
以与 DocumentFile
、ContentResolver
等一起使用——您无法访问文件系统。