关于developer warning for xxx failed to post notification on channel null

这是因为Android8.0之后启动后台服务的更改导致的。

嗯,不啰嗦了,直接贴完整代码吧。

// 这里是适配8.0之后如何启动后台服务
Intent intent = new Intent(context, MyService.class);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { 
   context.startForegroundService(intent);
}else { 
   context.startService(intent);
}
复制代码

下面是service中需要添加的代码,在onStartCommand的回调中添加的


        NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);

        Notification notification;
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            //当sdk版本大于26
            String id = "MyService";
            String description = "my-service";
            int importance = NotificationManager.IMPORTANCE_LOW;
            NotificationChannel channel = new NotificationChannel(id, description, importance);
            manager.createNotificationChannel(channel);
            notification = new Notification.Builder(this, id)
                    .setCategory(Notification.CATEGORY_MESSAGE)
                    // 这个icon不管用不用必须加!!!!!
                    .setSmallIcon(R.drawable.ic_launcher)
                    .setAutoCancel(true)
                    .build();
            manager.notify(1, notification);
        } else {
            //当sdk版本小于26
            notification = new NotificationCompat.Builder(this)
                    // 这个icon不管用不用必须加!!!!!
                    .setSmallIcon(R.drawable.ic_launcher)
                    .build();
            manager.notify(1, notification);
        }

        startForeground(888, notification);

复制代码

转载于:https://juejin.im/post/5c9dd0c26fb9a05e1320f66d

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值