Android 警报触发通知

Android alarm to trigger notification

我需要 Android AlarmManager 来触发通知。

我按如下方式创建闹钟:

    private void createAlarm() {
    AlarmManager mAlarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
    Intent mNotificationReceiverIntent = new Intent(MainActivity.this,AlarmNotificationReceiver.class);
    PendingIntent mNotificationReceiverPendingIntent =
            PendingIntent.getBroadcast(MainActivity.this,0,mNotificationReceiverIntent,PendingIntent.FLAG_UPDATE_CURRENT);
    mAlarmManager.setRepeating(AlarmManager.RTC, SystemClock.currentThreadTimeMillis()
            + ALARM_DELAY, ALARM_DELAY, mNotificationReceiverPendingIntent);
    Log.i(TAG,"Alarm created");
    }

AlarmNotificationReceiver 是

public class AlarmNotificationReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {

    Log.i(TAG,"Alarm Notification received");
}
}

不过我从来没有看到日志消息。我已经看到使用 "adb shell dumpsys alarm":

触发警报
  u0a54:de.fabian_nick.dailyselfie +709ms running, 0 wakeups:

+709ms 0 wakes 12 alarms: *alarm*:de.fabian_nick.dailyselfie/.AlarmNotificationReceiver

(至少如果我没看错的话)。 所以我假设我创建的 PendingIntent 出于某种原因没有被 BroadcastReceiver 接收。我的代码有什么问题?

我需要添加

<receiver android:name=".AlarmNotificationReceiver"></receiver>

给我的 AndroidManifest.xml

在您的 AndroidManifest.xml

中添加以下行
<receiver
        android:name="AlarmNotificationReceiver "
        android:enabled="true"
        android:exported="true">
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED" />
        </intent-filter>
    </receiver>