Flutter:OpenFile.open(“file_path”)不工作,给予权限被拒绝:Android 13 上的 android.permission.READ_EXTERNAL_STORAGE

问题描述 投票:0回答:3

试图打开 .pdf 文件,如

ElevatedButton(
    onPressed: () async {
                  await OpenFile.open('/storage/emulated/0/Download/myqr.pdf')
                      .then((value) {
                    log(value.message.toString());
                  });
                },
    child: const Text("Open File"),
)

但不工作。

它给出错误:权限被拒绝:android.permission.READ_EXTERNAL_STORAGE

已在 AndroidMenifest.xml 中添加权限

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

请求权限:

Future askRequiredPermission() async {
    Map<Permission, PermissionStatus> statuses = await [
      Permission.storage,
      Permission.manageExternalStorage,
      Permission.accessMediaLocation
    ].request();
android flutter dart local-storage
3个回答
0
投票

Android 13 需要这些权限:

<uses-permission android:name="android.permission.READ_MEDIA_IMAGES"/>
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO"/>
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO"/>

0
投票

在 Android 13 设备上,您不会请求 READ_EXTERNAL_STORAGE 权限。

您的应用程序创建的文件会自动拥有它。


0
投票

将此方法与权限处理程序一起使用https://pub.dev/packages/permission_handler

var permissionStatus = await Permission.storage.status;

        switch (permissionStatus) {
          case PermissionStatus.denied:
          case PermissionStatus.permanentlyDenied:
            await Permission.storage.request();
            break;
          default:
        }

仅在清单中:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 
© www.soinside.com 2019 - 2024. All rights reserved.