歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Android開發教程:Notification和NotificationManager淺析

Notification和NotificationManager操作相對比較簡單,一般獲取系統級的服務NotificationManager,然後實例化Notification,設置它的屬性,通過NotificationManager發出通知就可以了。基本步驟如下:

1.獲取NotificationManager

 String service = Context.NOTIFICATION_SERVICE;

NotificationManager mNotificationManager =(NotificationManager)getSystemService(service);

2.實例化Notification對象

  1. //實例化Notification  
  2. Notification notification = new Notification(); 

3.設置Notification的屬性

  1. // 設置顯示圖標,該圖標會在狀態欄顯示    
  2. int icon = notification.icon = R.drawable.happy;    
  3. // 設置顯示提示信息,該信息也在狀態欄顯示   
  4. String tickerText = "測試Notification";     
  5. // 顯示時間    
  6. long when = System.currentTimeMillis();  notification.icon = icon;    
  7. notification.tickerText = tickerText;    
  8. notification.when = when;    
  9.  
  10. //也可以這樣設置    
  11. Notification notification_2=new Notification(icon,tickerText,when)  

調用setLatestEventInfo()方法在視圖中設置圖標和時間。

  1. // 實例化Intent  
  2. Intent intent = new Intent(MainActivity.this, MainActivity.class);   
  3. // 獲得PendingIntent  
  4. PendingIntent pIntent = PendingIntent.getActivity(MainActivity.this, 0, intent, 0);   
  5. // 設置事件信息  
  6. notification.setLatestEventInfo(MainActivity.this, " Title", "Content", pIntent);  

4.發出通知

  1. //Notification標示ID  
  2. private static final int ID = 1;  
  3. //發出通知  
  4. mNotificationManager.notify(ID, n); 

   下面是具體的例子,在這個例子裡定義了一個MainActivity發出廣播通知,定義一個MyReceiver類繼承Broadcasts接受通知,當接收完通知之後,啟動一個SecondActivity,在SecondActivity類中通過Notification和NotificationManager來可視化顯示廣播通知。具體的步驟如下:

MainActivity.java

  1. package com.Android.notification;  
  2.  
  3. import android.app.Activity;  
  4. import android.content.Intent;  
  5. import android.os.Bundle;  
  6. import android.view.View;  
  7. import android.view.View.OnClickListener;  
  8. import android.widget.Button;  
  9.  
  10. public class MainActivity extends Activity {  
  11.     // 聲明Button  
  12.     private Button btn;  
  13.     // 定義Broadcast Receiver action  
  14.     private static final String MY_ACTION = "com.android.notification.MY_ACTION";  
  15.     @Override 
  16.     public void onCreate(Bundle savedInstanceState) {  
  17.         super.onCreate(savedInstanceState);  
  18.         // 設置當前布局視圖  
  19.         setContentView(R.layout.main);  
  20.         // 實例化Button  
  21.         btn = (Button)findViewById(R.id.Button1);  
  22.         // 添加事件監聽器  
  23.         btn.setOnClickListener(listener);  
  24.     }  
  25.     // 創建事件監聽器  
  26.     private OnClickListener listener = new OnClickListener() {  
  27.         @Override 
  28.         public void onClick(View v) {  
  29.             // 實例化Intent  
  30.             Intent intent = new Intent();  
  31.             // 設置Intent action屬性  
  32.             intent.setAction(MY_ACTION);  
  33.             // 發起廣播  
  34.             sendBroadcast(intent);  
  35.         }  
  36.     };  

MyReceiver.java

  1. package com.android.notification;  
  2.  
  3. import android.content.BroadcastReceiver;  
  4. import android.content.Context;  
  5. import android.content.Intent;  
  6.  
  7. public class MyReceiver extends BroadcastReceiver{  
  8.     @Override 
  9.     public void onReceive(Context context, Intent intent) {  
  10.         // 實例化Intent  
  11.         Intent i = new Intent();  
  12.         // 在新的任務中啟動Activity  
  13.         i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);  
  14.         // 設置Intent啟動的組件名稱  
  15.         i.setClass(context, SecondActivity.class);  
  16.         // 啟動Activity顯示通知  
  17.         context.startActivity(i);  
  18.     }  
  19. }  

SecondActivity.java

  1. package com.android.notification;  
  2.  
  3. import android.app.Activity;  
  4. import android.app.Notification;  
  5. import android.app.NotificationManager;  
  6. import android.app.PendingIntent;  
  7. import android.content.Intent;  
  8. import android.os.Bundle;  
  9. import android.view.View;  
  10. import android.view.View.OnClickListener;  
  11. import android.widget.Button;  
  12.  
  13. public class SecondActivity extends Activity {  
  14.     // 聲明按鈕  
  15.     private Button cancelBtn;  
  16.     // 聲明Notification  
  17.     private Notification notification ;  
  18.     // 聲明NotificationManager  
  19.     private NotificationManager mNotification;  
  20.     // Notification標示ID  
  21.     private static final int ID = 1;  
  22.     @Override 
  23.     public void onCreate(Bundle savedInstanceState) {  
  24.         super.onCreate(savedInstanceState);  
  25.         setContentView(R.layout.second);  
  26.         // 實例化按鈕  
  27.         cancelBtn = (Button)findViewById(R.id.cancelButton2);  
  28.         // 獲得NotificationManager實例  
  29.         String service = NOTIFICATION_SERVICE;  
  30.         mNotification = (NotificationManager)getSystemService(service);  
  31.           
  32.         // 實例化Notification  
  33.         notification = new Notification();  
  34.         // 設置顯示圖標,該圖標會在狀態欄顯示  
  35.         int icon = notification.icon = android.R.drawable.stat_notify_chat;   
  36.         // 設置顯示提示信息,該信息也會在狀態欄顯示  
  37.         String tickerText = "Test Notification";   
  38.         // 顯示時間  
  39.         long when = System.currentTimeMillis();  
  40.         notification.icon = icon;  
  41.         notification.tickerText = tickerText;  
  42.         notification.when = when;  
  43.           
  44.         // 實例化Intent  
  45.         Intent intent = new Intent(this, MainActivity.class);   
  46.         // 獲得PendingIntent  
  47.         PendingIntent pi = PendingIntent.getActivity(this, 0, intent, 0);   
  48.         // 設置事件信息  
  49.         notification.setLatestEventInfo(this, "消息", "Hello Android", pi);   
  50.         // 發出通知  
  51.         mNotification.notify(ID, notification);  
  52.           
  53.         // 為按鈕添加監聽器  
  54.         cancelBtn.setOnClickListener(cancelListener);  
  55.     }  
  56.       
  57.     // 取消通知監聽器  
  58.      private OnClickListener cancelListener = new OnClickListener() {  
  59.         @Override 
  60.         public void onClick(View v) {  
  61.             // 取消通知  
  62.             mNotification.cancel(ID);  
  63.         }  
  64.     };  
Copyright © Linux教程網 All Rights Reserved