Browse Source

fix(translation): 在Android 11+版本跳过存储权限请求

添加设备信息检查以确定Android版本,在Android 11及以上版本中不再请求存储权限,因为这些版本使用分区存储机制
weicu
lxm 1 year ago
parent
commit
71d91e4cdb
  1. 19
      lib/modules/translation/controllers/translation_controller.dart

19
lib/modules/translation/controllers/translation_controller.dart

@ -8,6 +8,7 @@ import 'package:get_storage/get_storage.dart';
import 'package:intl/intl.dart';
import 'package:path_provider/path_provider.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:device_info_plus/device_info_plus.dart';
import '../../../data/services/ast_service.dart';
import '../../../data/services/bluetooth_manager.dart';
import '../../../data/services/music_manager.dart';
@ -337,6 +338,24 @@ class TranslationController extends GetxController with WidgetsBindingObserver {
/// 请求存储权限
/// 返回是否授权成功
Future<bool> _requestStoragePermission() async {
// 只在Android 10及以下版本请求存储权限
if (Platform.isAndroid) {
try {
final deviceInfo = DeviceInfoPlugin();
final androidInfo = await deviceInfo.androidInfo;
final sdkVersion = androidInfo.version.sdkInt;
// Android 11+ (API 30+) 不需要存储权限
if (sdkVersion >= 30) {
Logger.d("Permission", "Android 11+版本,无需请求存储权限");
return true; // 直接返回true,表示可以使用存储
}
} catch (e) {
Logger.e("Permission", "获取Android版本信息失败: $e");
// 如果获取版本失败,为了兼容性还是请求权限
}
}
try {
final bool granted = await PermissionUtil.instance.requestPermission(
permissionType: Permission.storage,

Loading…
Cancel
Save