首页 > 解决方案 > 计划闹钟在 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()上永远不会被调用。

我想念什么?

标签: android

解决方案


推荐阅读