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
- NotificationManager notificationManager=(NotificationManager)
- super.getSystemService(Context.NOTIFICATION_SERVICE);
(2)實例化Notification
[java] view plain copy
- Notification notification=new Notification(
- R.drawable.ic_launcher,
- "Notification消息提示!",
- System.currentTimeMillis());
(3)指定通知的展開信息和Intent
[java] view plain copy
- PendingIntent intent=PendingIntent.getActivity(
- this,
- 0,
- super.getIntent(),
- PendingIntent.FLAG_UPDATE_CURRENT);
-
- tification.setLatestEventInfo(
- this,
- "跟我學Android",
- "跟我學編程:www.genwoxue.com",
- intent);
(4)將Notification對象傳給NotificationManager
[java] view plain copy
- notificationManager.notify(
- "Genwoxue",
- R.drawable.ic_launcher,
- notification);
如果想要發送狀態欄通知,通過notify(int, Notification)傳遞Notification對象給NotificationManager即可。第一個參數是Notification 的唯一ID,第二個參數是Notification對象。ID在整個應用程序范圍內唯一標識Notification。應用程序可能管理著多種不同的通知,在用戶通過各自定義的Intent返回應用程序時必須能選擇正確的動作執行之,因此上述參數是必需的。
一、設計界面
1、布局文件
打開res/layout/activity_main.xml文件。
輸入以下代碼:
[html] view plain copy
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical" >
-
- <TextView
- android:id="@+id/notifi"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="Notification通知將一個圖標(包含一條可選的提示文本信息)填加到系統的狀態欄(一般來說,Android手機的狀態欄是在頂部,非底部,要注意噢)中,並將一條展開信息添加到通知窗口中。當用戶選中展開信息時,Android將執行一個此通知已定義的意圖Intent(通常用於彈出一個Activity)。你還可以對通知進行配置,用設備提供的聲音、振動、閃光來提醒用戶。
- " />
-
- </LinearLayout>
二、程序文件
打開“src/com.genwoxue.notification/MainActivity.java”文件。
然後輸入以下代碼:
[java] view plain copy
- package com.genwoxue.notification;
-
-
- import android.os.Bundle;
- import android.app.Activity;
- import android.app.Notification;
- import android.app.NotificationManager;
- import android.app.PendingIntent;
- import android.content.Context;
-
- public class MainActivity extends Activity {
-
-
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
-
- NotificationManager notificationManager=(NotificationManager)super.getSystemService(Context.NOTIFICATION_SERVICE);
- Notification notification=new Notification(
- R.drawable.ic_launcher,
- "Notification消息提示!",
- System.currentTimeMillis());
-
- PendingIntent intent=PendingIntent.getActivity(
- this,
- 0,
- super.getIntent(),
- PendingIntent.FLAG_UPDATE_CURRENT);
-
- notification.setLatestEventInfo(
- this,
- "跟我學Android",
- "跟我學編程:www.genwoxue.com",
- intent);
-
- notificationManager.notify(
- "Genwoxue",
- R.drawable.ic_launcher,
- notification);
- }
- }
三、配置文件
沒有特殊權限要求,使用默認“AndroidManifest.xml”配置文件即可。
四、運行結果