mew*_*ind 1 permissions android gallery dart flutter
Android 33及以上版本图库打不开且无请求权限。
当 Android 13 允许时 Permission.storage.request() 返回 permanentDenied
如果您的应用面向 Android 13 或更高版本,并且需要访问其他应用创建的媒体文件,则必须请求以下一项或多项精细媒体权限,而不是 READ_EXTERNAL_STORAGE权限:
https://developer.android.com/about/versions/13/behavior-changes-13#capsular-media-permissions
Android 清单:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Run Code Online (Sandbox Code Playgroud)
此权限仅限照片和视频
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES"/>
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO"/>
Run Code Online (Sandbox Code Playgroud)
pubspec.yaml:
device_info_plus: ^8.0.0
Run Code Online (Sandbox Code Playgroud)
清理并获取依赖项以避免应用程序崩溃
flutter clean && flutter pub get
Run Code Online (Sandbox Code Playgroud)
无论您的代码在哪里:
bool isStoragePermission = true;
bool isVideosPermission = true;
bool isPhotosPermission = true;
// Only check for storage < Android 13
DeviceInfoPlugin deviceInfo = DeviceInfoPlugin();
AndroidDeviceInfo androidInfo = await deviceInfo.androidInfo;
if (androidInfo.version.sdkInt >= 33) {
isVideosPermission = await Permission.videos.status.isGranted;
isPhotosPermission = await Permission.photos.status.isGranted;
} else {
isStoragePermission = await Permission.storage.status.isGranted;
}
if (isStoragePermission && isVideosPermission && isPhotosPermission) {
// no worries about crash
} else {
// write your code here
}
Run Code Online (Sandbox Code Playgroud)