Android 通知的基本用法


一。概念

  通知(Notification)是 Android 系統中比較有特色的一個功能,當某個應用程序希望像用戶發送一些提示消息的時候,然而此時應用程序並不在前台運行,此時就可以借助通知來實現。發出一條通知后,手機的最上方的狀態欄會顯示一個通知的圖標,下拉狀態欄之后可以看到通知的詳細信息。

二。創建通知的步驟

  1. 首先需要一個  NotificationManager  來對通知你進行管理。

    可以調用  Context  的getSystemService() 方法來得到  NotificationManager 對象。 getSystemService()方法接收一個參數就可以確定獲取系統的哪個服務。在這里我們傳入Context.NOTIFICATION_SERVICE 即可。

NotificationManager manager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);

  2. 接下來需要創建一個 Notification 對象,這個對象用於存儲通知所需的各種信息,我們可以使用它的有三個參數的構造函數來進行創建。

    Notification()  Constructs a Notification object with default values.

    Notification(int icon, CharSequence tickerText, long when)   This constructor was deprecated      in API level 11.    Use Notification.Builder instead.

    Notification(Parcel parcel)   Unflatten the notification from a parcel.

    我們可以使用Notification的有有三個參數的造函數。

    第一個參數用於指定通知的圖標,比如項目的 res/drawable 目錄下有一張 icon.png 圖片,那么這里我們傳入 R.drawable.icon。

    第二個參數用於指定通知的 ticker 內容,當通知剛被創建是,他會在系統狀態欄一閃而過,屬於一種瞬時提示消息。

    第三個參數用於指定通知被創建的時間,當下拉狀態欄時,這里指定的時間會顯示在通知上。

    所以,我們創建一個 Notification 對象就可以寫成:

Notification notification = new Notification(R.drawable.icon,  "This is ticker text", System.currentTimeMellis());

  3. 創建好了 Notification 對象之后我們還需要對通知的布局進行設定。

    我們只需要調用 setLatestEventInfo() 方法就可以給通知設置一個標准的布局。

    public  void  setLatestEventInfo(Context context, CharSequence contentTitle, CharSequence contentText, PendingIntent contentIntent)

    這個方法接收四個參數:

    第一個是 Context;第二個用於指定標題內容下拉狀態欄是,就是現實這個內容第三個用於指定正文內容,同樣是下拉狀態欄的時候可以看到,第四個參數 我們先傳入null,后面再說,這個參數是用於指定,點擊這個通知的時候的響應;

    

notification.setLatestEventInfo(context, "This is content title", "This is content", null);

  4. 最后我們只需要 NotificationManager 的 notify() 方法就可以讓通知顯示出來。

    public  void  notify(int id, Notification notification)

    public  void  notify(String tag, int id, Notification notification)

    notify 方法接收兩個參數: 第一個是 id,要保證每個通知指定的 id 是唯一的; 第二個參數則是 Notification 對象,這里我們只需要把剛才創建好的 notification 對象傳入即可。

manager.notify(1, notification);

 

到這里我們就完成了通知的創建,通知既可以在活動中創建,還可以在廣播接收器和服務中創建。我們一般不在活動中創建,不管在哪兒創建,步驟都是一樣的。

 

  5. 下拉狀態欄,響應點擊通知欄。

    3 中的 setLatestEventInfo 的最后一個參數 PendingIntent 就是在合適的時機去執行某個動作。

    可以根據你創建 通知的地方調用相應的方法得到 PendingIntent 的實例, getActivity(),getBroadcast() , getService()。

    這幾個方法接收的參數是相同的,第一個是 Context,第二個一般用不到,傳入0即可,第三個參數是 Intent ,通過這個實現跳轉, 第四個參數用於確定PendingInetent 的行為。

Intent intent = new Intent(this, NotificationActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
notification.setLatestEventInfo(context, "This is content title", "This is content", pendingIntent);

   6. 跳轉到對應的界面后,取消通知欄

  

  

NotificationManager manager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
manager.cancel(1);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM