如何在android状态栏中创建通知?

时间:2011-06-06 09:33:21

标签: android notifications

您好只想分享我的Android通知构建器 答案如下。

请分享所有更改。

1 个答案:

答案 0 :(得分:2)

最低使用量:

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

<强>源:


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;
    }

}