我们可以在不在清单中添加写权限的情况下将数据写入外部存储吗?存储访问框架或下载管理器是否对此提供任何支持?
这取决于您要在何处写入文件以及您的目标 SDK。如果您想在应用程序的外部目录(
getExternalFilesDir(String)
和getExternalCacheDir()
)中写入文件并且您的目标是SDK19+,则不需要该权限。如果你想写在其他领域或针对SDK<19, then you need the permission. HOWEVER, based on my experience, there is a bug in some Lollipop versions out there that is causing the permission to still be required. So I usually put <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="22"/>
在我的清单中
也许
FileProvider
就是您正在寻找的。
FileProvider 是
Support Library
的一部分,适用于从 2.3 开始的所有 Android 版本。此 API 的主要目标是temporary open a private file to some targeted apps
:您将文件保存在您的私人文件夹中,并让其他一些应用程序通过安全的ContentProvider
读取甚至写入它。当您的活动被销毁时,权限将被撤销。
简短回答:不。如果有一种简单的方法可以绕过所需的权限,那么它们就毫无意义了。请参阅下面的文档:
https://developer.android.com/training/basics/data-storage/files.html
要写入外部存储,您需要具有写入外部存储的权限。
您为什么要采取尚未获得许可的操作?