android - 除了在 list 中设置 SCHEDULE_EXACT_ALARM 权限外,应用程序不会显示在警报和提醒中

标签 android permissions alarm

正如标题所示,我有一个针对 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/

相关文章:

c - linux C语言。 setjmp longjmp 报警

java - 从 Android 上的 Web 服务缓存 JSON - 模式?

Android异常: java. io.IOException:打开失败:EACCES(权限被拒绝)

linux - 授予模块参数 S_IWUGO 权限会导致编译错误(而 S_IRUGO 或 S_IXUGO 则不会)- 为什么?

java - 以编程方式查询 LDAP 权限

安卓。警报管理器在奇怪的时间触发

android - 将按钮添加到 ListView 中的每一行

android - addTextChangedListener 动态获取EditText

android - Xamarin Forms 项目中使用 AD 和 Google 进行的 Azure 身份验证在授权后不会重定向回应用程序

android - 如何设置警报和通知?