mercoledì 22 febbraio 2017

Android Notification

un breve codice per creare una notifica su Android che, una volta cliccata, riporti in primo piano l'applicazione che la ha generata

public static final int NOTIFICATION_ID = 1;
private NotificationManager notificationManager;

Codice per generare la notifica con l'icona ed il testo nella status bar. L'evento associato al clic sulla notifica e' quello di mettere in primo piano, nel caso fosse in background, l'applicazione
---------------------
public void sendNotification() {
    NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
    builder.setSmallIcon(R.drawable.ic_3);
    // resume on notification tap
    Intent intent = new Intent(getApplicationContext(),MainActivity.class );
    intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
    PendingIntent pendingIntent = PendingIntent.getActivity(this, (int) System.currentTimeMillis(), intent, PendingIntent.FLAG_UPDATE_CURRENT);
builder.setContentIntent(pendingIntent); builder.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher)); builder.setContentTitle("Title"); builder.setContentText(""); builder.setSubText("Tap per aprire"); notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); notificationManager.notify(NOTIFICATION_ID, builder.build()); }
---------------------

per rimuovere la notifica in uscita dall'applicazione
---------------------
@Overridepublic void onDestroy()
{
  if (notificationManager == null)
    notificationManager = (NotificationManager)  getSystemService(NOTIFICATION_SERVICE);
notificationManager.cancelAll();
super.onDestroy();
}
---------------------

La cosa piu' difficile da creare e' l'icona da mettere nella traybar. Io ci sono riuscito dopo un giorno di prove e non riesco a ricostruire quale sia stato il giusto procedimento. In alcuni casi l'icona era visualizzata come un quadrato bianco, in altri casi completamente trasparente... la soluzione dovrebbe essere mettere i livelli di grigio come livello di trasparenza (Gimp ha un menu' apposito) ma non sono sicuro che sia stato questo il passo giusto