今天学习android的通知功能时,发现
new NotificationCompat.Builder(MainActivity.this)
并且运行app时,发现不能正常的出现通知效果,反而报错
经过在网上查询后,得知解决方法
Android O 版本后,该方法被以下方法取代:
NotificationCompat.Builder(Context context, String channelId)
修改后的代码,如下:
NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
Notification notification = new NotificationCompat.Builder(MainActivity.this, "001")
.setContentTitle("This is content title")
.setContentText("This is content text")
.setWhen(System.currentTimeMillis())
.setSmallIcon(R.mipmap.ic_launcher)
.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher))
.build();
notificationManager.notify(1, notification);
其中,第一个参数是context,第二个参数代表channelId。此时,——没有了,但是运行app时,依旧报错。
后来发现,是因为我没有创建channel,最终代码如下:
NotificationChannel notificationChannel = null;
NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
notificationChannel = new NotificationChannel("001", "channel_name", NotificationManager.IMPORTANCE_HIGH);
notificationManager.createNotificationChannel(notificationChannel);
}
Notification notification = new NotificationCompat.Builder(MainActivity.this, "001")
.setContentTitle("This is content title")
.setContentText("This is content text")
.setWhen(System.currentTimeMillis())
.setSmallIcon(R.mipmap.ic_launcher)
.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher))
.build();
notificationManager.notify(1, notification);
最后,app运行正常