android - 如何在Android 11 Flutter中读取另一个应用程序的数据?

标签 android flutter

我完成了我的一个应用程序并开始测试。但我发现我的应用程序无法在 Android 11 中运行。我想获取另一个应用程序的文件夹的文件列表并读取其中的项目。但它返回一个空列表,尽管该文件夹中有文件。

AndroidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.status_saver">
   <uses-permission android:name="android.permission.INTERNET"/>
   <uses-permission 
android:name="android.permission.READ_EXTERNAL_STORAGE" />
   <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
    android:maxSdkVersion="28" />
   <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
   <application
        android:requestLegacyExternalStorage="true"
        android:label="status_saver"
        android:icon="@mipmap/ic_launcher">

这就是我读取文件夹中文件的方式

var files = Directory(           "storage/emulated/0/Android/media/com.whatsapp/WhatsApp/Media/.Statuses")
        .listSync(recursive: true);
    print(files);

这就是我请求许可的方式。

void _grantPermission() async {
    var status = await Permission.storage.status;
    if (status.isGranted) {
      _getData();
    } else {
      await Permission.storage.request();
      status = await Permission.storage.status;
      _getData();
    }
    setState(() {
      mainStatus = status.isGranted;
    });
  }

正如我所想,发生这种情况是因为 Android 11 的范围存储。

最佳答案

我们需要通过permission_handler请求manage_external_storage权限。

将此权限添加到AndroidManifest.xml

<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />

请求权限如下所示

await Permission.manageExternalStorage.request();

然后我们就可以在 Android 11 中读取任何文件并写入任何位置。

关于android - 如何在Android 11 Flutter中读取另一个应用程序的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69062484/

相关文章:

flutter - tab keypress/TextInputAction.next 导航到下一个输入表单

flutter - 如何获取Flutter App中使用的软件包版本

android - 在三星 s4 设备上的 Google Glass Launcher 上测试秒表应用程序

Android - 在 ProgressDialog 完成后立即显示 AlertDialog/Toast

android - 如何在不改变 ImageButton/ImageView 的情况下显示图标?

Flutter 自定义谷歌地图标记信息窗口

ios - 不受支持的架构,.app/Frameworks/...的可执行文件包含 Flutter ios 上不受支持的架构 [x86_64]

android - 有什么方法可以让 flutter 本地通知在android中持续播放声音,除非通知被点击?

android - 从 Android 连接到 HTTPS - REST 和 SOAP 网络服务

android - Xamarin.Android 在 Android 7 上发生错误