正如标题所示,我有一个针对 Android 12 的应用,其 compileSdkVersion = 31
应该触发准确的警报。这里的问题是,应用程序在 list 中被授予了 SCHEDULE_EXACT_ALARM
权限,但它没有显示在 Alarms & Reminders
列表中。
...
<uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM" />
<application
...
<receiver
android:name=".boot.AlarmReceiver"
android:exported="false"
<intent-filter>
<action android:name="android.app.action.SCHEDULE_EXACT_ALARM_PERMISSION_STATE_CHANGED" />
</intent-filter>
</receiver>
...
</application>
我尝试在广播接收器中使用 ACTION_SCHEDULE_EXACT_ALARM_PERMISSION_STATE_CHANGED
进行调试,其中还包括 Intent 过滤器和 Intent 操作,以检查是否监听该更改并强制更改 REQUIRE_EXACT_ALARM_PERMISSION
通过开发者设置中的应用兼容性更改
获得权限,该权限有效。
private fun runOnBootCompleted(intentAction: String) {
if (intentAction == AlarmManager.ACTION_SCHEDULE_EXACT_ALARM_PERMISSION_STATE_CHANGED
) {
alarmManager.setRepeatingAlarm()
}
}
在设置闹钟之前,我会检查是否已授予其权限
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S &&!alarmManager.canScheduleExactAlarms()) {
openAlarmSettings()
} else {
setRepeatingAlarm()
}
即使关闭REQUIRE_EXACT_ALARM_PERMISSION
,它也能正常工作。
我是否缺少某些内容,而这些内容是应用程序显示在警报和提醒
列表中所必需的?
最佳答案
您需要设置 -
androidCompileSdkVersion = 31
androidTargetSdkVersion = 31
希望对你有帮助!
关于android - 除了在 list 中设置 SCHEDULE_EXACT_ALARM 权限外,应用程序不会显示在警报和提醒中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71789639/