android 8.0 Notification 的处理

android8.0后,对通知增加了渠道的概念,传统的创建Notification广播已经无法使用了,我们先看看8.0以下的Notification是如何使用的。

mNotificationManager = (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationBuilder =new Notification.Builder(mContext);
mNotificationBuilder
        .setContentIntent(isFinished() ? contentIndent : null)
        .setSmallIcon(R.drawable.com_upgradeview2_app_icon)
        .setWhen(System.currentTimeMillis())
        .setAutoCancel(true);
mNotificationManager.notify(UpgradeManager.UPGRADE_NOTIFICATION_ID, mNotification);

但是8.0后其实吹牛逼的渠道,只是在实例化对象的时候,增加一个渠道的id而已,如下,让我们看下:

NotificationChannel channel2 = new NotificationChannel("1","Channel", NotificationManager.IMPORTANCE_DEFAULT);
mNotificationManager.createNotificationChannel(channel2);
mNotificationBuilder =new Notification.Builder(mContext,"1");
mNotificationBuilder
        .setContentIntent(isFinished() ? contentIndent : null)
        .setSmallIcon(R.drawable.com_upgradeview2_app_icon)
        .setWhen(System.currentTimeMillis())
        .setAutoCancel(true);
mNotificationManager.notify(UpgradeManager.UPGRADE_NOTIFICATION_ID, mNotification);

发现没有,我标黄的地方就是不同的地方。

也就是说8.0以后:

1)创建一个Notification的时候需要在构造函数中多添加一个渠道id的参数

2)创建一个NotificationChannel 对象,然后将对象跟NotificationManger进行关联

3)保证NotificationChannel创建的通道id和创建Notification时通道id是一样的



你可能感兴趣的:(android)