Browse Source

上传权限检测

newdev_shunjiawei
liwei1dao 1 year ago
parent
commit
7cbfe4a633
  1. 47
      lib/modules/pairing/controllers/pairing_controller.dart

47
lib/modules/pairing/controllers/pairing_controller.dart

@ -137,7 +137,7 @@ class PairingController extends GetxController {
void skipPairing() async {
Logger.i(_tag, '用户选择跳过配对');
// 权限申请
await _checkAndRequestPermissions();
await _checkAndRequestAgentPermissions();
// 启动BLE后台服务
await BleManager.to.startAgentService();
Logger.i(_tag, 'BLE后台服务已启动');
@ -502,6 +502,8 @@ class PairingController extends GetxController {
statusDescription.value = '配对成功!';
try {
//检测agent权限是否已授予
_checkAndRequestAgentPermissions();
// 启动BLE后台服务
await BleManager.to.startAgentService();
Logger.i(_tag, 'BLE后台服务已启动');
@ -577,6 +579,49 @@ class PairingController extends GetxController {
if (Platform.isAndroid && await _getAndroidSdkVersion() >= 31) {
requiredPermissions.add(Permission.bluetoothScan);
requiredPermissions.add(Permission.bluetoothConnect);
}
// 逐个请求权限
for (var permission in requiredPermissions) {
final permissionName = _getPermissionName(permission);
Logger.d(_tag, '正在请求 $permissionName 权限');
final granted = await PermissionUtil.instance.requestPermission(
permissionType: permission,
permissionName: permissionName,
explanationText: _getExplanationText(permission),
permanentDenialText: '您已永久拒绝$permissionName权限,请前往应用设置开启',
settingsButtonText: '去设置',
cancelButtonText: '取消',
);
if (!granted) {
Logger.w(_tag, '$permissionName 权限未授予');
return false;
}
}
return true;
} catch (e) {
Logger.e(_tag, '权限检查失败: $e');
return false;
}
}
Future<bool> _checkAndRequestAgentPermissions() async {
try {
if (Platform.isIOS) {
// iOS权限由系统自动处理
return true;
}
// Android权限检查 - 使用 PermissionUtil
// 根据 Android 版本确定需要的权限
List<Permission> requiredPermissions = [
Permission.locationWhenInUse,
];
if (Platform.isAndroid && await _getAndroidSdkVersion() >= 31) {
requiredPermissions.add(Permission.locationAlways);
requiredPermissions.add(Permission.notification);
}

Loading…
Cancel
Save