1. 程式人生 > >Android開發系列(二十四):Notification的功能與使用方法

Android開發系列(二十四):Notification的功能與使用方法

font _id when ice extends 開發 content androi mark

關於消息的提示有兩種:一種是Toast,一種就是Notification。前者維持的時間比較短暫,後者維持的時間比較長。

並且我們尋常手機的應用比方網易、貼吧等等都有非常多的推送消息。就是用Notification實現的。


Notification是顯示在手機狀態欄的通知—手機狀態欄位於手機屏幕的上方。程序一般通過NotificationManager服務來發送Notification通知

Notification的一些方法。接下來我們都可以用到:

setDefaults():設置通知LED等、音樂、震動等等。

setAutoCancel():設置點擊通知後。狀態欄自己主動刪除通知。

setContentTitle():設置通知的標題

setContentText():設置通知的內容

setTicker():設置通知的提示信息

setSmallIcon():為通知設置圖標(註意這種方法第三個是i的大寫。不是L的小寫)


發送Notification的步驟:

1、調用getSystemService(NOTIFICATION_SERVICE)方法獲取系統的Notification Manager服務

2、通過構造器創建一個Notification對象。

3、為Notification設置各種屬性。

4、通過NotificationManager發送Notification。


在這裏,我們要註意一點要在AndroidManifest.xml文件裏加入幾個權限:

<!-- 加入操作閃光燈的權限 -->
<uses-permission android:name="android.permission.FLASHLIGHT" />
<!-- 加入操作振動器的權限 -->
<uses-permission android:name="android.permission.VIBRATE" />



接下來,我們通過詳細的代碼來說明。

main.xml:

<span style="font-size:14px;"><?xml version="1.0" encoding="utf-8"?

> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="center_horizontal" > <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="發送Notification" android:onClick="send" /> </LinearLayout> </span>

這裏設置了一個button。點擊會發送通知


然後。我們看下NotificationTest.java的代碼:

<span style="font-size:14px;">package cn.notificationtest.com;

import cn.notificationtest.com.R;

import android.app.Activity;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;


public class NotificationTest extends Activity
{
	static final int NOTIFICATION_ID = 0x123;
	NotificationManager nm;

	@Override
	public void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		// 獲取系統的NotificationManager服務
		nm = (NotificationManager) 
			getSystemService(NOTIFICATION_SERVICE);
	}

	// 為發送通知的button的點擊事件定義事件處理方法
	public void send(View source)
	{
		// 創建一個啟動其它Activity的Intent
		Intent intent = new Intent(NotificationTest.this
			, OtherActivity.class);
		PendingIntent pi = PendingIntent.getActivity(
			NotificationTest.this, 0, intent, 0);
		Notification notify = new Notification.Builder(this)
			// 設置打開該通知。該通知自己主動消失
			.setAutoCancel(true)
			// 設置顯示在狀態欄的通知提示信息
			.setTicker("網易新聞")
			// 設置通知的圖標
			.setSmallIcon(R.drawable.notify)
			// 設置通知內容的標題
			.setContentTitle("這是新聞標題")
			// 設置通知內容
			.setContentText("這是新聞的內容:*************")
			// // 設置使用系統默認的聲音、默認LED燈
			// .setDefaults(Notification.DEFAULT_SOUND
			// |Notification.DEFAULT_LIGHTS)
			// 設置通知的自己定義聲音
			.setSound(Uri.parse("android.resource://cn.notificationtest.com/"+R.raw.msg))
			.setWhen(System.currentTimeMillis())
			// 設改通知將要啟動程序的Intent
			.setContentIntent(pi).getNotification();
		// 發送通知
		nm.notify(NOTIFICATION_ID, notify);
	}
}</span>
在這個java文件裏,我們通過構造器創建了一個Notification對象。然後為Notification設置各種屬性。最後通過NotificationManager發送Notification。

(這裏須要註意的一點是,我們定義的聲音,圖標什麽的都是個人創建)


通過上邊的java代碼,我們創建了一個Intent對象,能夠通過這條通知。切換到另外的一個Activity界面:OtherActivity

<span style="font-size:14px;">/**
 *
 */
package cn.notificationtest.com;

import cn.notificationtest.com.R;

import android.app.Activity;
import android.os.Bundle;

public class OtherActivity extends Activity
{
	@Override
	public void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		//設置該Activity顯示的頁面
		setContentView(R.layout.other);
	}
}
</span>


效果圖例如以下所看到的:

技術分享




Android開發系列(二十四):Notification的功能與使用方法