2011-06-06 10 views

Respuesta

2

uso mínimo:

NotificatorFacade nb = new NotificatorFacade(context); 
nb.show(R.drawable.icon, "tickerText", new Date().getTime(), 
       "contentTitle", "contentText", ERROR_NOTIFICATION_ID); 

fuente:

 

package my.tools.android.notification; 

import android.app.Notification; 
import android.app.NotificationManager; 
import android.app.PendingIntent; 
import android.content.Context; 
import android.content.Intent; 
import android.net.Uri; 

public class NotificatorBuilder { 

    private final Context context; 
    private Intent intent; 
    private Integer flags; 

    private Integer defaults; 
    private Uri sound; 

    public NotificatorBuilder(Context context) { 
     this.context = context; 

    } 

    /** 
    * sets the flags for Notification.defaults 
    * 
    * @param defaults 
    */ 
    public void setDefaults(int defaults) { 
     this.defaults = defaults; 
    } 

    /** 
    * displays the notification with the given parameters it sets 
    * notification.flags|=Notification.FLAG_AUTO_CANCEL when intent (setIntent) 
    * is null the setIntent functionality was not tested 
    * 
    * @see http 
    *  ://developer.android.com/guide/topics/ui/notifiers/notifications. 
    *  html 
    * @param iconDrawable the icon 
    * @param tickerText 
    * @param when 
    * @param contentTitle 
    * @param contentText 
    * @param NOTIFICATION_ID this id is used for later identification 
    */ 

    public void show(int iconDrawable, CharSequence tickerText, long when, 
      CharSequence contentTitle, CharSequence contentText, 
      int NOTIFICATION_ID) { 
     // Get a reference to the NotificationManager: 
     String ns = Context.NOTIFICATION_SERVICE; 
     NotificationManager mNotificationManager = (NotificationManager) context 
       .getSystemService(ns); 
     // Instantiate the Notification: 
     Notification notification = new Notification(iconDrawable, tickerText, 
       when); 
     // Define the Notification's expanded message and Intent: 

     if (sound == null) { 

      notification.sound = sound; 
     } 
     if (flags != null) { 
      notification.flags = flags; 
     } 
     if (defaults != null) { 
      notification.defaults = defaults; 
     } 
     // if intent null create one and set the FLAG_AUTO_CANCEL flag EXTENDS 
     // FLAGS!!! 
     if (intent == null) { 
      setIntent(new Intent(context, NotificatorBuilder.class)); 
      notification.flags |= Notification.FLAG_AUTO_CANCEL; 
     } 

     PendingIntent contentIntent = PendingIntent.getActivity(context, 0, 
       intent, 0); 

     notification.setLatestEventInfo(context, contentTitle, contentText, 

     contentIntent); 

     mNotificationManager.notify(NOTIFICATION_ID, notification); 

    } 

    /** 
    * sets the flags for notification usage: NotificatorBuilder nb = new 
    * NotificatorBuilder(context); 
    * nb.setFlags(Notification.DEFAULT_VIBRATE|Notification.FLAG_INSISTENT); 
    * 
    * @param flags 
    */ 
    public void setFlags(int flags) { 
     this.flags = flags; 
    } 

    /** 
    * sets the intent for 
    * 
    * PendingIntent contentIntent = PendingIntent.getActivity(context, 0, 
    * intent, 0); notification.setLatestEventInfo(context, contentTitle, 
    * contentText,contentIntent); this functionality was not tested 
    * 
    * @param intent 
    */ 
    public void setIntent(Intent intent) { 
     this.intent = intent; 
    } 

    /** 
    * sets the sound for the notification was not tested but should work usage 
    * for default notification call the method :setDefaults(Notification.DEFAULT_SOUND); 
    * usage: 
    * To use a different sound with your notifications, pass a Uri reference to 
    * the sound field. The following example uses a known audio file saved to 
    * the device SD card: 
    * notification.sound = 
    * Uri.parse("file:///sdcard/notification/ringer.mp3"); 
    * 
    * In the next example, the audio file is chosen from the internal 
    * MediaStore's ContentProvider: notification.sound = 
    * Uri.withAppendedPath(Audio.Media.INTERNAL_CONTENT_URI, "6"); 
    * 
    * @param sound 
    */ 
    public void setSound(Uri sound) { 
     this.sound = sound; 
    } 

} 


Cuestiones relacionadas