From abc2788e0c8a855d146841b1529b4557961f8d2a Mon Sep 17 00:00:00 2001 From: anfe <448468458@qq.com> Date: Thu, 16 May 2024 11:41:28 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E4=BF=AE=E5=A4=8Dota=20=E5=8D=87=E7=BA=A7?= =?UTF-8?q?=E8=AF=BB=E5=86=99=E6=9D=83=E9=99=90=E8=8E=B7=E5=8F=96=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- star_lock/lib/blue/blue_manage.dart | 2 +- .../lockEscalation/lockEscalation_logic.dart | 6 +- .../addLock/nearbyLock/nearbyLock_logic.dart | 3 +- .../widget/permission/permission_dialog.dart | 92 +++++++++++++++++++ 4 files changed, 96 insertions(+), 7 deletions(-) diff --git a/star_lock/lib/blue/blue_manage.dart b/star_lock/lib/blue/blue_manage.dart index f77c35a4..639ff321 100644 --- a/star_lock/lib/blue/blue_manage.dart +++ b/star_lock/lib/blue/blue_manage.dart @@ -697,7 +697,7 @@ class BlueManage { connectDeviceMacAddress = ""; if (bluetoothConnectionState == BluetoothConnectionState.connected) { //加快蓝牙断连 - await bluetoothConnectDevice!.disconnect(timeout: 1); + await bluetoothConnectDevice!.disconnect(timeout: 2); AppLog.log("断开连接成功"); } // } diff --git a/star_lock/lib/main/lockDetail/lockSet/lockEscalation/lockEscalation_logic.dart b/star_lock/lib/main/lockDetail/lockSet/lockEscalation/lockEscalation_logic.dart index dbe2e746..62f4c274 100644 --- a/star_lock/lib/main/lockDetail/lockSet/lockEscalation/lockEscalation_logic.dart +++ b/star_lock/lib/main/lockDetail/lockSet/lockEscalation/lockEscalation_logic.dart @@ -48,8 +48,7 @@ class LockEscalationLogic extends BaseGetXController { //手动升级 Future otaUpdate() async { - var status = await PermissionDialog.request( - Permission.storage, '需要访问读写权限才能使用手动升级固件'.tr); + var status = await PermissionDialog.requestStorage(); if (status != true) { return; } @@ -69,8 +68,7 @@ class LockEscalationLogic extends BaseGetXController { } String md5Str = md5.convert(otaBin!).toString(); headJson!['fwMd5'] = md5Str; - ShowTipView().showIosTipWithContentDialog("未避免异常情况,请在门打开时升级".tr, - () async { + ShowTipView().showIosTipWithContentDialog("未避免异常情况,请在门打开时升级".tr, () async { blueOTAUpgrade(headJson!, [0, 0, 0, 0]); EasyLoading.show( status: '设备连接中...'.tr, maskType: EasyLoadingMaskType.black); diff --git a/star_lock/lib/mine/addLock/nearbyLock/nearbyLock_logic.dart b/star_lock/lib/mine/addLock/nearbyLock/nearbyLock_logic.dart index b6e1132d..2f5533fa 100644 --- a/star_lock/lib/mine/addLock/nearbyLock/nearbyLock_logic.dart +++ b/star_lock/lib/mine/addLock/nearbyLock/nearbyLock_logic.dart @@ -431,8 +431,7 @@ class NearbyLockLogic extends BaseGetXController { //手动升级 Future otaUpdate() async { - var status = await PermissionDialog.request( - Permission.storage, '需要访问读写权限才能使用手动升级固件'.tr); + var status = await PermissionDialog.requestStorage(); if (status != true) { return; } diff --git a/star_lock/lib/widget/permission/permission_dialog.dart b/star_lock/lib/widget/permission/permission_dialog.dart index acaf315b..b2f413c0 100644 --- a/star_lock/lib/widget/permission/permission_dialog.dart +++ b/star_lock/lib/widget/permission/permission_dialog.dart @@ -190,6 +190,98 @@ class PermissionDialog { return false; } + //读写 + static Future requestStorage() async { + if (Get.context == null) { + return false; + } + bool isAndroid33 = + AppPlatform.isAndroid && AppPlatform.getSdkIntValue() >= 33; + + //通用的局部函数 + List requestPermission() { + List permissions; + if (isAndroid33) { + permissions = [ + Permission.mediaLibrary, + Permission.photos, + // Permission.audio, + Permission.videos, + Permission.manageExternalStorage, + ]; + } else { + permissions = [ + Permission.storage, + ]; + } + return permissions; + } + + Future permissionStatus(List permissions) async { + bool isGranted = true; + for (Permission permission in permissions) { + isGranted = + isGranted && (await permission.status) == PermissionStatus.granted; + } + if (isAndroid33) { + // android 33以上需要申请媒体库权限 + isGranted = (await Permission.mediaLibrary.status) == + PermissionStatus.granted || + (await Permission.manageExternalStorage.status) == + PermissionStatus.granted; + } + return isGranted; + } + + bool application = true; + Permission permission = Permission.photos; + List permissions = requestPermission(); + dynamic cache = await Storage.getString(titles[permission]); + bool isGranted = await permissionStatus(permissions); + if (AppPlatform.isAndroid && !isGranted && cache is! String) { + application = await showCupertinoDialog( + context: Get.context!, + builder: (context) { + return PopScope( + canPop: false, + child: CupertinoAlertDialog( + title: Text('${'申请'.tr}${titles[permission] ?? ''}${'权限'.tr}'), + content: Text('需要访问读写权限才能使用手动升级固件'.tr), + actions: [ + CupertinoDialogAction( + child: Text('不允许'.tr), + onPressed: () { + Get.back(result: false); + }, + ), + CupertinoDialogAction( + child: Text('允许'.tr), + onPressed: () { + Get.back(result: true); + }, + ), + ], + )); + }, + ); + if (application) { + await Storage.setString(titles[permission], titles[permission]); + } + } else if (cache is String) { + bool isDenied = !(await permissionStatus(permissions)); + if (isDenied) { + showSet(permission); + return false; + } + } + if (application) { + Map statuses = await permissions.request(); + bool isGranted = await permissionStatus(statuses.keys.toList()); + return isGranted; + } + return false; + } + //显示权限判断申请框 static Future request(Permission permission, [String? content]) async { if (Get.context == null) {