From db8e3b49427730e8be713fe2c5a7617045d8e5e7 Mon Sep 17 00:00:00 2001 From: lxm <1274844347@qq.com> Date: Sat, 20 Sep 2025 20:38:20 +0800 Subject: [PATCH] =?UTF-8?q?fix(=E6=9D=83=E9=99=90):=20=E4=BC=98=E5=8C=96An?= =?UTF-8?q?droid=E5=AD=98=E5=82=A8=E6=9D=83=E9=99=90=E8=AF=B7=E6=B1=82?= =?UTF-8?q?=E9=80=BB=E8=BE=91=EF=BC=8C=E9=80=82=E9=85=8DAndroid=2011+?= =?UTF-8?q?=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修改存储权限请求逻辑,针对Android 11及以上版本不再请求存储权限 使用DeviceInfoPlugin获取Android版本信息进行判断 将权限提示文本改为使用国际化翻译 --- .../translation_list_controller.dart | 46 +++++++++++++------ 1 file changed, 33 insertions(+), 13 deletions(-) diff --git a/lib/modules/translation/controllers/translation_list_controller.dart b/lib/modules/translation/controllers/translation_list_controller.dart index 45181b869..55539706c 100644 --- a/lib/modules/translation/controllers/translation_list_controller.dart +++ b/lib/modules/translation/controllers/translation_list_controller.dart @@ -1,5 +1,6 @@ import 'dart:io'; import 'package:audio_waveforms/audio_waveforms.dart'; +import 'package:device_info_plus/device_info_plus.dart'; import 'package:flutter_easyloading/flutter_easyloading.dart'; import 'package:get/get.dart'; import 'package:just_audio/just_audio.dart'; @@ -93,24 +94,43 @@ class TranslationListController extends GetxController { // 请求存储权限 void _requestStoragePermission() async { - // final BuildContext context = Get.overlayContext!; - - PermissionUtil.instance - .requestPermission( - // context: context, - permissionType: Permission.storage, - permissionName: "存储", - explanationText: "我们需要访问存储权限,以便您可以选择并上传音频文件。", - permanentDenialText: "检测到您已永久拒绝存储权限。如需继续使用此功能,请前往应用设置中手动开启存储权限。", - ) - .then((granted) { + // 只在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, + permissionName: 'storagePermission'.tr, + explanationText: 'storagePermissionExplanation'.tr, + permanentDenialText: 'storagePermissionPermanentDenial'.tr, + ); + if (granted) { Logger.d("Permission", "用户授予了存储权限"); + //return true; } else { Logger.d("Permission", "用户未授予存储权限"); - // 可以提示用户无法进行文件操作 + //return false; } - }); + } catch (e) { + Logger.e("Permission", "请求存储权限时出错: $e"); + //return false; + } } // 添加方法:获取音频时长