Я пытаюсь настроить Alarm с помощью BroadcastReceiver, который вызывается при срабатывании будильника. Отработанные часы на этом, но я не могу заставить onReceive() вызываться.BroadcastReceiver onReceive() не вызывается для сигнала тревоги
Как-то это хорошо работает на API 21, но последовательно выходит из строя API 18, где я хочу, чтобы это работало.
dumpsys сигнализация
RTC_WAKEUP #2: Alarm{b1fc3710 type 0 srk.test.broadcastreceiver}
type=0 when=-12s1ms repeatInterval=0 count=0
operation=PendingIntent{b1afd430: PendingIntentRecord{b1fc7c28 srk.test.broadcastreceiver broadcastIntent}}
манифеста
<application ...>
<uses-permission android:name="com.android.alarm.permission.SET_ALARM"/>
...
<receiver
android:name="srk.test.broadcastreceiver.Receiver"
android:exported="true" >
<intent-filter>
<action android:name="srk.test.broadcastreceiver.alarm_intent" >
</action>
</intent-filter>
</receiver>
</application>
активность
Button button = (Button) findViewById(R.id.button);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent("srk.test.broadcastreceiver.alarm_intent");
PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 123456789,
intent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.cancel(pendingIntent);
alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + (2 * 1000), pendingIntent);
Log.i("SRK", "Alarm Scheduled ... ");
Toast.makeText(getApplicationContext(), "Alarm set", Toast.LENGTH_LONG).show();
}
});
приемник
открытый класс приемника расширяет BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.i("SRK", "Alarm Triggered!");
Toast.makeText(context, "Alarm Triggered!", Toast.LENGTH_LONG).show();
}
Я тестирование на Android Studio на Windows, с эмулятором для Nexus 5, API 18.
I надеюсь, этого уровня детализации достаточно для воспроизведения этой проблемы. Как я могу сделать эту работу?