Android状态栏提醒——Notification

来源:互联网 发布:mac office 2011 卸载 编辑:程序博客网 时间:2024/06/05 17:34
Notification是Android在状态栏出现的一个提醒功能
注意这个提醒是在桌面的进程中出现的
所以Android应用app产生Notification是进程间的通讯,这里需要调用另外一个进程的服务
>状态栏提醒,由systemui进程显示的提醒
>链式调用
Notification在3.0以后的高版本api后改变了使用的方式
//创建Builder对象
NotificationCompat.Builder builder=newNotificationCompat.Builder(MainActivity.this);
//进行相关设置
Bitmap bitmap =BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
//设置大图标
builder.setLargeIcon(bitmap);
//设置小图标
builder.setSmallIcon(R.drawable.emo_im_angel);
//设置内容标题
builder.setContentTitle("放假通知");
//设置内容文本
builder.setContentText("从明天开始,放假10天,是不可能的");
//设置时间
builder.setWhen(System.currentTimeMillis()+1000000);
//设置info
builder.setContentInfo("1");
//设置通知是否在点击执行延迟意图时自动消失
builder.setAutoCancel(true);
//天加延迟意图---》点击通知的时候,进入SecondActivity
Intent intent=newIntent();
intent.setClass(MainActivity.this,SecondActivity.class);
PendingIntent pIntent=PendingIntent.getActivity(MainActivity.this,15, intent,PendingIntent.FLAG_UPDATE_CURRENT);
//给通知添加延迟意图
builder.setContentIntent(pIntent);
//获取NotificationManager对象
manager=(NotificationManager) getSystemService(NOTIFICATION_SERVICE);
//发送通知 参数1通知id 参数2通知对象
manager.notify(10, builder.build());
}
/**取消通知的按钮的点击监听*/
publicvoid btnCancel(View view){
manager.cancel(10);
}

