Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android技術基礎 >> 第88章、系統服務之NOTIFICATION_SERVICE服務(從零開始學Android)

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

編輯:Android技術基礎

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

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

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

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

   創建Notivication通知步驟:

(1)獲取NotificationManager的引用

[java] view plain copy  
  1. NotificationManager notificationManager=(NotificationManager)  
  2. super.getSystemService(Context.NOTIFICATION_SERVICE);  

(2)實例化Notification

[java] view plain copy  
  1. Notification notification=new Notification(  
  2. R.drawable.ic_launcher,  
  3. "Notification消息提示!",  
  4. System.currentTimeMillis());  

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

[java] view plain copy  
  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 plain copy  
  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 plain copy  
  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>  

 

二、程序文件

打開“src/com.genwoxue.notification/MainActivity.java”文件。
然後輸入以下代碼:

[java] view plain copy  
  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. }  

三、配置文件

沒有特殊權限要求,使用默認“AndroidManifest.xml”配置文件即可。

四、運行結果

\ \

\

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved