[英]Permission Access Image/ Video Android 13 [Flutter]
我正在使用 package images_picker 并将平台更新到 sdk 33,我在我的应用程序和库中也有更新权限,但这不起作用。 扩展抛出弹出窗口“读取 memory 卡访问被拒绝”似乎未授予权限,但我检查应用程序信息具有访问照片和图像的权限。
[✓] Flutter (Channel stable, 2.10.0, on macOS 12.5.1 21G83 darwin-arm, locale en-VN)
[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.0)
[✓] Xcode - develop for iOS and macOS (Xcode 13.4.1)
[✓] Chrome - develop for the web
[✓] Android Studio (version 2021.2)
[✓] VS Code (version 1.71.2)
[✓] Connected device (4 available)
[✓] HTTP Host Availability
• No issues found!
从图库/相机访问图像和视频在 Android 13 中与我们在 iOS 设备中使用 flutter 时相同,
class MyPermissionHandler {
static Future<bool> checkPermission(
BuildContext context, {
String permissionName = 'gallery',
}) async {
if (Platform.isAndroid) {
final androidInfo = await DeviceInfoPlugin().androidInfo;
final sdkInt = androidInfo.version.sdkInt;
if (sdkInt < 33 && permissionName == 'gallery') {
return true;
}
}
FocusScope.of(context).requestFocus(FocusNode());
Map<Permission, PermissionStatus> statues;
switch (permissionName) {
case 'camera':
{
statues = await [Permission.camera].request();
PermissionStatus? statusCamera = statues[Permission.camera];
if (statusCamera == PermissionStatus.granted) {
return true;
} else if (statusCamera == PermissionStatus.permanentlyDenied) {
showPermissionDialog(context, permissionName);
return false;
} else {
return false;
}
}
case 'gallery':
{
statues = await [Permission.photos].request();
PermissionStatus? statusPhotos = statues[Permission.photos];
if (statusPhotos == PermissionStatus.granted) {
return true;
} else if (statusPhotos == PermissionStatus.permanentlyDenied) {
showPermissionDialog(context, permissionName);
return false;
} else if (statusPhotos == PermissionStatus.limited) {
showLimitedPermissionDialog(context, permissionName);
return false;
} else {
return false;
}
}
}
return false;
}
如果将首先请求,如果用户拒绝它会再次请求获得访问权限,但是在用户第二次拒绝访问权限后,您需要显示showDialog
弹出窗口以打开设置并从设置中授予访问权限。
还有一件事,小于 13 的 android 版本将检查 package device info import 'package:device_info/device_info.dart';
设备信息,以前的设备将是相同的并且更新将像那样。
if (Platform.isAndroid) {
final androidInfo = await DeviceInfoPlugin().androidInfo;
final sdkInt = androidInfo.version.sdkInt;
if (sdkInt < 33 && permissionName == 'gallery') {
return true;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.