android - 如何在 Android 11 中实现 New Storage API?

标签 android mediastore android-11 storage-access-framework scoped-storage

场景
我有两个应用程序,一个是Tracker App,它记录来电和去电并压缩这些文件,并将文件路径通过Inter-Process Communication发送到主应用程序。它将这些文件上传到服务器。
现在我将这两个应用程序升级到 Android 11。在 Tracker 应用程序中,我正在使用 MediaStore.Files API保存文件并尝试使用主应用程序中的文件路径读取这些文件。读取文件时File.canRead()返回 false在主应用程序中。甚至我试过MediaStore API要读取这些文件,它会返回空 Cursor .
在这里我有几个问题。

  • 我可以在 Android 11 上读取其他应用程序创建的文件吗?我在某处读到您无法在 Android 11 中访问其他应用程序文件。
  • 我的应用程序是否符合 MANAGE_EXTERNAL_STORAGE 的条件?访问存储中所有文件的权限?
  • 处理这种情况的最佳方法是什么?
  • ``` 存储访问框架`` 可以帮我处理这种情况吗?

  • 我将文件保存在公共(public)目录 Documents/AppData/Audio .请给我有关此的工作链接。任何帮助将不胜感激。谢谢

    最佳答案

    与 Android 11 MediaStore API 一样,仅返回媒体文件。
    所以,我会回答你的相关问题。

    Can I read files that are created by the Others app on Android 11? I read somewhere that you can't access others apps files in Android 11.


    不!您无法访问由存储在该特定应用程序的个人存储中的其他应用程序创建的文件。

    Is my app eligible for MANAGE_EXTERNAL_STORAGE permission to access all files in storage?


    据我了解,您的应用程序不需要外部存储来存储数据,它也可以在私有(private)存储中完成,您可以在其中读取或写入数据。如果您的应用程序仍然有资格获得此权限,那么您现在仍然无法使用它。官方网站建议这样做,而不是要求此权限使目标 API 29 并在 list 中使用 android:requestLegacyExternalStorage="true"。
    click here to read about it.

    What will be the best way to handle this scenario?


    您可以使用特定于应用程序的文件夹来存储您正在创建的存档,而不是使用外部音频路径。

    Can ``` Storage Access Framework `` help me to handle this scenario?


    我不太了解 IPC 如何在两个应用程序之间工作,所以我不能确切地说使用存储框架会更好。

    关于android - 如何在 Android 11 中实现 New Storage API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67645587/

    相关文章:

    youtube - 安卓 11 YouTubeAndroidPlayerApi 不工作

    java - token "boolean"出现语法错误,表达式无效

    android - 当用户未插入任何值时,我的应用程序崩溃了 android studio

    android - 我应该在 AsyncTaskLoader 内对我自己的 SQLite DB 执行插入、删除、更新吗

    java - MediaStore.Images.Thumbnails.getThumbnail 返回错误的缩略图而不是 NULL

    android - queryIntentActivities 在 android 11 中返回空列表

    android - PoweSavingMode 与 App 优化

    java - 在 Android 10 上保存视频并将其插入图库

    java - 有没有办法使用 where 条件将 Mediastore 光标设置到 Rowset 中的特定行?

    Android 11 不会在外部存储上创建应用目录