我是靠谱客的博主 忧心荔枝,这篇文章主要介绍Notification.Builder() Android 8.0报过时错误Notification,现在分享给大家,希望可以做个参考。

Notification

通知(Notification)是Android系统中比较有特色的一个功能,当某个应用程序希望用户发出一些提示信息,而该应用又不在前台运行时,就可以借助通知来实现。

Notification8.0以前的基本用法

在Android8.0以前你可能创建的一个Notification是这样的:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
/* 首先需要一个NotificationManager来对通知进行管理 调用Context的getSystemService()方法获取到。 getSystemService()方法接受的一个字符串参数用于确定系统的的哪一个服务。 */ NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); /* 使用Builder构造器来创建Notification对象 */ Notification notification = new NotificationCompat.Builder(MainActivity.this,id) //指定通知的标题内容 .setContentTitle("This is content title") //设置通知的内容 .setContentText("This is content text") //指定通知被创建的时间 .setWhen(System.currentTimeMillis()) //设置通知的小图标 .setSmallIcon(R.drawable.ic_launcher_foreground) //设置通知的大图标 .setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher_background)) //添加点击跳转通知跳转 .setContentIntent(pendingIntent) //实现点击跳转后关闭通知 .setAutoCancel(true) .build(); /* 调用NotificationManager的notify()方法将通知显示出来 传入的第一个参数是通知的id 传入的第二个参数是notification对象 */ notificationManager.notify(1,notification);

Notification8.0以前的方法在在8.0中实现时出现的状况

出现这样的原因是Budlier()方法中添加一个参数:

第一个参数是上下文对象

第二个参数是通知渠道的代码

public Builder(@NonNull Context context, @NonNull String channelId)

你可能会不定义它使用default去实现它。像这样:

 

你会发现它没有报错了,你以为它可以实现了。但是当你去运行它的时候,它会会给你个这样的提示:

Notification8.0中的基本用法

Android O 引入了 通知渠道(Notification Channels),以提供统一的系统来帮助用户管理通知,如果是针对 android O 为目标平台时,必须实现一个或者多个通知渠道,以向用户显示通知。

因此你必须去实现一个通知渠道:

复制代码
1
2
3
4
5
6
7
/* 首先需要一个NotificationManager来对通知进行管理 调用Context的getSystemService()方法获取到。 getSystemService()方法接受的一个字符串参数用于确定系统的的哪一个服务。 */ NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/* 调用NotificationChannel创建通知渠道实例 并为它设置属性 */ //通知渠道的ID String id = "channel_01"; //用户可以看到的通知渠道的名字 CharSequence name = getString(R.string.channel_name); //用户可看到的通知描述 String description = getString(R.string.channel_description); //构建NotificationChannel实例 NotificationChannel notificationChannel = new NotificationChannel(id,name,NotificationManager.IMPORTANCE_HIGH); //配置通知渠道的属性 notificationChannel.setDescription(description); //设置通知出现时的闪光灯 notificationChannel.enableLights(true); notificationChannel.setLightColor(Color.RED); //设置通知出现时的震动 notificationChannel.enableVibration(true); notificationChannel.setVibrationPattern(new long[]{100,200,300,400,500,400,300,200,100}); //在notificationManager中创建通知渠道 notificationManager.createNotificationChannel(notificationChannel);
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Notification notification = new NotificationCompat.Builder(MainActivity.this,id) //指定通知的标题内容 .setContentTitle("This is content title") //设置通知的内容 .setContentText("This is content text") //指定通知被创建的时间 .setWhen(System.currentTimeMillis()) //设置通知的小图标 .setSmallIcon(R.drawable.ic_launcher_foreground) //设置通知的大图标 .setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher_background)) //添加点击跳转通知跳转 .setContentIntent(pendingIntent) //实现点击跳转后关闭通知 .setAutoCancel(true) .build(); /* 调用NotificationManager的notify()方法将通知显示出来 传入的第一个参数是通知的id 传入的第二个参数是notification对象 */ notificationManager.notify(1,notification);

并且将它的Id传入到Notification中:

你才能看到你的通知:

最后

以上就是忧心荔枝最近收集整理的关于Notification.Builder() Android 8.0报过时错误Notification的全部内容,更多相关Notification.Builder()内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(65)

评论列表共有 0 条评论

立即
投稿
返回
顶部