Android 中Notification和NotificationManager的使用
Notification使用基本步骤:
Nofification 和NotificationManager的使用
1. 获得系统级的服务NofifiactionManager
String Service = NOFICATION_SERVICE
NotificationManager nm = (NotificationManager)getSystemService(Service);
2. 实例化Notificatoin对象,并设置其属性:
Notification n = new Nofification();
//设置显示图标,会在状态栏显示
Int icon = R.drawable.icon;
//设置提示信息,会在状态栏显示
String tickerText = “Test NotificationManager”;
//显示时间
Long when = system.currentTimeMills();
n.icon = icon;
n.ticker = tickerText
n.when = when
还可以用构造方法来设置
NotificationManager nm = new NotificationManager(icon,ticker,when);
3. 调用 setLatestEventInfo()方法在视图中设置图标和时间
//实例化Intent
Intent intent = new Intent(this,MainActivity.class);
//获得PendingIntent
PendingIntent pi = PendingIntent.getActivity(this,0,intent,0);
//设置事件信息
n.setLastestEventInfo(this,”my title”,”my Content”,pi);
4. 发出通知
.//标示通知ID
Int ID = 1;
Nm.notify(ID,n);
实例:在一个activity中去注册一个广播,然后用这个广播去展示这个Notification.:
import android.app.Activity;
import android.app.Service;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import com.king.android.R;
/**
* 描述:发起一个广播
* 作者:Andy.Liu
* 时间: 2012-7-19 上午08:31:49
**/
public class NotifityActiivty extends Activity {
private static final String MY_SERVICE = "com.king.android.controls.MY_NOTIFITY_SERVICE";//指定的通知动作
//声明IPerson接口
private IPerson iPerson;
private Button btn;
MyReceiver2 receiver = new MyReceiver2();
@Override
protected void onResume() {
super.onResume();
IntentFilter filter = new IntentFilter();
//实例化MYReceiver2
registerReceiver(receiver, filter);
}
@Override
protected void onPause() {
super.onPause();
unregisterReceiver(receiver);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btn = (Button) findViewById(R.id.btn_voice);
btn.setText("发出通知");
btn.setVisibility(View.VISIBLE);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setAction(MY_SERVICE);
sendBroadcast(intent);
}
});
}
}
package com.king.android.controls;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
/**
* 描述:广播接受通知并发起通知事件
* 作者:Andy.Liu
* 时间: 2012-7-19 上午08:34:20
**/
public class NotifityReciver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Intent i = new Intent();
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.setClass(context, DisplayActivity.class);
context.startActivity(i);
}
}
package com.king.android.controls;
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;
import android.widget.TextView;
import com.king.android.R;
/**
* 描述:显示通知
* 作者:Andy.Liu
* 时间: 2012-7-19 上午08:36:31
**/
public class DisplayActivity extends Activity {
public static final int NOFITY_ID =100;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String Service = NOTIFICATION_SERVICE;
final NotificationManager nm = (NotificationManager)getSystemService(Service);
setContentView(R.layout.main);
TextView tv = (TextView) findViewById(R.id.tv_info);
tv.setVisibility(View.VISIBLE);
Button btnCancel = (Button) findViewById(R.id.btn_voice);
btnCancel.setVisibility(View.VISIBLE);
btnCancel.setText("取消广播");
btnCancel.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
nm.cancel(NOFITY_ID);
}
});
Notification n = new Notification();
int icon = R.drawable.ic_launcher;
String tickerText = "Test notifiManager";
long when = System.currentTimeMillis();
n.icon = icon;
n.tickerText = tickerText;
n.when = when;
//实例化Intent
Intent intent = new Intent(this,MainActivity.class);
//获得PendingIntent
PendingIntent pi = PendingIntent.getActivity(this,0,intent,0);
//设置事件信息
n.setLatestEventInfo(this,"My title","My content",pi);
nm.notify(NOFITY_ID,n);
}
}