Android中的通知栏
来源:互联网 发布:陕西广电网络官网 编辑:程序博客网 时间:2024/06/05 23:46
一、状态栏通知的要素
Android 6.0
二、发送一个简单的通知
public void simpleNotification(Context context) { NotificationCompat.Builder builder = new NotificationCompat.Builder(context); builder.setContentTitle("最简通知") .setContentText("这是通知内容") //smallicon 规范 target to Api 20+ 白色透明 .setSmallIcon(R.drawable.ic_status_bar_kitkat) notify(context, NOTIFY_ID_SIMPLE, builder.build()); }
//tag,通知ID的前缀,通常用于区分不同的模块//id,通知ID,与tag一起唯一标识通知 public void notify(String tag, int id, Notification notification)
三、更多配置项
1、大图标
2、时间
3、提醒:震动,提醒,呼吸灯。
NotificationCompat.Builder builder = new NotificationCompat.Builder(context); builder.setContentTitle("老王请求加好友") .setContentText("我是隔壁老王") .setSmallIcon(R.drawable.ic_status_bar_lollipop) .setLargeIcon(largeIcon)//设置大图标 .setDefaults(NotificationCompat.DEFAULT_ALL)//设置系统默认提醒 .setSound(Uri.parse("android:resource://" + context.getPackageName() + "/" + R.raw.msg))//设置声音 .setVibrate(new long[] {0, 500, 500, 500})//设置振动 .setLights(Color.BLUE, 200, 100)//设置呼吸灯
四、点击响应
响应Activity
Intent intent = new Intent(context, CalleeActivity.class); PendingIntent pending= PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); intent.putExtra(CalleeActivity.EXTRA_FROM, from); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); .setContentIntent(pending);
注:PendingIntent中的intent,不能使用intent.putExtra来区别,应该使用intent.setAction来区分不同的PendingIntent。
五、清除通知
Auto cancel
NotificationCompat.Builder.setAutoCancel(true)
Cancel
/** * 取消状态栏通知。 * @param context * @param id */ public void cancel(Context context, int id) { NotificationManagerCompat notifyMg = NotificationManagerCompat.from(context); notifyMg.cancel(id); }
六、保持提醒不被移除
NotificationCompat.Builder.setOngoing(true)
七、添加进度条
/** * 带进度条的状态栏通知。根据setProgress控制是否带有确切进度 * @param context */ public void progressNotification(Context context) { NotificationCompat.Builder builder = new NotificationCompat.Builder(context); builder.setContentTitle("文件名") .setContentText("文件下载url") .setSmallIcon(R.drawable.ic_status_bar_lollipop) .setProgress(100, 30, false) .setContentIntent(calleeActivityIntent(context, CalleeActivity.From.PROGRESS)); notify(context, NOTIFY_ID_PROGRESS, builder.build()); }
八、添加按钮
.addAction(R.drawable.accept, "接受", calleeServiceIntent(context, CalleeService.ACTION_ACCEPT, "接受")) .addAction(R.drawable.decline, "踢开他", calleeServiceIntent(context, CalleeService.ACTION_DECLINE, "拒绝"))
九、锁屏显示控制(默认显示)
NotificationCompat.Builder.setVisibility().setPublicVersion()
十、浮动通知
NotificationCompat.Builder.setPriority(NotificationCompat.PRIORITY_HIGH)//设置浮动通知
十一、长文本类型提醒
public void bigTextNotification(Context context) { android.support.v4.app.NotificationCompat.BigTextStyle style = new android.support.v4.app.NotificationCompat.BigTextStyle(); style.bigText("你好,我是隔壁老王。你好,我是隔壁老王。你好,我是隔壁老王。你好,我是隔壁老王。你好,我是隔壁老王。你好,我是隔壁老王。你好,我是隔壁老王。"); style.setSummaryText("OldKing@NextDoor"); NotificationCompat.Builder builder = new NotificationCompat.Builder(context); builder.setContentTitle("老王请求加好友") .setContentText("我是隔壁老王") .setSmallIcon(R.drawable.ic_status_bar_lollipop) .setLargeIcon(largeIcon) .setStyle(style); notify(context, NOTIFY_ID_BIG_TEXT, builder.build()); }
十二、媒体播放器
public void mediaNotification(Context context) { NotificationCompat.MediaStyle mediaStyle = new NotificationCompat.MediaStyle(); //收起时显示的按钮 mediaStyle.setShowActionsInCompactView(0, 1); NotificationCompat.Builder builder = new NotificationCompat.Builder(context); builder.setContentTitle("歌曲名") .setContentText("歌手名,专辑名") .setSmallIcon(R.drawable.ic_status_bar_lollipop) .setLargeIcon(largeIcon) .setStyle(mediaStyle) .addAction(R.drawable.ic_pause, "暂停", calleeServiceIntent(context, CalleeService.ACTION_PAUSE, "暂停")) .addAction(R.drawable.ic_play, "播放", calleeServiceIntent(context, CalleeService.ACTION_START, "播放")); notify(context, NOTIFY_ID_BIG_TEXT, builder.build()); }
十三、自定义通知栏
public void customNotification(Context context) { NotificationCompat.Builder builder = new NotificationCompat.Builder(context); RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.custom_notification); remoteViews.setTextViewText(R.id.tv_content, "自定义内容"); remoteViews.setImageViewResource(R.id.iv_close, R.drawable.decline); remoteViews.setOnClickPendingIntent(R.id.iv_close, calleeServiceIntent(context, CalleeService.ACTION_CLOSE, "close")); builder.setContent(remoteViews) .setSmallIcon(R.drawable.ic_status_bar_lollipop); notify(context, NOTIFY_ID_CUSTOM, builder.build()); }
0 0
- Android中的通知栏
- Android 点击通知栏中的通知启动应用
- Android通知栏通知
- android 中的通知
- Android中的通知Notification
- Android中的Notification(通知)
- Android中的消息通知
- Android中的通知Notification
- Android中的通知Notification
- android中的通知
- Android中的通知 --- Notification
- Android中的通知 Notification
- Android中的通知Notification
- android中的通知Notification
- Android中的通知Notification
- android中的通知Notification
- Android中的通知
- Android中的通知notification
- 线性规划与网络流24题之 圆桌问题
- 学习React Native必看的几个开源项目
- 深度学习几大难点
- Servlet跳转
- 关于Docker Registry v2的搭建
- Android中的通知栏
- Mysql存储过程简介与操作
- Cordova Android 插件开发(网络端(服务器)调用Android插件(java))
- IOS Implicit declaration of function 'xxxxxx ' is invalid in C99 错误
- SpringMVC 基础知识
- Spring scope 分类
- pthread线程同步机制
- win10+64bit+anaconda+theano 深度学习基本配置学习笔记
- php 之 创建永久二维码