50 lines
1.5 KiB
Dart
50 lines
1.5 KiB
Dart
import 'package:permission_handler/permission_handler.dart';
|
|
|
|
class AppPermission {
|
|
// 检查权限
|
|
static Future<bool> checkPermission({required Permission permission}) async {
|
|
var status = await permission.status;
|
|
return status == PermissionStatus.granted;
|
|
}
|
|
|
|
// 批量检查权限
|
|
static Future<bool> checkPermissions({
|
|
required List<Permission> permissions,
|
|
}) async {
|
|
if (permissions.isEmpty) return false;
|
|
Map<Permission, PermissionStatus> statuses = await permissions.request();
|
|
for (var status in statuses.values) {
|
|
if (status != PermissionStatus.granted) {
|
|
return false;
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
|
|
static Future<bool> requestPermission({
|
|
required Permission permission,
|
|
}) async {
|
|
var status = await permission.request();
|
|
return status == PermissionStatus.granted;
|
|
}
|
|
|
|
static Future<bool> requestNotificationPermission() async {
|
|
final PermissionStatus status = await Permission.notification.request();
|
|
|
|
if (status == PermissionStatus.granted) {
|
|
print("通知权限已授予");
|
|
return true;
|
|
} else if (status == PermissionStatus.denied) {
|
|
// 第一次被拒绝,可以再次请求
|
|
return false;
|
|
} else if (status.isPermanentlyDenied) {
|
|
// 用户勾选了“不再提示”或被永久拒绝
|
|
print("权限被永久拒绝,跳转到设置页面");
|
|
openAppSettings(); // 跳转到应用设置页,手动开启
|
|
return false;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
}
|