Mostrando la notificación al usuario en un momento específico, pero aparece cada vez que cierro o abra mi aplicación?
El escenario completo es que estoy tratando de mostrar la notificación de acuerdo a la hora seleccionada por el usuario para que estoy utilizando un TimePickerDialog
, BroadcastReceiver
clase y una clase de Service
, todo está trabajando multa notificación también aparece en momentos específicos, pero el problema es cuando abro y Cierre la aplicación cada vez que llegue la notificación.
Actividad.java
- Mal comportamiento de Backstack de la actividad cuando la actividad destruida
- ¿Cómo pasar datos a BroadcastReceiver?
- Estoy recibiendo un error del receptor Broadcast como una excepción de punto nulo en el estudio de Android. Quiero recibir notificaciones de GCM
- ¿Utilizar un receptor de difusión para iniciar AlarmManager en Android?
- AlarmManager no funciona cuando se cierra la aplicación
Intent myIntent = new Intent(ReminderActivity.this, MyBreakfastReciver.class); System.out.println("getting Breakfast Reminder"); pendingIntent = PendingIntent.getBroadcast(ReminderActivity.this, 0, myIntent,0); Calendar calendar = Calendar.getInstance(); calendar.setTimeInMillis(System.currentTimeMillis()); //bTimePart1 and bTimePart2 is the time choosen by user through time picker calendar.set(Calendar.HOUR_OF_DAY, bTimePart1 ); calendar.set(Calendar.MINUTE, bTimePart2); AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE); alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent);
BroadcastReciever
public class MyBreakfastReciver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Intent service1 = new Intent(context, MyBreakfastAlarmService.class); context.startService(service1); } }
Clase de reciever
private void showNotification(Context context) { NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context) .setSmallIcon(R.drawable.notificationlogo) .setContentTitle("DietGuru") .setAutoCancel(true) .setContentText("You haven't logged your BreakFast for today.") .setSubText("Would you like to do it now?"); // Creates an explicit intent for an Activity in your app Intent resultIntent = new Intent(context, CalorieMainActivity.class); // The stack builder object will contain an artificial back stack for the // started Activity. // This ensures that navigating backward from the Activity leads out of // your application to the Home screen. TaskStackBuilder stackBuilder = TaskStackBuilder.create(context); // Adds the back stack for the Intent (but not the Intent itself) stackBuilder.addParentStack(CalorieMainActivity.class); // Adds the Intent that starts the Activity to the top of the stack stackBuilder.addNextIntent(resultIntent); resultPendingIntent = stackBuilder.getPendingIntent( 0, PendingIntent.FLAG_CANCEL_CURRENT ); mBuilder.setContentIntent(resultPendingIntent); //mBuilder.setContentIntent(resultPendingIntent); mBuilder.setDefaults(Notification.DEFAULT_ALL); NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); // mId allows you to update the notification later on. mNotificationManager.notify(1, mBuilder.build()); }
Sólo quiero detener mi notificación cuando abro y cierra mi aplicación.
- ACTION_USER_PRESENT en el manifiesto con BroadcastReceiver
- Receptor de transmisión para comprobar la conexión a Internet en la aplicación Android
- El servicio no se inició en BOOT COMPLETE
- Receptores de difusión en Delphi XE5 Android
- Transmisión recibida dos veces
- Iniciar IntentService de Actividad y actualizar Actividad cuando IntentService finaliza
- Resultados de escaneo Wifi receptor de difusión no funciona
- Difusión de un problema INSTALL_REFERRER de intención
Si su selección de tiempo de tiempo es antes de tiempo ur actual, entonces el evento de incendio Alaram, así que trate de comprobar si el tiempo es antes de la hora actual, a continuación, agregue el día para Alaram incendio evento en el día siguiente con el tiempo dado, Compruebe el ejemplo con fuego notifiaction 8 am en cada día:
Calendar calendar = Calendar.getInstance(); calendar.setTimeInMillis(System.currentTimeMillis()); // Set the alarm's trigger to next day if set alAram after 8 am if(calendar.get(Calendar.HOUR_OF_DAY)>8){ calendar.add(Calendar.DAY_OF_MONTH,1); } // Set the alarm's trigger time to 8:00 am calendar.set(Calendar.HOUR_OF_DAY, 8); calendar.set(Calendar.MINUTE,0); calendar.set(Calendar.SECOND,0);