第88章、系統服務之NOTIFICATION_SERVICE服務(從零開始學Android)

Notification通知將一個圖標(包含一條可選的提示文本信息)填加到系統的狀態欄(通常來講,Android手機的狀態欄是在頂部,非底部,要注意噢)中,並將一條展開信息添加到通知窗口中。當用戶選中展開信息時,Android將執行一個此通知已定義的意圖Intent(一般用於彈出一個Activity)。你還能夠對通知進行配置,用設備提供的聲音、振動、閃光來提醒用戶。html

  當後臺服務(Service)須要對某個事件發出提醒而且須要用戶響應時,狀態欄通知就能發揮做用了。後臺服務歷來不會啓動Activity來接收用戶的交互,取而代之的是應該建立一個狀態欄通知,在用戶點選後再由通知來啓動Activity。java

  Activity或者Service都能初始化一個狀態欄通知。可由於Activity只有在活動狀態並得到焦點時才能執行操做,因此在實際開發中使用Service來建立狀態欄通知居多。這樣,即便用戶正在使用其餘程序或者設備已經休眠時,仍然能夠從後臺建立通知。要建立一個通知,須用到兩個類:Notification類和NotificationManager類。android

  NotificationManager是一個Android系統服務,用於管理和運行全部通知。NotificationManager不能被實例化,爲了把Notification傳給它,你能夠用getSystemService()方法獲取一個NotificationManager的引用。在須要通知用戶時再調用notify()方法將Notification對象傳給它。編程

   建立Notivication通知步驟:app

  (1)獲取NotificationManager的引用ide

[java] view plaincopy佈局

  1. NotificationManager notificationManager=(NotificationManager)  ui

  2.                     super.getSystemService(Context.NOTIFICATION_SERVICE);  this

  (2)實例化Notificationspa

[java] view plaincopy

  1.        Notification notification=new Notification(  

  2. R.drawable.ic_launcher,  

  3. "Notification消息提示!",  

  4. System.currentTimeMillis());  

  (3)指定通知的展開信息和Intent

[java] view plaincopy

  1.        PendingIntent intent=PendingIntent.getActivity(  

  2. this,   

  3. 0,   

  4. super.getIntent(),   

  5. PendingIntent.FLAG_UPDATE_CURRENT);  

  6.   

  7. tification.setLatestEventInfo(  

  8. this,   

  9. "跟我學Android",  

  10. "跟我學編程:www.genwoxue.com",  

  11. intent);  



  (4)將Notification對象傳給NotificationManager

[java] view plaincopy

  1.        notificationManager.notify(  

  2. "Genwoxue",  

  3. R.drawable.ic_launcher,  

  4. notification);  

  若是想要發送狀態欄通知,經過notify(int, Notification)傳遞Notification對象給NotificationManager便可。第一個參數是Notification 的惟一ID,第二個參數是Notification對象。ID在整個應用程序範圍內惟一標識Notification。應用程序可能管理着多種不一樣的通知,在用戶經過各自定義的Intent返回應用程序時必須能選擇正確的動做執行之,所以上述參數是必需的。


1、設計界面

  一、佈局文件

  打開res/layout/activity_main.xml文件。
  輸入如下代碼:

[html] view plaincopy

  1. <?xml version="1.0" encoding="utf-8"?>  

  2. <LinearLayout   

  3.     xmlns:android="http://schemas.android.com/apk/res/android"  

  4.     android:layout_width="match_parent"  

  5.     android:layout_height="match_parent"  

  6.     android:orientation="vertical" >  

  7.   

  8.     <TextView  

  9.         android:id="@+id/notifi"  

  10.         android:layout_width="wrap_content"  

  11.         android:layout_height="wrap_content"  

  12.         android:text="Notification通知將一個圖標(包含一條可選的提示文本信息)填加到系統的狀態欄(通常來講,Android手機的狀態欄是在頂部,非底部,要注意噢)中,並將一條展開信息添加到通知窗口中。當用戶選中展開信息時,Android將執行一個此通知已定義的意圖Intent(一般用於彈出一個Activity)。你還能夠對通知進行配置,用設備提供的聲音、振動、閃光來提醒用戶。  

  13. />  

  14.   

  15. </LinearLayout>  


2、程序文件

  打開「src/com.genwoxue.notification/MainActivity.java」文件。
  而後輸入如下代碼:

[java] view plaincopy

  1. package com.genwoxue.notification;  

  2.   

  3.   

  4. import android.os.Bundle;  

  5. import android.app.Activity;  

  6. import android.app.Notification;  

  7. import android.app.NotificationManager;  

  8. import android.app.PendingIntent;  

  9. import android.content.Context;  

  10.   

  11. public class MainActivity extends Activity {  

  12.   

  13.       

  14.       

  15.     @Override  

  16.     protected void onCreate(Bundle savedInstanceState) {  

  17.         super.onCreate(savedInstanceState);  

  18.         setContentView(R.layout.activity_main);  

  19.           

  20.         NotificationManager notificationManager=(NotificationManager)super.getSystemService(Context.NOTIFICATION_SERVICE);  

  21.         Notification notification=new Notification(  

  22.                 R.drawable.ic_launcher,  

  23.                 "Notification消息提示!",  

  24.                 System.currentTimeMillis());  

  25.           

  26.         PendingIntent intent=PendingIntent.getActivity(  

  27.                 this,   

  28.                 0,   

  29.                 super.getIntent(),   

  30.                 PendingIntent.FLAG_UPDATE_CURRENT);  

  31.           

  32.         notification.setLatestEventInfo(  

  33.                 this,   

  34.                 "跟我學Android",  

  35.                 "跟我學編程:www.genwoxue.com",  

  36.                 intent);  

  37.           

  38.         notificationManager.notify(  

  39.                 "Genwoxue",  

  40.                 R.drawable.ic_launcher,  

  41.                 notification);    

  42.     }  

  43. }  

3、配置文件

  沒有特殊權限要求,使用默認「AndroidManifest.xml」配置文件便可。

4、運行結果

   

  

 
參考文章:

  android Notification 的使用

  Android中Notification服務開發

相關文章
相關標籤/搜索