【发布时间】:2023-01-25 13:59:19
【问题描述】:
Android 33及以上版本图库打不开,无请求权限。
Permission.storage.request() 在 android 13 上允许时返回 permanentlyDenied
【问题讨论】:
标签: android flutter dart permissions gallery
Android 33及以上版本图库打不开,无请求权限。
Permission.storage.request() 在 android 13 上允许时返回 permanentlyDenied
【问题讨论】:
标签: android flutter dart permissions gallery
如果您的应用以 Android 13 或更高版本为目标,并且需要访问其他应用创建的媒体文件,则您必须请求以下一项或多项精细媒体权限,而不是READ_EXTERNAL_STORAGE允许:
https://developer.android.com/about/versions/13/behavior-changes-13#granular-media-permissions
pubspec.yaml:
device_info_plus: ^8.0.0
清理并获取依赖项以避免崩溃
flutter clean && flutter pub get
安卓清单:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES"/>
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO"/>
无论您的代码在哪里:
bool storagePermission = true;
bool videosPermission = true;
bool photosPermission = true;
// Only check for storage < Android 13
DeviceInfoPlugin deviceInfo = DeviceInfoPlugin();
AndroidDeviceInfo androidInfo = await deviceInfo.androidInfo;
if (androidInfo.version.sdkInt >= 33) {
videos = await Permission.videos.status.isGranted;
photos = await Permission.photos.status.isGranted;
} else {
storage = await Permission.storage.status.isGranted;
}
if (storagePermission && videosPermission && photosPermission) {
// no worries about crash
} else {
// write your code here
}
【讨论】:
granular permissions文档:developer.android.com/about/versions/13/…