在不添加写入权限的情况下,如何将文件保存到Android外部存储?

11

在不添加写入权限到清单文件中,能否将数据写入外部存储?存储访问框架或下载管理器是否支持此功能?


1
您可以使用在Android 4.4及以上版本中提供的“存储访问框架”。详细教程请参见:https://jayrambhia.com/blog/android-fileprovider-ecosystem - Mr-IDE
在我设置赏金后我看到了这个评论,但似乎是一个不错的答案。@Mr-IDE - Shamshirsaz.Navid
3个回答

16

这取决于你想要在哪里写文件以及你所针对的SDK。如果你想要将文件写入应用程序的外部目录(getExternalFilesDir(String)getExternalCacheDir()),并且你的目标SDK版本为19或更高,则不需要权限。如果你想要写入其他区域或者针对的SDK版本是小于19的,则需要该权限。然而,根据我的经验,在某些Lollipop版本中存在一个错误,导致仍需该权限。因此,我通常会在清单文件中添加<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="22"/>


6
也许您需要使用FileProviderFileProviderSupport Library的一部分,适用于所有Android版本,从2.3开始。该API的主要目标是临时将私有文件打开给某些特定应用程序:您保存文件在私有文件夹中,并通过安全的ContentProvider让其他应用程序读取或甚至写入它。当您的活动被销毁时,权限将被撤销更多信息

是的,这是最安全的方法。使用FileProvider的内容URI与另一个应用程序共享文件。使用列出任何愿意接受的应用程序的方案。您的用户从列表中选择一个应用程序,例如内部文件管理器。幸运的是,该应用程序将能够将文件另存为另一个位置。 - Humpity

3

简短回答:不行。如果有一种简单的方法可以绕过所需权限,那么这些权限将变得毫无意义。请参见下面的文档:

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

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

为什么您想要执行未获得权限的操作呢?


7
我不能代表其他投票者发言,但并不是说要写入外部存储器就必须始终需要明确的写入权限,情况要复杂得多。此外,原帖并没有询问如何绕过所需权限,而是要求在不添加写入权限于清单文件的情况下,将数据写入外部存储器的方法。这是一个合理的问题,实际上如果您写入正确的目录,则可能做到这一点。 - LarsH

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接