我是靠谱客的博主 义气大地,最近开发中收集的这篇文章主要介绍解决StartForeground Bad Notification Error错误,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Android8.0的Notification添加了用户渠道,使得Android7.0的通知不在适配8.0。新设计让用户有了更多的自主选择权利,更人性化,应该及时学会新变化,跟上新内容。

错误信息

  • 今天打开Android studio,运行以前的音乐项目,当我在手机上进行调试的时候出现了如下错误:

  • 经过上网搜索,得知Android 8.0 对于Notification有了新的设计,具体原因见下图:

解决办法

  • 在Android8.0后 需要给notification设置一个channelid,这里有官方的代码。具体的做法就是创建一个NotificationChannel,修改后的代码如下:

  • 代码改动的地方有两处,下面是改动的代码:

···


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);
PendingIntent contentIntents = PendingIntent.getActivity(this, 0, intents, 0);
//新增setChannelId()方法--------------------------------------
mbuilder = new Notification.Builder(this).setChannelId(CHANNEL_ONE_ID);
mRemoteViews = new RemoteViews(getPackageName(), R.layout.notification);
mbuilder.setContent(mRemoteViews)
.setContentIntent(contentIntents)
.setSmallIcon(R.mipmap.music)
.setContentText(name);
mRemoteViews.setTextViewText(R.id.notification_name, musiclist.get(curposition).getTitle());
mRemoteViews.setTextViewText(R.id.notification_arti, musiclist.get(curposition).getArtist());
//为intent添加play属性
Intent intentnext = new Intent("next");
PendingIntent pintentnext = PendingIntent.getBroadcast(this, 0, intentnext, 0);
mRemoteViews.setOnClickPendingIntent(R.id.btn_custom_next, pintentnext);
Intent intentplay = new Intent("play");
PendingIntent pintentplay = PendingIntent.getBroadcast(this, 0, intentplay, 0);
mRemoteViews.setOnClickPendingIntent(R.id.btn_custom_play, pintentplay);
Intent intentpause = new Intent("pause");
PendingIntent pintentpause = PendingIntent.getBroadcast(this, 0, intentpause, 0);
mRemoteViews.setOnClickPendingIntent(R.id.btn_custom_pause, pintentpause);
Notification notify = mbuilder.build();
startForeground(1, notify);
}

···

最后

以上就是义气大地为你收集整理的解决StartForeground Bad Notification Error错误的全部内容,希望文章能够帮你解决解决StartForeground Bad Notification Error错误所遇到的程序开发问题。

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

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

评论列表共有 0 条评论

立即
投稿
返回
顶部