diff --git a/lib/modules/translation/controllers/translation_controller.dart b/lib/modules/translation/controllers/translation_controller.dart index 429f9db96..97d54cb09 100644 --- a/lib/modules/translation/controllers/translation_controller.dart +++ b/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 _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,