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);//设置infobuilder.setContentInfo("1");//设置通知是否在点击执行延迟意图时自动消失builder.setAutoCancel(true);//天加延迟意图---》点击通知的时候,进入SecondActivityIntent 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 Style、Big picture style、Big Text Style
设置大视图样式:setStyle()
大视图样式类:Notification的内部类
Inbox Style:
| addLine(CharSequence cs) | |
| addLine(CharSequence cs) | |
构造方法:
/** 按钮点击事件---》发送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样式设置给Builderbuilder.setStyle(inboxStyle);manager =(NotificationManager) getSystemService(NOTIFICATION_SERVICE);manager.notify(10, builder.build());}
BigPicture
| bigLargeIcon(Bitmap b) //icon | |
| bigPicture(Bitmap b) //大图片 | |
| setBigContentTitle(CharSequence title) | |
构造方法
/** 按钮点击事件---》发送大图片视图通知 */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);// PictureBitmap 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:
构造方法:
普通方法:
| bigText(CharSequence cs) | |
| setBigContentTitle(CharSequence title) | |
/** 按钮点击事件---》发送大文本视图通知 */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);}
本文详细介绍了Android应用中使用Notification进行状态栏提醒的功能,包括如何创建Builder对象、设置大图标、小图标、内容标题、内容文本、时间、信息、通知自动消失、延迟意图、以及低版本使用的不同方式。同时,展示了如何通过Notification实现大视图通知的三种样式:Inbox Style、Big Picture Style、Big Text Style,并提供了相应的代码示例。
950

被折叠的 条评论
为什么被折叠?



