Android開發系列(二十四):Notification的功能與使用方法
關於消息的提示有兩種:一種是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"?這裏設置了一個button。點擊會發送通知> <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>
然後。我們看下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的功能與使用方法