Como alertar mensagem de alarme quando estiver fora do aplicativo no Android?
-
13-12-2019 - |
Pergunta
Estou tentando este código para exibir a mensagem de alarme.Funciona ao iniciar ou abrir o aplicativo, mas não exibe nenhuma mensagem pop-up fora do aplicativo.Estou tão confuso, não sei o que estou fazendo de errado.
String alarmtime = cur.getString(cur.getColumnIndex(DBDATA.LG_ALARMTIME));
//Reminder
String[] timesplit = alarmtime.split(":");
int hour = Integer.parseInt(timesplit[0]);
int minute = Integer.parseInt(timesplit[1]);
System.out.println(hour);
System.out.println(minute);
AlarmManager alarmMgr = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(this, ShortTimeEntryReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, 0);
Calendar alarm = new GregorianCalendar();
alarm.setTimeInMillis(System.currentTimeMillis());
alarm.set(Calendar.HOUR_OF_DAY, hour);
alarm.set(Calendar.MINUTE, minute);
alarm.set(Calendar.SECOND, 0);
System.out.println(System.currentTimeMillis());
System.out.println(alarm.getTimeInMillis());
if (System.currentTimeMillis() > alarm.getTimeInMillis()){
alarm.setTimeInMillis(alarm.getTimeInMillis()+ 24*60*60*1000);// Okay, then tomorrow ...
alarmMgr.set(AlarmManager.RTC_WAKEUP, alarm.getTimeInMillis(),pendingIntent);
}
else
{
alarmMgr.set(AlarmManager.RTC_WAKEUP, alarm.getTimeInMillis(),pendingIntent);
}
Preciso exibir a mensagem de alarme fora do aplicativo (ou seja), exatamente como o alarme faz.Obrigado pela ajuda pessoal,
Solução
Você provavelmente precisa de um Receptor de radiodifusão.
Como você pode ler nesta pergunta: BroadcastReceiver não está recebendo transmissão de alarme
Você tem que construir a intenção assim:
Intent alarmIntent = new Intent(this, AlarmReceiver.class);
PendingIntent sender = PendingIntent.getBroadcast(this, "CHECK_ALARM_CODE", alarmIntent, 0);
E receba o alarme assim:
public class AlarmReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "Alarm worked.", Toast.LENGTH_LONG).show();
Log.d("OK", "AlarmReceiver.onReceive");
}
}
Não se esqueça de registrar sua transmissão em seu arquivo de manifesto.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow