可以用Activity和Service来开始消息通知,两者的区别在于一个是在前台触发,一个是后台服务触发。
要使用消息通知,必须要用到两个类:NotificationManager和Notification,其他NotificationManager的初始化是用getSystemService方法,并且通过notify方法来向android系统发送消息栏通知和显示。
public class MainActivity extends Activity {
private TextView tvTitle;
private TextView tvContent;
private Button btnSend;
private String title;
private String content;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tvTitle=(TextView) findViewById(R.id.etTitle);
tvContent=(TextView) findViewById(R.id.etContent);
btnSend=(Button) findViewById(R.id.btnSend);
btnSend.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
send();
}
});
}
public void send(){
title=tvTitle.getText().toString();//标题
content=tvContent.getText().toString();//内容
//1.得到NotificationManager
NotificationManager nm=(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
//2.实例化一个通知,指定图标、概要、时间
Notification n=new Notification(R.drawable.ic_launcher,"通知",System.currentTimeMillis());
//3.指定通知的标题、内容和intent
Intent intent = new Intent(this, MainActivity.class);
PendingIntent pi= PendingIntent.getActivity(this, 0, intent, 0);
n.setLatestEventInfo(this, title, content, pi);
//指定声音
//n.defaults = Notification.DEFAULT_SOUND;
//4.发送通知
nm.notify(1, n);
}
}
//消息通知栏
//定义NotificationManager
String ns = Context.NOTIFICATION_SERVICE;
NotificationManager mNotificationManager = (NotificationManager) getSystemService(ns);
//定义通知栏展现的内容信息
int icon = R.drawable.icon;
CharSequence tickerText = "我的通知栏标题";
long when = System.currentTimeMillis();
Notification notification = new Notification(icon, tickerText, when);
//定义下拉通知栏时要展现的内容信息
Context context = getApplicationContext();
CharSequence contentTitle = "我的通知栏标展开标题";
CharSequence contentText = "我的通知栏展开详细内容";
Intent notificationIntent = new Intent(this, BootStartDemo.class);
PendingIntent contentIntent = PendingIntent.getActivity(this, 0,notificationIntent, 0);
notification.setLatestEventInfo(context, contentTitle, contentText,contentIntent);
//用mNotificationManager的notify方法通知用户生成标题栏消息通知
mNotificationManager.notify(1, notification);