|
|
|
@ -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); |
|
|
|
} |
|
|
|
|