如何在 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+ 上,您可以使用 StorageManagerStorageVolume 请求访问可移动存储卷。不过,您再次获得 Uri 以与 DocumentFileContentResolver 等一起使用——您无法访问文件系统。