我正在尝试使用下面的代码在我的应用程序中创建一个通知媒体控制器,该代码在所有设备上都可以正常工作华为 P8 Lite with 安卓5.0,我从 Firebase 测试实验室收到此错误日志:
android.app.RemoteServiceException:发布的错误通知
包 maa.app_app:无法扩展 RemoteViews:
StatusBarNotification(pkg=maa.app_app
用户=UserHandle{0} id=555 标签=空 分数=10
key=0|maa.app_app|555|null|10108:通知(pri=1
contentView=maa.app_app/0x109007f 振动=null
声音=null 默认=0x0 标志=0x62 颜色=0xffbfbfbf 类别=运输
actions=2 vis=PUBLIC)) 致命异常:主进程:
maa.app_app,PID:18793
android.app.RemoteServiceException:发布的错误通知
包 maa.app_app:无法扩展 RemoteViews:
StatusBarNotification(pkg=maa.app_app
用户=UserHandle{0} id=555 标签=空 分数=10
key=0|maa.app_app|555|null|10108:通知(pri=1
contentView=maa.app_app/0x109007f 振动=null
声音=null 默认=0x0 标志=0x62 颜色=0xffbfbfbf 类别=运输
行动=2 vis=PUBLIC)) 在
android.app.ActivityThread$H.handleMessage(ActivityThread.java:1534)
在 android.os.Handler.dispatchMessage(Handler.java:102) 处
android.os.Looper.loop(Looper.java:135) 位于
android.app.ActivityThread.main(ActivityThread.java:5538) 在
java.lang.reflect.Method.invoke(本机方法) at
java.lang.reflect.Method.invoke(Method.java:372) 在
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:960)
在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
这是我的代码:
void startNotify(Context context, String playbackStatus, String title) {
String titlesonge;
String artist;
try {
titlesonge = StringUtils.substringBefore(title, " - ");
artist = StringUtils.substringAfter(title, " - ");
} catch (Exception e) {
titlesonge = title.substring(0, title.indexOf(" - "));
artist = title.substring(title.lastIndexOf(" - ") - 1);
}
int icon = R.drawable.ic_pause_white;
Intent playbackAction = new Intent(service, RadioService.class);
playbackAction.setAction(RadioService.ACTION_PAUSE);
PendingIntent action = PendingIntent.getService(service, 1, playbackAction, 0);
if (playbackStatus.equals(PlaybackStatus.PAUSED)) {
icon = R.drawable.ic_play_white;
playbackAction.setAction(RadioService.ACTION_PLAY);
action = PendingIntent.getService(service, 2, playbackAction, 0);
}
Intent stopIntent = new Intent(service, RadioService.class);
stopIntent.setAction(RadioService.ACTION_STOP);
PendingIntent stopAction = PendingIntent.getService(service, 3, stopIntent, 0);
Intent intent = new Intent(service, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP |
Intent.FLAG_ACTIVITY_SINGLE_TOP |
Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent pendingIntent = PendingIntent.getActivity(service, 0, intent, 0);
notificationManager.cancel(NOTIFICATION_ID);
String PRIMARY_CHANNEL = "PRIMARY_CHANNEL_ID";
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
NotificationManager manager = (NotificationManager) service.getSystemService(Context.NOTIFICATION_SERVICE);
String PRIMARY_CHANNEL_NAME = "PRIMARY";
NotificationChannel channel = new NotificationChannel(PRIMARY_CHANNEL, PRIMARY_CHANNEL_NAME, NotificationManager.IMPORTANCE_LOW);
channel.setLockscreenVisibility(Notification.VISIBILITY_PRIVATE);
if (manager != null) {
manager.createNotificationChannel(channel);
}
}
NotificationCompat.Builder builder = new NotificationCompat.Builder(service, PRIMARY_CHANNEL)
.setAutoCancel(false)
.setContentTitle(titlesonge)
.setContentText(artist)
.setLargeIcon(BitmapFactory.decodeResource(resources, R.drawable.largeicon))
.setContentIntent(pendingIntent)
.setVisibility(NotificationCompat.VISIBILITY_PUBLIC)
.setSmallIcon(R.drawable.smallwidth)
.setColor(ContextCompat.getColor(context, R.color.colorneeded))
.addAction(icon, "pause", action)
.addAction(R.drawable.ic_stop_white, "stop", stopAction)
.setPriority(NotificationCompat.PRIORITY_HIGH)
.setWhen(System.currentTimeMillis())
.setStyle(new android.support.v4.media.app.NotificationCompat.MediaStyle()
.setMediaSession(service.getMediaSession().getSessionToken())
.setShowActionsInCompactView(0, 1)
.setShowCancelButton(true)
.setCancelButtonIntent(stopAction));
service.startForeground(NOTIFICATION_ID, builder.build());
}
谁能帮我解决这个问题