我是靠谱客的博主 安静蜗牛,最近开发中收集的这篇文章主要介绍Android Crash:Bad notification for startForeground,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Android 8.0开始Notification 需要指定一个channel,当target大于26时,这个channel需要进行系统注册,否则会crash,crash信息如下:

android.app.RemoteServiceException: Bad notification for startForeground: java.lang.RuntimeException: invalid channel for service notification: Notification(channel=default pri=0 contentView=null vibrate=null sound=null defaults=0x0 flags=0x40 color=0x00000000 vis=PRIVATE)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1768)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6494)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)

修改方案

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
val channelId = "default"
val channel = NotificationChannel(channelId, channelId, NotificationManager.IMPORTANCE_DEFAULT)
val nm = service.getSystemService(Context.NOTIFICATION_SERVICE) as? NotificationManager
nm?.let {
if (it.getNotificationChannel(channelId) == null) {//没有创建
it.createNotificationChannel(channel)//则先创建
}
}
val notification: Notification
val builder = Notification.Builder(service, channelId)
.setContentTitle("")
.setContentText("")
notification = builder.build()
service.startForeground(FOREGROUND_SERVICE_NOTIFICATION_ID, notification)
}
private void createNotificationChannel(NotificationManager manager) {
if (manager.getNotificationChannel("default") == null) {
NotificationChannel notificationChannel =
new NotificationChannel("default",
"notification_channel",
NotificationManager.IMPORTANCE_LOW);
notificationChannel.setDescription(
"notification_channel_description");
manager.createNotificationChannel(notificationChannel);
}
}

 

最后

以上就是安静蜗牛为你收集整理的Android Crash:Bad notification for startForeground的全部内容,希望文章能够帮你解决Android Crash:Bad notification for startForeground所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部