Flutter应用程序拒绝Android API级别30及以上的外部存储请求.代码如下:



我的应用程序需要存储权限才能访问和选择设备存储上的pdf文件。对于Android API级别30,我使用并编写的代码如下:

Future<void> askPermission() async {
if (androidInfo != null) {
if (androidInfo!.version.sdkInt! >= 30 && Platform.isAndroid) {
await Permission.manageExternalStorage.request();
} else if (androidInfo!.version.sdkInt! < 30 && Platform.isAndroid) {
await Permission.storage.request();
}
}
}

FilePickerResult? result = await FilePicker.platform.pickFiles(
type: FileType.custom,
allowedExtensions: ['pdf'],
);
In android manifest:
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />

android:requestLegacyExternalStorage="true">

但是App被拒绝了,说:问题:不需要访问设备存储

您确定的功能不需要无限制地访问设备存储。还有其他隐私友好的选项来访问共享存储中的文件,例如使用系统文件选择器,或者,根据用例,您可以遵循此处列出的从其他应用程序接收数据的建议。

请更新您的应用程序,以便该功能使用隐私友好的替代方案,并删除所有文件访问(MANAGE_EXTERNAL_STORAGE)权限…

我应该做些什么改变,使应用程序兼容并访问Android API级别30的存储。用户需要从存储中选择PDF文件,任务完成后,新的PDF文件将保存在存储中。

在Android Manifest中,你必须定义你想要请求权限的sdk

代替

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

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="28"/>

最新更新