Как использовать будильник.ACTION_DISMISS_ALARM в Android

#java #android #alarm #android-alarms

Вопрос:

Вот код, который должен отключать сигнал тревоги по его метке:

 Intent intent = new Intent(AlarmClock.ACTION_DISMISS_ALARM);

    intent.putExtra(AlarmClock.EXTRA_ALARM_SEARCH_MODE, AlarmClock.ALARM_SEARCH_MODE_LABEL);
    //intent.putExtra(AlarmClock.ALARM_SEARCH_MODE_TIME,1);
    //intent.putExtra(AlarmClock.EXTRA_IS_PM, true);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    intent.putExtra(AlarmClock.EXTRA_MESSAGE, "Label");
    if(intent.resolveActivity(getPackageManager()) != null){
        startActivity(intent);
    } else {
        Toast.makeText(SetAlarmActivity.this, "There is no app that support this action", Toast.LENGTH_SHORT).show();
    }
 

К сожалению, он просто открывает приложение будильника по умолчанию и даже не отключает нужный мне будильник. Как заставить его работать правильно?

Ответ №1:

Этот код делает то, что он должен делать. Он открывает указанное вами намерение — приложение «будильник».

Я предполагаю, что вы установили будильник через AlarmManager и хотите его отменить? Если это так, то код является:

 AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Intent myIntent = new Intent(getApplicationContext(), YourBroadcastReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(
                                 getApplicationContext(), REQUEST_CODE, myIntent, 0);

alarmManager.cancel(pendingIntent);
 

Убедитесь, что код запроса такой же, как и при запуске.

Если вы действительно установили будильник через приложение «Будильник» и хотели его отменить — я не уверен, что есть способ без участия пользователя.

Комментарии:

1. К сожалению, я установил будильник с помощью будильника. SET_ALARM

2. Затем вам нужно, чтобы пользователь выразил намерение, и будильник решил, что хочет попросить пользователя подтвердить удаление. С этим ничего не поделаешь.