Android通知Notification入門小例子(一)
阿新 • • 發佈:2019-02-17
通知(Notification)是 Android 系統中比較有特色的一個功能,當某個應用程式希望向
使用者發出一些提示資訊,而該應用程式又不在前臺執行時,就可以藉助通知來實現。發出一
條通知後,手機最上方的狀態列中會顯示一個通知的圖示,下拉狀態列後可以看到通知的詳
細內容。
使用:當程式進入到後臺的時候我們才需要使用通知,所以在廣播接收器和服務中使用通知較多。
效果圖:
建立通知的步驟:
1、建立通知管理類NotificationManager的例項,用來管理通知 NotificationManager manager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);1)、指定通知使用的圖示,如:R.drawable.ic_launcher ;
2)、指定通知的ticker內容,通知被建立的時候,在狀態列一閃而過,屬於瞬時提示資訊。
3)、指定通知被建立的時間,以毫秒為單位,下拉狀態列時,這個時間會顯示在相應的通知上。3、設定通知標準的佈局notification.setLatestEventInfo(context, "This is content title", "This is content text", pendingIntent);
1)、第一個引數;上下文物件Context;
2)、第二個引數:指定通知的標題內容,下拉系統狀態列可看到;
3)、第三個引數:指定通知的正文,下拉系統狀態列可看到;
4)、第四個引數:當用戶點選這條通知時就會執行,用於啟動活動、啟動服務以及傳送廣播等。4、啟動通知manager.notify(1, notification);兩個引數:
1)、id,保證每個通知的id唯一;
2)、Notification物件
程式碼:
layout資料夾下:activity_main.xml和notification_text.xml中程式碼比較簡單,不貼了
MainActivity.java中程式碼:
package com.demo.notificationdemo;
import android.app.Activity;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class MainActivity extends Activity implements OnClickListener {
private Button start_notification;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
start_notification = (Button) findViewById(R.id.start_notification);
start_notification.setOnClickListener(this);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.start_notification:
/**
* 建立通知管理類NotificationManager的例項,用來管理通知
*/
NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
/**
* 建立通知類Notification例項(用來儲存通知所需的資訊); 一共三個引數:
* 1)、指定通知使用的圖示,如:R.drawable.ic_launcher ;
* 2)、指定通知的ticker內容,通知被建立的時候,在狀態列一閃而過,屬於瞬時提示資訊。
* 3)、指定通知被建立的時間,以毫秒為單位,下拉狀態列時,這個時間會顯示在相應的通知上。
*/
Notification notification = new Notification(
R.drawable.ic_launcher, "有通知來了", System.currentTimeMillis());
/**
* 例項化Intent,構建意圖:從當前頁面條狀到NotificationActivity頁面
*/
Intent intent = new Intent(this, NotificationActivity.class);
/**
* 用於啟動活動、啟動服務以及傳送廣播等。 根據需求來選擇是使用
* getActivity()方法、getBroadcast()方法、還是 getService() 方法。 一共四個引數:
* 1)、第一個引數是 上下文Context ; 2)、 第二個引數一般用不到,通常都是傳入 0 即可 3)、第三個引數是一個
* Intent物件,我們可以通過這個物件構建出 PendingIntent 的“意圖”; 4)、第四個引數用於確定
* PendingIntent 的行為
*/
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0,
intent, PendingIntent.FLAG_CANCEL_CURRENT);
/**
* 設定通知標準的佈局。四個引數: 1)、上下文物件Context; 2)、指定通知的標題內容,下拉系統狀態列可看到;
* 3)、指定通知的正文,下拉系統狀態列可看到; 4)、用於啟動活動、啟動服務以及傳送廣播
*/
notification.setLatestEventInfo(this, "股票大漲", "今日萬科的股票停牌,應對惡意收購",
pendingIntent);
/**
* 啟動通知. 兩個引數: 1)、id,保證每個通知的id唯一; 2)、Notification物件
*/
manager.notify(1, notification);
break;
default:
break;
}
}
}
NotificationActivity.java中程式碼:
package com.demo.notificationdemo;
import android.app.Activity;
import android.app.NotificationManager;
import android.os.Bundle;
public class NotificationActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.notification_text);
NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
//cancel()方法中的引數是我們在啟動通知,呼叫manager.notify(1, notification)方法時,傳的id
manager.cancel(1);
}
}