Android: почему предупреждение о тревоге прекратилось после перезагрузки системы - PullRequest
5 голосов
/ 14 августа 2011

Я занимаюсь разработкой приложения для Android, которое должно срабатывать пять раз в день:
- время каждого дня не является постоянным
- после срабатывания будильника я планирую следующий сигнал тревоги.

Моя проблема: оповещение о тревоге работает в течение 1 дня, затем оно останавливается, а также, когда устройство дважды перезагружается, уведомление не работает, я не знаю, если есть другой способ сделать это, любая помощь будеточень ценится!

Код: у меня есть эта функция для вызова приемника вещания

public static void Start_Notifying(Context context){             
    Calendar cal = Calendar.getInstance();
    cal.setTimeInMillis(System.currentTimeMillis());
    cal.add(Calendar.HOUR_OF_DAY,hour);
    cal.add(Calendar.MINUTE, min);      
    Intent intent = new Intent(context,  OnetimeAlarmReceiver.class);
    intent.setAction("START_NOTIFYING");
    PendingIntent pendingIntent = PendingIntent.getBroadcast(context, notify.REQUEST_CODE, intent,0);
    AlarmManager alarmManager = (AlarmManager) context.getSystemService(ALARM_SERVICE);
    alarmManager.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis() , pendingIntent); 
    SaveAlarmManager(alarmManager, pendingIntent);

}

код oneTimeAlarmReciever

public void onReceive(Context context, Intent intent) {     
    main_menu.con = context;                
    Notification notifyDetails;
    NotificationManager nm = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE);
    notifyDetails = new Notification(R.drawable.icon,s1,System.currentTimeMillis());
    PendingIntent pendingIntent = PendingIntent.getActivity(context, REQUEST_CODE, new Intent(context, prayertimes.class), 0);
    notifyDetails.setLatestEventInfo(context,s2+ notify.prayName , s3, pendingIntent);
    notifyDetails.sound=Uri.parse(PlaySound());
    nm.notify(NOTIFICATION_ID, notifyDetails);                          
    main_menu.notify_me();
}

Код notify_me ()

static void notify_me() {               
    hour =pTime.num1;
    min =pTime.num2;                
    Start_Notifying(con);
}

В файле манифеста

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission>

<receiver class =".OnetimeAlarmReceiver" android:name="OnetimeAlarmReceiver">
    <intent-filter>
        <action android:name="START_NOTIFYING" />
        <action android:name="android.intent.action.BOOT_COMPLETED"> </action>
        <data android:mimeType="audio/ogg" />
    </intent-filter>
</receiver>

1 Ответ

25 голосов
/ 14 августа 2011

почему уведомление о тревоге прекратилось после перезагрузки системы

Поскольку расписания аварийных сигналов сбрасываются при перезагрузке. Если вы хотите, чтобы ваши аварийные сигналы снова принимались после перезагрузки, вам необходимо реализовать BroadcastReceiver, который отвечает на RECEIVE_BOOT_COMPLETED трансляцию. Проект demo/ в my WakefulIntentService repo демонстрирует это.

...