builder.setSmallIcon(R.drawable.ic_launcher);//图标
builder.setContentTitle("标题");//标题
builder.setContentText("内容");
1,创建一个Builder的对象,是在Notification的内部类 而不是在Dialog的内部类
Notification. Builder builder=new Notification.Builder(Content);
Content,是一个上下文对象
2,得到builder的实例后,设置通知的必要属性
builder.setSmallIcon(R.drawable.ic_launcher);//图标
builder.setContentTitle("标题");//标题
builder.setContentText("内容");
3.通过系统服务得到通知的管理者,
NotificationManager manager= (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
Context.NOTIFICATION_SERVICE :为上下文的一个常量,也可以说是一个标记
notify()有一个有两个参数的重载,第一个参数为int id即消息的ID,第一个参数为消息的实例
二,//大视图通知
public void OnclickBtn2(View v){
//创建消息对象
NotificationCompat.Builder builder = new NotificationCompat.Builder(MainActivity.this);
//必有属性
builder.setSmallIcon(R.drawable.ic_launcher);//图标
builder.setContentTitle("标题");//标题
builder.setContentText("内容");//内容
//样式
NotificationCompat.InboxStyle style = new NotificationCompat.InboxStyle();
style.addLine("123");
style.addLine("456");
style.addLine("789");
style.addLine("jqk");
builder.setStyle(style);
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
//延迟意图 只有点击通知的时候 intent才会被触发
PendingIntent pendingIntent = PendingIntent.getActivity(MainActivity.this, 1, intent, PendingIntent.FLAG_ONE_SHOT);
//将延迟意图放到通知中
builder.setContentIntent(pendingIntent);
//得到通知的管理者对象 通过系统服务获取的
NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
//通过管理者发送消息 参数1 消息的id 参数2:消息对象
manager.notify(1, builder.build());
}
三 //带进度条的通知
public void OnclickBtn3(View v){
//创建消息对象
final NotificationCompat.Builder builder = new NotificationCompat.Builder(MainActivity.this);
//必有属性
builder.setSmallIcon(R.drawable.ic_launcher);//图标
builder.setContentTitle("标题");//标题
builder.setContentText("内容");//内容
//得到通知的管理者对象 通过系统服务获取的
final NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
//模仿 下载
new Thread(){
@Override
public void run() {
// TODO Auto-generated method stub
super.run();
for(int i=0;i<100;i+=5){
/*
*
* 参数1:最大的进度
* 参数2:当前的进度
* 参数3:标志通知的样式 有没有明确的进度 false:有明确的进度 true :不明确的进度
*/
builder.setProgress(100, i, true);
manager.notify(2, builder.build());
try {
Thread.sleep(500);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
builder.setContentText("下载完成");
manager.notify(2, builder.build());
}
}.start();
}
四/**
* 自定义的通知
* @param v
*/
public void OnclickBtn4(View v){
//创建消息对象
NotificationCompat.Builder builder = new NotificationCompat.Builder(MainActivity.this);
//必有属性
builder.setSmallIcon(R.drawable.ic_launcher);//图标
builder.setContentTitle("标题");//标题
//将xml布局转换成RemoteViews
RemoteViews rv = new RemoteViews(getPackageName(), R.layout.item);
rv.setTextViewText(R.id.tv1, "标题");
rv.setTextViewText(R.id.tv2, "内容");
rv.setImageViewResource(R.id.iv, R.drawable.ic_launcher);
builder.setContent(rv);
//得到通知的管理者对象 通过系统服务获取的
NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
//通过管理者发送消息 参数1 消息的id 参数2:消息对象
manager.notify(3, builder.build());
}
五,当点击通知的时候,PendingIntent(延迟意图),启动并跳转到另一个新的页面,这时,通知应该被销毁
public class SecondActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.layout);
NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
//取消固定id的通知
//manager.cancel(1);
manager.cancelAll();//将所有的通知全部取消
}
}