android - 计划闹钟在 Android 12 上不起作用
问题描述
在 Android 12 上运行并以 SDK 31 为目标时,计划的警报对我停止工作。
我安排闹钟
AlarmManager alarmMgr = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(context, AlarmReceiver.class);
PendingIntent alarmIntent = PendingIntent.getBroadcast(context, Constants_misc.CONST_INTENT_ALARM, intent, PendingIntent.FLAG_IMMUTABLE|FLAG_UPDATE_CURRENT);
alarmMgr.setExactAndAllowWhileIdle(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime() + 1000*60*15, alarmIntent);
接收器如下所示:
public class AlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent i) {
Log.d(TAG, "alarm received");
showNotification();
}
//[...]
}
在清单中,我添加了确切的警报权限
<uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM" />
并添加了接收器
<receiver
android:name=".survey.AlarmReceiver"
android:enabled="true"
android:exported="false"
android:process=":remote" />
在 SDK <= 30 上,一切都按预期工作,但在 Android 12onReceive()
上永远不会被调用。
我想念什么?
解决方案
推荐阅读
- python - 如何从给定的列表中生成较小的列表,从末尾一个一个地删除元素而无需循环?
- tcp - 如何从 TCP 数据包中获取有效负载?
- netsuite - Netsuite 使用 RESTAPI 创建 Itemfulfilment
- python - 当我在django中输入startapp命令时,应用程序没有添加到项目中
- javascript - 如何使用 IntersectionObserver API 使 navBar 具有粘性
- typescript - type script_我怎样才能给它一个类型?
- android - 允许在 Aladeng 智能手表上进行 USB 调试
- java - 将链接类传递给 talend 7.3 中的自定义例程
- sql - 某列有 {10,20,30} 之类的值,需要使用 SQL 查询找到该值的 sum、avg、max 和 min
- azure - 在 Azure 逻辑应用中,有没有一种方法可以组合响应主体,从而使访问变得容易?