Остановка будильника из другой активности - PullRequest
0 голосов
/ 22 декабря 2018

Ладно, это так;DeviceListActivity инициирует сигнал тревоги.Затем AlarmReceiver создает действие, которое называется AlarmActivity, для выполнения некоторой работы, прекращения подачи сигнала тревоги и прекращения действия.Но я не смог остановить тревогу.Мои коды приведены ниже.

DeviceListActivity:

public void startAlarm(View view) {
    Calendar calNow = Calendar.getInstance();
    calNow.set(Calendar.SECOND, calNow.get(Calendar.SECOND) + 1);
    Intent intent = new Intent(getBaseContext(), AlarmReceiver.class);
    PendingIntent pendingIntent = PendingIntent.getBroadcast(getBaseContext(), 1, intent, PendingIntent.FLAG_UPDATE_CURRENT);
    AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
    alarmManager.set(AlarmManager.RTC_WAKEUP, calNow.getTimeInMillis(), pendingIntent);
}

AlarmReceiver:

public void onReceive(Context context, Intent intent) {
    Uri alarmUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM);
    if (alarmUri == null) {
        alarmUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
    }
    Ringtone ringtone = RingtoneManager.getRingtone(context, alarmUri);
    ringtone.play();
    Intent alarmActivity = new Intent();
    alarmActivity.setClassName(context.getPackageName(),AlarmActivity.class.getName());
    alarmActivity.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    context.startActivity(alarmActivity);
}

AlarmActivity:

public void stopAlarm(View view) {
    Intent intent = new Intent(getBaseContext(), AlarmReceiver.class);
    PendingIntent pendingIntent = PendingIntent.getBroadcast(getBaseContext(), 1, intent, PendingIntent.FLAG_UPDATE_CURRENT);
    AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
    alarmManager.cancel(pendingIntent);
    finish();
}

1 Ответ

0 голосов
/ 22 декабря 2018

В Alarm Activity попробуйте этот код:

public void stopAlarm(View view) {
Intent intent = new Intent(getBaseContext(), AlarmReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(getBaseContext(), 1, intent, 
PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
// add this if condition to check and cancel the alarm if AlarmManager is not null
if (alarmManager!= null) {
alarmManager.cancel(pendingIntent);
    finish();
}
...