Merge branch 'master_hyx'

This commit is contained in:
anfe 2024-05-16 11:42:00 +08:00
commit a3c322cbcf
4 changed files with 96 additions and 7 deletions

View File

@ -697,7 +697,7 @@ class BlueManage {
connectDeviceMacAddress = "";
if (bluetoothConnectionState == BluetoothConnectionState.connected) {
//
await bluetoothConnectDevice!.disconnect(timeout: 1);
await bluetoothConnectDevice!.disconnect(timeout: 2);
AppLog.log("断开连接成功");
}
// }

View File

@ -48,8 +48,7 @@ class LockEscalationLogic extends BaseGetXController {
//
Future<void> 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);

View File

@ -431,8 +431,7 @@ class NearbyLockLogic extends BaseGetXController {
//
Future<void> otaUpdate() async {
var status = await PermissionDialog.request(
Permission.storage, '需要访问读写权限才能使用手动升级固件'.tr);
var status = await PermissionDialog.requestStorage();
if (status != true) {
return;
}

View File

@ -190,6 +190,98 @@ class PermissionDialog {
return false;
}
//
static Future<bool> requestStorage() async {
if (Get.context == null) {
return false;
}
bool isAndroid33 =
AppPlatform.isAndroid && AppPlatform.getSdkIntValue() >= 33;
//
List<Permission> requestPermission() {
List<Permission> permissions;
if (isAndroid33) {
permissions = [
Permission.mediaLibrary,
Permission.photos,
// Permission.audio,
Permission.videos,
Permission.manageExternalStorage,
];
} else {
permissions = [
Permission.storage,
];
}
return permissions;
}
Future<bool> permissionStatus(List<Permission> 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<Permission> 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<Permission, PermissionStatus> statuses = await permissions.request();
bool isGranted = await permissionStatus(statuses.keys.toList());
return isGranted;
}
return false;
}
//
static Future<bool> request(Permission permission, [String? content]) async {
if (Get.context == null) {