Browse Source

feat(权限): 添加精确闹钟权限支持

在AndroidManifest.xml中添加SCHEDULE_EXACT_ALARM权限声明
在设置控制器中添加闹钟权限配置项
更新中英文翻译文件添加闹钟权限相关文案
在权限管理页面添加闹钟权限显示逻辑
weicu
lxm 1 year ago
parent
commit
1d235f415b
  1. 2
      android/app/src/main/AndroidManifest.xml
  2. 6
      lib/core/translations/language/en_us.dart
  3. 4
      lib/core/translations/language/zh_cn.dart
  4. 16
      lib/modules/settings/controllers/settings_controller.dart
  5. 19
      lib/modules/settings/views/permissions_view.dart

2
android/app/src/main/AndroidManifest.xml

@ -50,6 +50,8 @@
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
<!--用于申请调用A-GPS模块,卫星定位加速--> <!--用于申请调用A-GPS模块,卫星定位加速-->
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" /> <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
<!--用于申请调用精确闹钟权限-->
<uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM" />
<!--允许写设备缓存,用于问题排查--> <!--允许写设备缓存,用于问题排查-->
<uses-permission android:name="android.permission.WRITE_SETTINGS" /> <uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.VIBRATE"/> <uses-permission android:name="android.permission.VIBRATE"/>

6
lib/core/translations/language/en_us.dart

