在我的flutter项目中,我需要设备存储权限才能下载pdf。但在Android 13中,应用程序权限设置中,没有出现存储权限。
我已使用这些权限
..android/app/src/main/AndroidManifest.xml
,如下所示。
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="33" />
<uses-permission
android:name="android.permission.READ_EXTERNAL_STORAGE"
android:maxSdkVersion="33" />
这是获取用户权限的代码
Future<bool> requestStoragePermission(Permission permission) async {
AndroidDeviceInfo deviceInfo = await DeviceInfoPlugin().androidInfo;
if (deviceInfo.version.sdkInt >= 30) {
var status =
await Permission.manageExternalStorage.request().isGranted;
if (!status) {
await openAppSettings();
}
return status;
} else {
if (await permission.isGranted) {
return true;
} else {
var status = await permission.request();
return status.isGranted;
}
}
}
无法显示
Permission is denied
消息和调试结果 No permissions found in manifest for: []22
我相信当您的目标是Android 13或更高版本时,您需要获得媒体文件权限而不是
READ_EXTERNAL_STORAGE
。
当您的应用在 Android 13 设备中运行时,Android 清单中提到的
READ_EXTERNAL_STORAGE
权限将被忽略,如本文所述。相反,从 Android 13 开始引入了三个新权限。
- 读取媒体图像
- 阅读媒体视频
- 读取媒体音频。
如果您使用
READ_EXTERNAL_STORAGE
来访问文件,那么您需要使用适用于 Android 13 及更高版本的这些新权限之一。
我建议您从以下文章中获得更多见解。
WRITE_EXTERNAL_STORAGE
类似。您可以查看以下来自Android的文章,它清楚地解释了与存储相关的权限
希望这能让您对 Android 权限模型有更广泛的了解。