📚 开源资源分享——颜佐光的个人书架
✉️ 联系站长
书架 / Android / 安装

android 8.0 报错StartForeground Bad Notification Error 解决方法

2019-04-28 18:19 · 约 1,769 字 · 浏览 3,809 次 · 更新 2020-05-15 15:19安装

今天升级了android8.0 并且在一个8.0的系统上运行,居然报错了。报错日志就是标题这个了
也就是使用startForeground方法开启通知的时候报错的
在android8.0后 需要给notification设置一个channelid不要问我为什么 解决方法如下

//新增 start ---------------------------------------------
 String CHANNEL_ONE_ID = "com.primedu.cn";
        String CHANNEL_ONE_NAME = "Channel One";
        NotificationChannel notificationChannel = null;
        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
            notificationChannel = new NotificationChannel(CHANNEL_ONE_ID,
                    CHANNEL_ONE_NAME, NotificationManager.IMPORTANCE_HIGH);
            notificationChannel.enableLights(true);
            notificationChannel.setLightColor(Color.RED);
            notificationChannel.setShowBadge(true);
            notificationChannel.setLockscreenVisibility(Notification.VISIBILITY_PUBLIC);
            NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
            manager.createNotificationChannel(notificationChannel);
        }
//--------------------------------------------------------新增 end

 PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, 0);
        notification = new Notification.Builder(this).setChannelId(CHANNEL_ONE_ID)
                .setTicker("Nature")
                .setSmallIcon(R.mipmap.ic_launcher)
                .setContentTitle("xxxx")
                .setContentText(musicList.size() > 0 && musicList != null ? musicList.get(currentMusic).radio_en_desc:"xxxxx")
                .setContentIntent(pendingIntent)
                .getNotification();
        notification.flags |= Notification.FLAG_NO_CLEAR;
        startForeground(1, notification);

我标记了一下哪些地方是新增的
同新增了一句.setChannelId(CHANNEL_ONE_ID)
就ok了,在运行就没问题了,通知正常开启

← 返回《Android》目录书架 →