|
|
|
@ -27,7 +27,7 @@ class PermissionUtil { |
|
|
|
final _storage = GetStorage(); |
|
|
|
|
|
|
|
/// 权限拒绝次数阈值(达到此次数后视为永久拒绝) |
|
|
|
static const int _denialThreshold = 2; |
|
|
|
static const int _denialThreshold = 5; |
|
|
|
|
|
|
|
/// 获取权限拒绝次数的存储键 |
|
|
|
String _getDenialCountKey(Permission permission) { |
|
|
|
@ -91,7 +91,8 @@ class PermissionUtil { |
|
|
|
Logger.d('PermissionUtil', '$permissionName 当前拒绝次数: $denialCount'); |
|
|
|
// 如果拒绝次数达到阈值或系统返回了 permanentlyDenied,直接视为永久拒绝 |
|
|
|
if (status.isPermanentlyDenied || denialCount >= _denialThreshold) { |
|
|
|
Logger.w('PermissionUtil', '$permissionName 已被系统永久拒绝或自定义计数达到阈值($denialCount),触发设置引导'); |
|
|
|
Logger.w('PermissionUtil', |
|
|
|
'$permissionName 已被系统永久拒绝或自定义计数达到阈值($denialCount),触发设置引导'); |
|
|
|
await _showPermanentDenialDialog( |
|
|
|
permissionName: permissionName, |
|
|
|
permanentDenialText: permanentDenialText, |
|
|
|
@ -109,8 +110,6 @@ class PermissionUtil { |
|
|
|
); |
|
|
|
isOverlayShown = true; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
final PermissionStatus newStatus = await permissionType.request(); |
|
|
|
Logger.d('PermissionUtil', '请求后 $permissionName 的新权限状态: $newStatus'); |
|
|
|
|
|
|
|
@ -137,7 +136,8 @@ class PermissionUtil { |
|
|
|
|
|
|
|
if (newStatus.isDenied) { |
|
|
|
Logger.w('PermissionUtil', '$permissionName 权限被拒绝,增加拒绝计数'); |
|
|
|
await _storage.write(_getDenialCountKey(permissionType), denialCount + 1); |
|
|
|
await _storage.write( |
|
|
|
_getDenialCountKey(permissionType), denialCount + 1); |
|
|
|
} |
|
|
|
|
|
|
|
// 所有未授权的情况最终都返回 false |
|
|
|
|