QNA > C > Come Generare Una Notifica Giornaliera Alle 8 Del Mattino Nella Mia App Android

Come generare una notifica giornaliera alle 8 del mattino nella mia app Android

Ho già affrontato questo problema. Quindi sarei felice di aiutarvi in modo che non perdiate molto tempo come ho fatto io. Cercherò di essere il più semplice e conciso possibile.

  • Prendi il servizio Alarm dal sistema.
  • Fai un intento pendente, passando la classe broadcast receiver's name.
  • Fai un oggetto calendario e imposta l'ora di esso alle 8 del mattino.
  • Controlla se l'ora corrente è oltre le 8. Se sì, aggiungi un altro giorno. Se sì, allora aggiungi un altro giorno.
  • Chiamare il metodo set repeating della classe AlarmManager.

Codice di esempio per lo stesso:

alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); alarmIntent = new Intent(context of current file, AlarmReceiver1.class); // AlarmReceiver1 = ricevitore broadcast

pendingIntent = PendingIntent.getBroadcast( Menu.this, 0, alarmIntent, PendingIntent.FLAG_UPDATE_CURRENT);
alarmIntent.setData((Uri.parse("custom://"+System.currentTimeMillis())));
alarmManager.cancel(pendingIntent);

Calendar alarmStartTime = Calendar.getInstance();
Calendar now = Calendar.getInstance();
alarmStartTime.set(Calendar.HOUR_OF_DAY, 8);
alarmStartTime.set(Calendar.MINUTE, 00);
alarmStartTime.set(Calendar.SECOND, 0);
if (now.after(alarmStartTime)) {
Log.d("Hey", "Added a day");
alarmStartTime.add(Calendar.DATE, 1);
}

alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, alarmStartTime.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent);
Log.d("Alarm", "Alarms set for everyday 8 am.");


  • Vengo alla classe del ricevitore broadcast. Dovete registrare il vostro ricevitore broadcast nel manifesto. Questo ti farà ricevere gli eventi dell'orologio.
  • Sovrascrivi il metodo onReceive di questo ricevitore broadcast e fai una notifica lì stesso o fai un servizio di costruzione di notifiche separato e costruisci e visualizza la tua notifica lì.


Il frammento di codice del manifest:



Il frammento di codice del ricevitore broadcast:

public class AlarmReceiver1 extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
Intent service1 = new Intent(context, NotificationService1.class);
service1.setData((Uri.parse("custom://"+System.currentTimeMillis())));
context.startService(service1);
}


Snippet di codice del servizio di costruzione di notifiche:

public class NotificationService1 extends IntentService{

private NotificationManager notificationManager;
private PendingIntent pendingIntent;
private static int NOTIFICATION_ID = 1;
Notification notification;
@Override
protected void onHandleIntent(Intent intent) {
ontext context = this.getApplicationContext();
notificationManager = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE);
Intent mIntent = new Intent(this, Activity to be opened after clicking on the notif);
Bundle bundle = new Bundle();
bundle.putString("test", "test");
mIntent.putExtras(bundle);
pendingIntent = PendingIntent.getActivity(context, 0, mIntent, PendingIntent.FLAG_UPDATE_CURRENT);

Resources res = this.getResources();
NotificationCompat.Builder = new NotificationCompat.Builder(this);
Uri soundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM);
notification = new NotificationCompat.Builder(this)
.setContentIntent(pendingIntent)
.setSmallIcon(R.drawable.ic_launcher)
.setLargeIcon(BitmapFactory.decodeResource(res, R.drawable.ic_launcher))
.setTicker("ticker value")
.setAutoCancel(true)
.setPriority(8)
.setSound(soundUri)
.setContentTitle("Notif title")
.setContentText("Text").build();
notification.flags |= Notification.FLAG_AUTO_CANCEL | Notification.FLAG_SHOW_LIGHTS;
notification.defaults |= Notification.DEFAULT_SOUND | Notification.DEFAULT_VIBRATE;
notification.ledARGB = 0xFFFFA500;
notification.ledOnMS = 800;
notification.ledOffMS = 1000;
notificationManager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
notificationManager.notify(NOTIFICATION_ID, notification);
Log.i("notif", "Notifiche inviate.");

}

}


Ecco fatto. Questo è tutto.
Spero che questo aiuti.

Di Illene Gadis

Come trovare il mio indirizzo IP su un Chromebook :: Se gli SSID a 2,4 e 5 GHz sul mio router sono gli stessi, collegherà automaticamente i dispositivi abilitati a 5Ghz su quella banda più veloce?
Link utili