アプリが破棄された後で、ディスアラーム/スヌーズ画面を開くアラームを実装する方法を教えてください。私のアラームはここで私はアラームをスケジュールする方法です、限り、アプリが起動したままのように完全に正常に動作します:アプリが死んだときにアラームがオフにならない
//instantiate calendar to call alarm on time match
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, alarmTimePicker.getCurrentHour());
calendar.set(Calendar.MINUTE, alarmTimePicker.getCurrentMinute());
//if time is set earlier than current (e.g set for 6:59pm, currently 7pm), do not play until next clock cycle/day
if(calendar.before(Calendar.getInstance())) {
calendar.add(Calendar.DATE, 1);
}
//cancel any currently pending intents if toggle button is toggled on
Intent myIntent = new Intent(MainActivity.this, AlarmReceiver.class);
PendingIntent.getBroadcast(MainActivity.this, 0, myIntent, PendingIntent.FLAG_UPDATE_CURRENT).cancel();
//add parameters to pass to activities that play the alarm
myIntent.putExtra("stream",stream);
myIntent.putExtra("seconds",snoozeSeconds);
myIntent.putExtra("link",ytLink);
//create pending intent to broadcast to activity that plays the alarm
pendingIntent = PendingIntent.getBroadcast(MainActivity.this, 0, myIntent, 0);
alarmManager.setExact(AlarmManager.RTC, calendar.getTimeInMillis(), pendingIntent);
そして、私はかなり簡単だ受信機を使用します。
public class AlarmReceiver extends WakefulBroadcastReceiver {
@Override
public void onReceive(final Context context, Intent intent) {
//....
MainActivity.ringtone.play();
Intent alarmIntent = new Intent(context, AlarmActivity.class);
context.startActivity(alarmIntent); //start dismiss screen
はたぶん、あなたが書いたあなたのAndroidManifest.xmlファイルにインテントフィルタのアクションを追加し、次のコード
を確認してください? – Urma
'MainActivity.ringtone.play()'呼び出しがExceptionを投げていると思います。あなたのlogcatを確認してください。また、Receiverの 'Context'パラメータで' Activity'を開始するには 'Intent.FLAG_ACTIVITY_NEW_TASK'が必要です。 –