【问题标题】:Android saving file to external storage without adding write permission?Android将文件保存到外部存储而不添加写权限?
【发布时间】:2022-02-26 01:38:57
【问题描述】:

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

【问题讨论】:

  • 您可以使用 Android 4.4 及更高版本上可用的“存储访问框架”。详细教程在这里:jayrambhia.com/blog/android-fileprovider-ecosystem
  • 我在获得赏金后看到了这条评论,但这似乎是一个不错的答案。 @Mr-IDE

标签: android android-download-manager


【解决方案1】:

这取决于您要在哪里编写文件以及您的目标是什么 SDK。如果您想在应用程序的外部目录(getExternalFilesDir(String) 和getExternalCacheDir())中写入文件并且您的目标是 SDK19+,则不需要权限。如果你想在其他领域写或者针对SDK<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="22"/> 放在我的清单中。

【讨论】:

    【解决方案2】:

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

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

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

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

    【讨论】:

    • 我不能代表其他反对者,但要写入外部存储,您总是需要明确的权限才能写入外部存储。规则要复杂得多。此外,OP 没有要求绕过所需权限的方法。他要求一种无需在清单中添加写入权限即可将数据写入外部存储的方法。这是一个合理的问题,事实上,如果您写入正确的目录,这是可能的。
    【解决方案3】:

    也许FileProvider 就是您要找的。​​p>

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

    More info

    【讨论】:

    • 是的,这是最安全的方式。使用 FileProvider 的内容 URI 与另一个应用程序共享文件。使用列出任何应用程序愿意采用的方案。您的用户从列表中选择一个应用程序,例如内部文件管理器。运气好的话,该应用程序会将文件另存为另一个位置。
    猜你喜欢
    • 2011-12-14
    • 1970-01-01
    • 2017-08-17
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 2021-04-14
    相关资源
    最近更新 更多