【问题标题】:ALL FILE ACCESS permission for android app安卓应用的所有文件访问权限
【发布时间】:2021-09-01 07:21:40
【问题描述】:

我正在将我的项目的目标 sdk 更改为 30,但很少担心在代码中使用 ALL FILE ACCESS 权限。根据谷歌的说法,未经任何适当使用而使用此权限的应用将从 Play 商店中删除。但我的应用程序需要访问外部 sd 卡存储。我们正在该位置创建文件夹并将所有与应用程序相关的文件放在那里。我们没有任何应用程序服务器,因此我们甚至无法实现范围存储,因为使用范围存储,应用程序内部存储中的所有数据都将被删除。一旦这些数据被删除,它可以从应用程序服务器重新同步并恢复所有数据,但我们不能这样做,我们的应用程序处于离线状态,所以我们正在使用这个外部存储。客户支持团队将在那里管理此存储并将文件手动推送到此位置。我们所有的设备配置都将保存在那里。因此,即使应用程序被删除,我们也不希望它被删除。那么我应该在这里做什么?我应该继续在 android 代码中实现 ALL FILE ACCESS 权限吗?应用会被移除吗?

【问题讨论】:

  • 您的应用创建的文件对其他应用有意义吗?如果没有,将它们与卸载一起删除是更好的做法。如果您确实需要,请在您的应用程序中使用适当的备份/恢复功能来导出/导入数据。话虽如此,您仍然可以使用shared storage
  • access to the external sd card storage. We are creating folder in that location 两次不清楚。你的意思是可移动的micro sd卡吗?具体是哪个位置?
  • with scoped storage all the data in the apps internal storage will be deleted 不,您可以在清单文件中设置一个标志,这样做会在卸载时询问用户是否应保留私人数据。
  • The customer support team will be there who will manage this storage and push files to this location manually. 我不明白。我认为该应用程序会创建它的文件。他们怎么能等于支持有什么?
  • 我们的应用生成的应用文件对其他应用没有意义。但是这些文件包含一些硬件的配置文件,如果我们选择范围存储,卸载应用程序将删除所有这些文件,但我们不能删除这些文件并丢失我们所有的配置数据。

标签: java android kotlin


【解决方案1】:

根据新指南,我们不需要版本 10 及更高版本的权限。请检查 android 中的作用域存储 - https://developer.android.com/about/versions/11/privacy/storage

【讨论】:

    【解决方案2】:

    至少有五个场景可以得到你想要的。

    1. android:hasFragileUserData="true" 添加到清单文件中的应用程序标记。卸载时将要求用户保留数据。用户可以破坏它,是的。

    2. 在公共文档目录中创建一个文件夹,并使用经典文件方式将您的文件写入那里。重新安装后,让用户选择带有ACTION_OPEN_DOCUMENT_TREE 的文件夹。您可以使用更多的Storage Access Framework 方法完全访问这些文件。

    3. 同 2. 但现在使用 Storage Access Framework 创建文件夹和文件。

    4. 同 2. 但现在使用 MediaStore 创建文件夹和文件。

    5. 嗯.. 目前不会想到.. ;-)

    【讨论】:

    • 存储访问框架在这里对我有什么用处?我的要求是,我们的应用程序在共享存储中创建了文件夹,并且当我们连接到笔记本电脑/电脑以将文件推送到其中时,每个人都应该可以访问该文件夹。
    • 我解释了如何使用 SAF 来解决您的问题。很遗憾你提出了一个有用的问题。我不明白。
    • 我正在使用 mediastore api 创建文件夹和文件。现在我可以使用 mediastore 在 Download 目录中成功创建名为 SUS 的文件夹。所以所有文件现在都保存在 Download/SUS/ 路径中。但我们的要求是,我们从 pc 复制同一 SUS 目录中的一些文件。这个复制的文件没有在媒体商店的任何地方跟踪,所以我无法在我的回收站视图中列出它。应用程序创建的其余文件显示在列表中。如何同时列出复制的文件?
    • 我已经告诉过:让用户选择带有 ACTION_OPEN_DOCUMENT_TREE 的 SUS 目录。之后,您可以使用 DocumentFile 或 DocumentsContract 列出其中的文件。
    • 是的,但如果用户选择其他文件夹,那么它将列出其他文件夹文件。每次用户都必须选择目录。这会让用户感到困惑。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多