在低版本如2.3版本的使用,以及点击通知后的功能:
Notification notification =newNotification(R.drawable.ic_audio_notification,"哈哈,通知到来了",System.currentTimeMillis());
notification.flags =Notification.FLAG_AUTO_CANCEL;
//notification.sound =Uri.parse(uriString);
//五彩神灯 呼吸灯
notification.ledARGB =0xffffbb99;
notification.vibrate =newlong[]{100,200,100};
//设置通知对应的点击事件,进程间通讯,由另外一个应用程序执行的动作必须用PendingIntent 包装。
Intent intent =newIntent();
intent.setAction(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel://110"));
PendingIntent contentIntent =PendingIntent.getActivity(this,0, intent,PendingIntent.FLAG_UPDATE_CURRENT);
notification.setLatestEventInfo(this,"我是标题文本","我是标题的内容", contentIntent);
nm.notify(0, notification);

特别说明,关于Notification.Flag的解释:
notification1.flags =Notification.FLAG_NO_CLEAR;
表示Notification不可被清除
notification1.flags =Notification.FLAG_AUTO_CANCEL;
表示Notification自动取消
notification.sound =Uri.parse("");
指定一个声音路径URI
notification.vibrate =newlong[]{100,200,100};
设置通知到来的时候震动
其它的类型Notification

2.3设备必须设置setContentIntent

大视图通知:

三种样式:Inbox StyleBig picture styleBig Text Style

设置大视图样式:setStyle()

大视图样式类:Notification的内部类

 

Inbox Style

Notification.InboxStyle 

addLine(CharSequence cs) 

Notification.InboxStyle 

addLine(CharSequence cs) 

Notification.InboxStyle 

setSummaryText(CharSequence cs) 

构造方法:

Notification.InboxStyle() 

/** 按钮点击事件---》发送Inbox大视图通知 */
 
publicvoid btnClick(View view){
 
NotificationCompat.Builder builder =newNotificationCompat.Builder(
 
MainActivity.this);
 
// 设置
 
builder.setSmallIcon(R.drawable.ic_launcher);
 
builder.setContentTitle("通知");
 
builder.setContentText("震动/声音");
 
 
// 声音
 
// builder.setDefaults(Notification.DEFAULT_SOUND);
 
// 震动
 
builder.setDefaults(Notification.DEFAULT_VIBRATE);
 
 
// InboxStyle样式对象
 
NotificationCompat.InboxStyle inboxStyle =newNotificationCompat.InboxStyle();
 
inboxStyle.setBigContentTitle("InboxBig-ContentTile");
 
inboxStyle.setSummaryText("InboxBig-SummaryText");
 
 
for(int i =0; i <5; i++){
 
inboxStyle.addLine("第"+(i +1)+"项");
 
}
 
 
// 把Inbox样式设置给Builder
 
builder.setStyle(inboxStyle);
 
 
manager =(NotificationManager) getSystemService(NOTIFICATION_SERVICE);
 
manager.notify(10, builder.build());
 
}

BigPicture

Notification.BigPictureStyle 

bigLargeIcon(Bitmap b) //icon

Notification.BigPictureStyle 

bigPicture(Bitmap b) //大图片

Notification.BigPictureStyle 

setBigContentTitle(CharSequence title) 

Notification.BigPictureStyle 

setSummaryText(CharSequence cs) 

构造方法

Notification.BigPictureStyle() 

/** 按钮点击事件---》发送大图片视图通知 */
 
publicvoid btnBigPicture(View view){
 
NotificationCompat.Builder builder =newNotificationCompat.Builder(
 
MainActivity.this);
 
// 三项必设置
 
builder.setContentTitle("title");
 
builder.setContentText("contentText");
 
builder.setSmallIcon(R.drawable.ic_launcher);
 
 
// 大图片样式对象
 
NotificationCompat.BigPictureStyle bigPicture =newNotificationCompat.BigPictureStyle();
 
// //LargeIcon
 
// Bitmap bitmapL = BitmapFactory.decodeResource(getResources(),
 
// R.drawable.emo_im_money_mouth);
 
// Picture
 
Bitmap bitmapP =BitmapFactory.decodeResource(getResources(),
 
R.drawable.emo_im_angel);
 
 
// bigPicture.bigLargeIcon(bitmapL);
 
bigPicture.bigPicture(bitmapP);
 
 
bigPicture.setBigContentTitle("BigContentTitle");
 
bigPicture.setSummaryText("SummaryText");
 
 
// 设置大图片样式
 
builder.setStyle(bigPicture);
 
 
manager.notify(11, builder.build());
 
}

BigText

构造方法:

Notification.BigTextStyle() 

 

普通方法:

Notification.BigTextStyle 

bigText(CharSequence cs) 

Notification.BigTextStyle 

setBigContentTitle(CharSequence title) 

Notification.BigTextStyle 

setSummaryText(CharSequence cs) 

/** 按钮点击事件---》发送大文本视图通知 */
 
publicvoid btnBigTextClick(View view){
 
NotificationCompat.Builder builder =newNotificationCompat.Builder(
 
MainActivity.this);
 
// 三项必设置
 
// builder.setContentTitle("title");
 
builder.setContentText("contentText");
 
builder.setSmallIcon(R.drawable.ic_launcher);
 
 
// 大文本视图通知
 
NotificationCompat.BigTextStyle bigTextStyle =newNotificationCompat.BigTextStyle();
 
 
bigTextStyle
 
.bigText("钱钱钱钱钱钱钱钱钱钱钱钱钱钱钱钱钱钱钱钱钱钱钱钱钱钱钱钱钱钱钱钱钱钱钱钱钱钱呃呃呃呃呃呃呃呃呃呃呃呃呃呃呃呃呃呃呃烦烦烦烦烦烦烦烦烦烦烦烦烦烦烦烦烦烦烦水水水水水水水水水水水水水水水水水水哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈笑嘻嘻谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢");
 
 
bigTextStyle.setBigContentTitle("BigContentTitle");
 
bigTextStyle.setSummaryText("SummaryText");
 
 
// 设置样式
 
builder.setStyle(bigTextStyle);
 
 
Notification notification = builder.build();
 
//不被清除
 
notification.flags=Notification.FLAG_NO_CLEAR;
 
manager.notify(12, notification);
 
}
0 0
原创粉丝点击