@ -487,15 +487,19 @@ const Map<String, String> enUS = {
// 权限管理页面 // 权限管理页面
'getPermissionStatusFailed': 'Failed to get permission status', 'getPermissionStatusFailed': 'Failed to get permission status',
'communicationPermissions': 'Communication Permissions', 'communicationPermissions': 'Communication Permissions',
'alarmPermissions': 'Alarm Permissions',
'calendarPermissions': 'Calendar Permissions', 'calendarPermissions': 'Calendar Permissions',
'locationPermissions': 'Location Permissions', 'locationPermissions': 'Location Permissions',
'phone': 'Phone', 'phone': 'Phone',
'sms': 'SMS', 'sms': 'SMS',
'alarm': 'Alarm',
'calendarWrite': 'Calendar Write', 'calendarWrite': 'Calendar Write',
'calendarFullAccess': 'Calendar Full Access', 'calendarFullAccess': 'Calendar Full Access',
'locationInfo': 'Location Info', 'locationInfo': 'Location Info',
'phonePermissionDesc': 'Used for phone call functionality', 'phonePermissionDesc': 'Used for phone call functionality',
'smsPermissionDesc': 'Used for SMS functionality', 'smsPermissionDesc': 'Used for SMS functionality',
'alarmPermissionDesc':
'Used to set exact alarms to ensure reminders trigger on time',
'calendarWritePermissionDesc': 'calendarWritePermissionDesc':
'Used for creating calendar events and reminders', 'Used for creating calendar events and reminders',
'calendarFullAccessPermissionDesc': 'calendarFullAccessPermissionDesc':
@ -512,6 +516,8 @@ const Map<String, String> enUS = {
'phonePermissionDetailDesc': 'phonePermissionDetailDesc':
'Phone call functionality requires phone permission', 'Phone call functionality requires phone permission',
'smsPermissionDetailDesc': 'SMS functionality requires SMS permission', 'smsPermissionDetailDesc': 'SMS functionality requires SMS permission',
'alarmPermissionDetailDesc':
'This permission is required to set exact alarms and ensure reminders trigger on time',
'calendarWritePermissionDetailDesc': 'calendarWritePermissionDetailDesc':
'Creating calendar events requires calendar write permission', 'Creating calendar events requires calendar write permission',
'calendarFullAccessPermissionDetailDesc': 'calendarFullAccessPermissionDetailDesc':

4
lib/core/translations/language/zh_cn.dart

@ -455,15 +455,18 @@ const Map<String, String> zhCN = {
// 权限管理页面 // 权限管理页面
'getPermissionStatusFailed': '获取权限状态失败', 'getPermissionStatusFailed': '获取权限状态失败',
'communicationPermissions': '通讯权限', 'communicationPermissions': '通讯权限',
'alarmPermissions': '闹钟权限',
'calendarPermissions': '日历权限', 'calendarPermissions': '日历权限',
'locationPermissions': '位置权限', 'locationPermissions': '位置权限',
'phone': '电话', 'phone': '电话',
'sms': '短信', 'sms': '短信',
'alarm': '闹钟',
'calendarWrite': '日历写入', 'calendarWrite': '日历写入',
'calendarFullAccess': '日历完整访问', 'calendarFullAccess': '日历完整访问',
'locationInfo': '位置信息', 'locationInfo': '位置信息',
'phonePermissionDesc': '用于拨打电话功能', 'phonePermissionDesc': '用于拨打电话功能',
'smsPermissionDesc': '用于发送短信功能', 'smsPermissionDesc': '用于发送短信功能',
'alarmPermissionDesc': '用于设置精确闹钟以确保提醒按时触发',
'calendarWritePermissionDesc': '用于创建日历事件和提醒', 'calendarWritePermissionDesc': '用于创建日历事件和提醒',
'calendarFullAccessPermissionDesc': '用于读取和管理日历事件及提醒', 'calendarFullAccessPermissionDesc': '用于读取和管理日历事件及提醒',
'locationPermissionDesc': '用于获取当前位置信息', 'locationPermissionDesc': '用于获取当前位置信息',
@ -477,6 +480,7 @@ const Map<String, String> zhCN = {
'permissionRequestError': '请求权限时出错', 'permissionRequestError': '请求权限时出错',
'phonePermissionDetailDesc': '拨打电话功能需要电话权限', 'phonePermissionDetailDesc': '拨打电话功能需要电话权限',
'smsPermissionDetailDesc': '发送短信功能需要短信权限', 'smsPermissionDetailDesc': '发送短信功能需要短信权限',
'alarmPermissionDetailDesc': '设置精确闹钟需要此权限,以确保提醒按时触发',
'calendarWritePermissionDetailDesc': '创建日历事件需要日历写入权限', 'calendarWritePermissionDetailDesc': '创建日历事件需要日历写入权限',
'calendarFullAccessPermissionDetailDesc': '管理日历事件需要完整日历权限', 'calendarFullAccessPermissionDetailDesc': '管理日历事件需要完整日历权限',
'locationPermissionDetailDesc': '获取位置信息需要位置权限', 'locationPermissionDetailDesc': '获取位置信息需要位置权限',

16
lib/modules/settings/controllers/settings_controller.dart

@ -192,7 +192,18 @@ class SettingsController extends GetxController {
}, },
{'type': Permission.bluetooth, 'name': '蓝牙', 'description': '用于连接蓝牙设备'} {'type': Permission.bluetooth, 'name': '蓝牙', 'description': '用于连接蓝牙设备'}
] ]
} },
{
'name': '闹钟权限',
'icon': Icons.alarm,
'permissions': [
{
'type': Permission.scheduleExactAlarm,
'name': '闹钟',
'description': '用于设置精确闹钟'
}
]
},
]; ];
// 检查单个权限状态 // 检查单个权限状态
@ -453,7 +464,8 @@ class SettingsController extends GetxController {
Logger().i('更新agent服务语音识别语言: ${supportedLanguages.join(', ')}'); Logger().i('更新agent服务语音识别语言: ${supportedLanguages.join(', ')}');
// 调用agent服务更新语言设置 // 调用agent服务更新语言设置
final success = await AgentService.setSupportedLanguages(supportedLanguages); final success =
await AgentService.setSupportedLanguages(supportedLanguages);
if (success) { if (success) {
Logger().i('agent服务语言设置更新成功'); Logger().i('agent服务语言设置更新成功');
} else { } else {

19
lib/modules/settings/views/permissions_view.dart

@ -66,6 +66,17 @@ class PermissionsView extends GetView<SettingsController> {
isDarkMode), isDarkMode),
SizedBox(height: 20.h), SizedBox(height: 20.h),
], ],
// 闹钟权限组
if (Platform.isAndroid) ...[
_buildPermissionSection(
'alarmPermissions'.tr, // 闹钟权限
Icons.alarm,
[Permission.scheduleExactAlarm],
permissionStatuses,
isDarkMode,
),
SizedBox(height: 20.h),
],
// 日历权限组 // 日历权限组
_buildPermissionSection( _buildPermissionSection(
@ -165,6 +176,8 @@ class PermissionsView extends GetView<SettingsController> {
return 'calendarFullAccess'.tr; // 日历完整访问 return 'calendarFullAccess'.tr; // 日历完整访问
case Permission.location: case Permission.location:
return 'locationInfo'.tr; // 位置信息 return 'locationInfo'.tr; // 位置信息
case Permission.scheduleExactAlarm:
return 'alarm'.tr; // 闹钟
default: default:
return permission.toString(); return permission.toString();
} }
@ -183,6 +196,8 @@ class PermissionsView extends GetView<SettingsController> {
return 'calendarFullAccessPermissionDesc'.tr; // 用于读取和管理日历事件及提醒 return 'calendarFullAccessPermissionDesc'.tr; // 用于读取和管理日历事件及提醒
case Permission.location: case Permission.location:
return 'locationPermissionDesc'.tr; // 用于获取当前位置信息 return 'locationPermissionDesc'.tr; // 用于获取当前位置信息
case Permission.scheduleExactAlarm:
return 'alarmPermissionDesc'.tr; // 设置精确闹钟需要此权限
default: default:
return 'appFunctionNeeds'.tr; // 应用功能需要 return 'appFunctionNeeds'.tr; // 应用功能需要
} }
@ -358,6 +373,8 @@ class PermissionsView extends GetView<SettingsController> {
return 'calendarFullAccess'.tr; // 日历完整访问 return 'calendarFullAccess'.tr; // 日历完整访问
case Permission.location: case Permission.location:
return 'locationInfo'.tr; // 位置信息 return 'locationInfo'.tr; // 位置信息
case Permission.scheduleExactAlarm:
return 'alarm'.tr; // 闹钟
default: default:
return permission.toString(); return permission.toString();
} }
@ -376,6 +393,8 @@ class PermissionsView extends GetView<SettingsController> {
return 'calendarFullAccessPermissionDetailDesc'.tr; // 管理日历事件需要完整日历权限 return 'calendarFullAccessPermissionDetailDesc'.tr; // 管理日历事件需要完整日历权限
case Permission.location: case Permission.location:
return 'locationPermissionDetailDesc'.tr; // 获取位置信息需要位置权限 return 'locationPermissionDetailDesc'.tr; // 获取位置信息需要位置权限
case Permission.scheduleExactAlarm:
return 'alarmPermissionDetailDesc'.tr; // 设置精确闹钟需要此权限
default: default:
return 'appNeedsPermissionForFullFunction'.tr; // 应用需要此权限以提供完整功能 return 'appNeedsPermissionForFullFunction'.tr; // 应用需要此权限以提供完整功能
} }

Loading…
Cancel
Save