Android将文件保存到外部存储而不添加写入权限?

she*_*kar 2 android android-download-manager

我们可以将数据写入外部存储而无需在清单中添加写入权限吗?存储访问框架或下载管理器是否为此提供了任何支持?

N.T*_*.T. 7

这取决于您要编写文件的位置以及您要定位的SDK.如果您要在应用程序的外部目录(getExternalFilesDir(String)getExternalCacheDir())中编写文件,并且您的目标是SDK19 +,则不需要该权限.如果您想在其他区域写作或定位SDK <19,那么您需要该权限.但是,根据我的经验,一些Lollipop版本中存在一个错误,导致仍然需要许可.所以我通常把<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="22"/>我的清单放进去.


Mah*_*alv 6

也许FileProvider正是您正在寻找的。

FileProvider是 的一部分Support Library,可用于从2.3开始的所有 Android 版本。该 API 的主要目标是temporary open a private file to some targeted apps:将文件保存在您的私人文件夹中,并让其他一些应用程序通过安全的ContentProvider. 当您的活动被破坏时,权限将被撤销。

更多信息


EJo*_*ica 3

简短的回答:不。如果有一种简单的方法可以绕过所需的权限,那么它们就毫无意义了。请参阅下面的文档:

https://developer.android.com/training/basics/data-storage/files.html

要写入外部存储,您需要写入外部存储的权限。

为什么您要采取尚未获得许可的操作?

  • 我不能代表其他反对者发言,但要写入外部存储,您始终需要明确的权限才能写入外部存储,这并非事实。规则要复杂得多。此外,OP 没有要求绕过所需权限的方法。他寻求一种将数据写入外部存储的方法,而无需在清单中添加写入权限。这是一个合理的问题,事实上,如果您写入正确的目录,这是可能的。 (7认同)