Android 通知(使用NotificationCompat.Builder )
2017-09-07 14:57
495 查看
以下内容包括创建、更新、撤销通知和悬浮窗型通知。本文适用于android 8.0之下情况,android 8.0需要为通知添加渠道,可以参考我的这篇:Android 8.0 通知显示,本文代码所有通知都没有添加渠道。
Android 的通知,之前的写法是用Notification notification=new Notification (……)。这种方法已经被弃用。还有一些实现方法总是包含一些建议不再使用的方法或变量,的下面讲述的是,支持Android 3.0及其以上的通知使用方法(不使用那些弃用的方法):使用NotificationCompat.Builder。实现点击通知,进入活动,同时通知消失,并且不会让该活动之前的活动出栈,若本活动已经创建,将不会重新创建活动。实现的效果:点击通知,相当于从系统主页,直接点击应用图标进入应用的相应活动。
java代码:
全局变量:
在onCreate中初始化NotificationManager:
在需要出现通知的地方写下如下代码,注意,如果需要选择导入,均导入的是用版本 4 支持库中的类。
在通知要跳转到的活动的注册的地方加一句:
![](https://img-blog.csdn.net/20170907145031932?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHR3aHR3MTIz/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
与状态栏的通知的唯一区别是加了下面一句:
下面是比较完整的代码,写在之前定义的活动里,需要浮动通知的地方:
Android 的通知,之前的写法是用Notification notification=new Notification (……)。这种方法已经被弃用。还有一些实现方法总是包含一些建议不再使用的方法或变量,的下面讲述的是,支持Android 3.0及其以上的通知使用方法(不使用那些弃用的方法):使用NotificationCompat.Builder。实现点击通知,进入活动,同时通知消失,并且不会让该活动之前的活动出栈,若本活动已经创建,将不会重新创建活动。实现的效果:点击通知,相当于从系统主页,直接点击应用图标进入应用的相应活动。
1.创建或者更新一个通知
要求点击通知后进入活动,同时通知消失,不会让之前的活动出栈,若已有该活动则,不再销毁原活动后重新创建活动。如果没有就创建,如果有就更新指定id的通知。效果如下(在真机测试时,图标是彩色的,这里应该是因为没有使用Material Design):在其他界面点击通知 | 在通知跳转界面点击通知 |
---|---|
全局变量:
NotificationManager mNotificationManager; int notificationId=0;//通知的id
在onCreate中初始化NotificationManager:
mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
在需要出现通知的地方写下如下代码,注意,如果需要选择导入,均导入的是用版本 4 支持库中的类。
NotificationCompat.Builder builder = new NotificationCompat.Builder(this) .setSmallIcon(R.mipmap.ic_launcher)//左部图标 .setContentTitle("通知标题")//上部标题 .setContentText("通知内容")//中部通知内容 .setAutoCancel(true);//点击通知后自动消失 builder.setDefaults(Notification.DEFAULT_ALL);//通知的声音震动等都随系统 //也可以选择使用声音文件,这里的文件是res/raw/miui_notice.mp3 // Uri uri=Uri.parse("android.resource://"+getPackageName()+"/"+R.raw.miui_notice); // builder.setSound(uri); Intent resultIntent = new Intent(this, Main2Activity.class);//点击通知后进入的活动 //这两句非常重要,使之前的活动不出栈 resultIntent.setAction(Intent.ACTION_MAIN); resultIntent.addCategory(Intent.CATEGORY_LAUNCHER); PendingIntent resultPendingIntent = PendingIntent.getActivity(this, 0, resultIntent, PendingIntent.FLAG_UPDATE_CURRENT);//允许更新 builder.setContentIntent(resultPendingIntent); //如果没有就创建,如果有就更新, //第一个参数是设置创建通知的id或者需要更新通知的id mNotificationManager.notify(notificationId, builder.build());
在通知要跳转到的活动的注册的地方加一句:
android:launchMode="singleTask"
2.撤销通知
撤销指定id的通知,或本应用发出的所有通知。:mNotificationManager.cancel(notificationId);//撤销指定id通知 //mNotificationManager.cancelAll();//撤销本程序发出的全部通知
3.浮动通知(弹窗式通知)
像悬浮窗一样的通知,悬浮在屏幕上部,效果如下:与状态栏的通知的唯一区别是加了下面一句:
builder.setFullScreenIntent(resultPendingIntent,true);
下面是比较完整的代码,写在之前定义的活动里,需要浮动通知的地方:
NotificationCompat.Builder builder = new NotificationCompat.Builder(this) .setSmallIcon(R.mipmap.ic_launcher)//左部图标 .setContentTitle("通知标题")//上部标题 .setContentText("点击前往第二界面")//中部通知内容 .setAutoCancel(true);//点击通知后自动消失 Intent resultIntent = new Intent(this, Main2Activity.class); resultIntent.setAction(Intent.ACTION_MAIN); resultIntent.addCategory(Intent.CATEGORY_LAUNCHER); PendingIntent resultPendingIntent = PendingIntent.getActivity(this, 0, resultIntent, PendingIntent.FLAG_UPDATE_CURRENT); //building the notification builder.setContentIntent(resultPendingIntent); //更新或创建通知,并注明通知的id //下面一句是悬浮通知与一般通知的唯一区别 builder.setFullScreenIntent(resultPendingIntent,true); mNotificationManager.notify(notificationId, builder.build());
相关文章推荐
- android NotificationCompat.Builder 使用
- 使用NotificationCompat.Builder创建通知和自定义通知
- android NotificationCompat.Builder 使用
- Android开发——Notification通知的使用及NotificationCopat.Builder常用设置API
- 在 Xamarin.Android 中使用 Notification.Builder 构建通知
- Android v4包使用NotificationCompat.Builder 遇到undefined的问题
- Android-通知Notification、Notification.Builder和NotificationCompat.Builder兼容
- android通知的使用——Notification
- android中通知栏notification的使用
- 用NotificationCompat.Builder创建一个带进度的通知
- 使用android push notification service 实现即时通知
- Android中通知(Notification)的简单使用
- Android中通知的使用-----Notification详解
- Android中通知的使用-----Notification详解
- Android 音乐播放器的开发教程(十)通知栏Notification的使用 ----- 小达
- Android中通知的使用-----Notification详解
- Android Notification 使用详解之三:通过服务更新进度通知&在Activity中监听服务进度
- Android中使用Notification并通过点击Notification启动启动通知详细Activity,点击返回键和按钮返回主界面
- Android Notification使用系统通知栏布局出现的图标问题
- Android Notification 使用详解之二:可更新进度的通知