Отменить Android Тревоги без знания кода запроса - PullRequest
0 голосов
/ 11 июля 2020

У меня есть MainActivity, который запускает класс HintergrundDienst, расширяющий Service, нажав кнопку btnStartStop на главном GUI из MainActivity с

Intent inte = new Intent(getApplicationContext(), HintergrundDienst.class);
Bundle ints = new Bundle();
ints.putInt....
inte.putExtras(ints);
startService(inte);

MainActivity и HintergrundDienst оба имеют

PlayerClass pcObject = new PlayerClass();
    

Теперь

public class PlayerClass extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
    ///
    }

    public void abbrechen(Context context, long requestCode)
    {
        AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
        Intent myIntent = new Intent(context.getApplicationContext(), PlayerClass.class);
        PendingIntent pendingIntent = PendingIntent.getBroadcast(
                context.getApplicationContext(), (int)requestCode, myIntent, 0);

        alarmManager.cancel(pendingIntent);
    }


    public void alarmieren(Context context, long requestCode, int ResID)
    {
        AlarmManager alarmMgr = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
        ...
        PendingIntent pendingIntent = PendingIntent.getBroadcast(context, (int)requestCode, intent, PendingIntent.FLAG_ONE_SHOT);
        alarmMgr.setExact(AlarmManager.ELAPSED_REALTIME_WAKEUP, requestCode, pendingIntent);
    }
}

Я установил будильник в HintergrundDienst с помощью audioAbspielen.alarmieren(this,time.getTimeInMillis(),R.raw.test);.

Моя цель - нажать btnStartStop один раз для запуска и btnStartStop еще раз для остановки всех сигналов тревоги. Моя проблема в том, что для отключения будильника мне нужно requestCode. Мне пришлось бы поместить все requestCode в List в PlayerClass. Но я не могу получить доступ к этому List из MainActivity, где btnStartStop находится напрямую. Но я мог бы выставить его методом в PlayerClass. Но, как мне кажется, pcObject в MainActivity не тот, что в HintergrundDienst. Таким образом, список, заполняемый в HintergrundDienst, может быть null или пустым в MainActivity.

Короче: как мне отменить все тревоги в этом контексте?

1 Ответ

0 голосов
/ 11 июля 2020

Вы можете использовать SharedPreferences для сохранения значения requestCode при вызове alarmieren и его возврата для отмены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...