Я хочу, чтобы установить будильник в указанное время и осуществлять уведомление в указанное время (в день), используя BroadcastReceiver и AlaramManager.Как в андроиде в AlaramManger и BroadcastReceiver
Он встревожил указанное время. После того, как я запустил приложение, он снова сигнализирует, даже если это не время, которое я установил.
Другими словами, когда я устанавливаю будильник 9:21 вечера, и я запускаю приложение после 21:21, уведомление создается.
Я просто хочу сделать уведомление о тревоге в указанное время, которое я установил, и приложение не запускается. Кроме того, когда я запускаю приложение, он не сигнализирует.
Как это исправить?
Это мой BroadcastReceiver код -
public class BroadcastD extends BroadcastReceiver{
Context context;
@Override
public void onReceive(Context context, Intent intent) {
this.context = context;
showNotification();
}
public void showNotification() {
NotificationManager notificationManager =
(NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
PendingIntent pendingIntent = PendingIntent
.getActivity(context, 0, new Intent(context, MainActivity.class),
PendingIntent.FLAG_UPDATE_CURRENT);
NotificationCompat.Builder builder = new NotificationCompat.Builder(context);
builder.setSmallIcon(android.R.drawable.ic_dialog_alert)
.setTicker("Ticket")
.setContentTitle("Title")
.setContentText("Context")
.setWhen(System.currentTimeMillis())
.setAutoCancel(true)
.setContentIntent(pendingIntent);
notificationManager.notify(1, builder.build());
}
}
Это мой MainActivity код:
public class MainActivity extends AppCompatActivity {
AlarmManager am ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
am = (AlarmManager) getSystemService(ALARM_SERVICE);
AlarmHATT alarmHATT = new AlarmHATT(getApplicationContext());
alarmHATT.Alarm();
}
public class AlarmHATT {
private Context context;
public AlarmHATT(Context context) {
this.context = context;
}
public void Alarm() {
Intent intent = new Intent(context.getApplicationContext(), BroadcastD.class);
PendingIntent sender = PendingIntent.getBroadcast(MainActivity.this, 0, intent, 0);
Calendar calendar = Calendar.getInstance();
calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH),
calendar.get(Calendar.DATE), 21, 21, 0);
am.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 24*60*60*1000, sender);
}
}
Это нормальное поведение, которое alarmManager запускает, если вы установите время, которое было в прошлом. Вы не можете избежать, только установив правильное время. – Opiatefuchs
Что еще можно избежать тревоги? Если вы знаете, пожалуйста, научите меня. Спасибо. –
просто не устанавливал время в прошлом. Вопрос в том, ПОЧЕМУ вы хотите установить время из прошлого? Это не имеет смысла, никто не должен уведомляться о прошедшем событии ..... – Opiatefuchs