android 通知的創建

  1. 創建通知的builder
  2. 定義通知的action
  3. 設置通知點擊的事件
  4. 發出通知

    推薦你閱讀:

    • Notifications API Guide
    • Intents and Intent Filters
    • Notifications Design Guide

      註:使用NotificationCompat.Builder 類需要因引入support包

Create a Notification Builder


在創建一個Notification時 NotificationCompat.Builder 用於定義其ui
Builder 對象至少包含以下幾個方法:

    setSmallIcon()設置圖標 setContentTitle()設置標題setContentText() 設置詳情文本

    例如:

    NotificationCompat.Builder mBuilder =
        new NotificationCompat.Builder(this)
        .setSmallIcon(R.drawable.notification_icon)
        .setContentTitle("My notification")
        .setContentText("Hello World!");

    定義Notification的行為


    盡管action是可選的,建議為你的Notification添加一個。action 可以讓你直接從通知欄轉跳到你應用的activity中,在其中可以查看引發notification的事件和做相應的操作。在notification內部,action通過一個包含 IntentPendingIntent啟動一個activity

    如何構建 PendingIntent 取決於你啟動 Activity 的類型。當你啟動Activity 時候,你要遵循用戶使用notification的經驗。
    在下面的例子中,點擊通知打開瞭一個有效擴展notification的新的activity.,因此沒有必要創建一個人工回退堆棧。 (從 在啟動Activity的時候保存通知 獲取更多信息):

    Intent resultIntent = new Intent(this, ResultActivity.class);
    ...
    // Because clicking the notification opens a new ("special") activity, there's
    // no need to create an artificial back stack.
    PendingIntent resultPendingIntent =
        PendingIntent.getActivity(
        this,
        0,
        resultIntent,
        PendingIntent.FLAG_UPDATE_CURRENT
    );

    設置notification的點擊行為


    用一個手勢和之前的創建的 PendingIntent 關聯,調用NotificationCompat.Builder適當的方法。例如通過 setContentIntent()添加 PendingIntent,可以在用戶點擊通的文本的時候啟動一個activity。
    如下:

    PendingIntent resultPendingIntent;
    ...
    mBuilder.setContentIntent(resultPendingIntent);

    發出通知


    發出通知要滿足以下條件:

  • 獲取 NotificationManager.的實例
  • 使用 notify() 方法發出通知.
    當調用 notify(), 方法添加特定的id.你可以通過這個id來更新notification.在Managing
    Notifications有更詳細的描述.調用 build(),
    返回 包含說明 Notification 的對象.

    For example:

    NotificationCompat.Builder mBuilder;
    ...
    // Sets an ID for the notification
    int mNotificationId = 001;
    // Gets an instance of the NotificationManager service
    NotificationManager mNotifyMgr = 
            (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
    // Builds the notification and issues it.
    mNotifyMgr.notify(mNotificationId, mBuilder.build());
    完整代碼如下:
    NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(
    
                    this).setSmallIcon(R.drawable.ic_launcher)
    
                    .setContentTitle("My notification")
    
                    .setContentText("Hello World!");
    
    
    
            Intent resultIntent = new Intent(this, AActicity.class);
    
            // Because clicking the notification opens a new ("special") activity,
    
            // there's
    
            // no need to create an artificial back stack.
    
            PendingIntent resultPendingIntent = PendingIntent.getActivity(this, 0,
    
                    resultIntent, PendingIntent.FLAG_UPDATE_CURRENT);
    
            mBuilder.setContentIntent(resultPendingIntent);
    
            int mNotificationId = 001;
    
            // Gets an instance of the NotificationManager service
    
            NotificationManager mNotifyMgr = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
    
            // Builds the notification and issues it.
    
            Notification notification = mBuilder.build();
    
            //notification.flags |= Notification.FLAG_ONGOING_EVENT
     | Notification.FLAG_NO_CLEAR; //該行代碼可以使通知常駐通知欄
     
            mNotifyMgr.notify(mNotificationId, notification);

發佈留言