- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用下面的代码在我的应用中创建一个通知媒体 Controller ,该代码在除 华为 P8 Lite 和 Android 5.0 之外的所有设备上都能正常工作,我从 Firebase 测试实验室获取此错误日志:
android.app.RemoteServiceException: Bad notification posted from package maa.app_app: Couldn't expand RemoteViews for: StatusBarNotification(pkg=maa.app_app user=UserHandle{0} id=555 tag=null score=10 key=0|maa.app_app|555|null|10108: Notification(pri=1 contentView=maa.app_app/0x109007f vibrate=null sound=null defaults=0x0 flags=0x62 color=0xffbfbfbf category=transport actions=2 vis=PUBLIC)) FATAL EXCEPTION: main Process: maa.app_app, PID: 18793 android.app.RemoteServiceException: Bad notification posted from package maa.app_app: Couldn't expand RemoteViews for: StatusBarNotification(pkg=maa.app_app user=UserHandle{0} id=555 tag=null score=10 key=0|maa.app_app|555|null|10108: Notification(pri=1 contentView=maa.app_app/0x109007f vibrate=null sound=null defaults=0x0 flags=0x62 color=0xffbfbfbf category=transport actions=2 vis=PUBLIC)) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1534) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5538) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:960) at 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());
}
谁能帮我解决这个问题
最佳答案
出于某种原因,Android 5.0 的华为设备在使用 .setStyle()
方法时会崩溃,因此您有两种可能性:
1 - 检测设备是否为华为制造,是否为 Android 5.0 或更低版本
public boolean isLolliPopHuawei() {
return (android.os.Build.VERSION.SDK_INT == Build.VERSION_CODES.LOLLIPOP_MR1 ||
android.os.Build.VERSION.SDK_INT == Build.VERSION_CODES.LOLLIPOP) && Build.MANUFACTURER.equalsIgnoreCase("HUAWEI");
}
2 - 使用 PlayerNotificationManager
代替
void exoPlayerNotification(Context context, SimpleExoPlayer exoPlayer, 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);
}
String finalArtist = artist;
String finalTitlesonge = titlesonge;
mPlayerNotificationManager = PlayerNotificationManager.createWithNotificationChannel(
context,
"PRIMARY_CHANNEL_ID",
R.string.plaza,
NOTIFICATION_ID,
new PlayerNotificationManager.MediaDescriptionAdapter() {
@Override
public String getCurrentContentTitle(Player player) {
return finalArtist;
}
@Nullable
@Override
public PendingIntent createCurrentContentIntent(Player player) {
Intent intent = new Intent(service, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
return PendingIntent.getActivity(service, 0, intent,
PendingIntent.FLAG_UPDATE_CURRENT);
}
@Override
public String getCurrentContentText(Player player) {
return finalTitlesonge;
}
@Nullable
@Override
public Bitmap getCurrentLargeIcon(Player player, PlayerNotificationManager.BitmapCallback callback) {
return BitmapFactory.decodeResource(service.getResources(), R.drawable.largeicon);
}
@Nullable
@Override
public String getCurrentSubText(Player player) {
return null;
}
}
);
mPlayerNotificationManager.setUseNavigationActions(false);
mPlayerNotificationManager.setFastForwardIncrementMs(0);
mPlayerNotificationManager.setRewindIncrementMs(0);
mPlayerNotificationManager.setColorized(true);
mPlayerNotificationManager.setColor(0xFFEEEEEE);
mPlayerNotificationManager.setUseChronometer(true);
mPlayerNotificationManager.setOngoing(true);
mPlayerNotificationManager.setPriority(NotificationCompat.PRIORITY_MAX);
mPlayerNotificationManager.setUsePlayPauseActions(true);
mPlayerNotificationManager.setSmallIcon(R.drawable.smallwidth);
mPlayerNotificationManager.setNotificationListener(new PlayerNotificationManager.NotificationListener() {
@Override
public void onNotificationStarted(int notificationId, Notification notification) {
service.startForeground(notificationId, notification);
}
@Override
public void onNotificationCancelled(int notificationId) {
service.stopSelf();
cancelNotify();
}
});
mPlayerNotificationManager.setPlayer(exoPlayer);
}
关于java - 媒体样式 : RemoteServiceException: Bad notification posted from package,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56159347/
我在 Google 的 Play Store 上有一个应用程序,最近我更新了该应用程序。 当我测试时,一切都很好,但某些设备 API 28 及更高版本在 Android Vitals 中显示此崩溃。
我们有很多针对运行 Android 6 和 7 的小米手机的崩溃: Fatal Exception: android.app.RemoteServiceException: Bad notificat
我收到 RemoteServiceException。如果我只是在 Activity 的 onResume() 中调用以下内容,就会发生这种情况: NotificationManager mNoti
背景 我有一个业余时间开发的应用程序(here),我尝试尽可能多地处理崩溃(我讨厌看到崩溃报告!)。 问题 最近的一次崩溃似乎很新,是这个: android.app.RemoteServiceExce
有时我的应用程序会遇到这种异常: Fatal Exception: android.app.RemoteServiceException: Bad notification posted from p
在没有任何明显原因的情况下,搭载 Android 11 的小米手机开始出现在 crashlytics 日志中。通知发生了一些事情。我们不会做任何太具体的事情,并且在其他 Android 11 设备上一
我开始收到来自运行 Android 11 的 MIUI 11 设备的奇怪崩溃(到目前为止只有 Mi 10 和 Mi 10 lite 5G)。我认为这是一个平台问题,在我的应用程序中没有任何内容,因为它
我有一个 android.app.RemoteServiceException (RSE) 但没有任何消息。 我在 Google Play 控制台上收到以下崩溃报告。当我因通知或广播错误而收到 RSE
我在 Play 商店中有一个应用程序,我会定期使用 android 工具更新和依赖项更新对其进行更新,仅此而已。我只是确保它可以编译并使用最新的 Android 平台和支持库。 我不添加任何功能或任何
我从 Device Monitor 得到以下异常输出: //FATAL EXCEPTION: main //Process: com.xxx.yyy, PID: 11584 //android.app
我正在尝试使用下面的代码在我的应用中创建一个通知媒体 Controller ,该代码在除 华为 P8 Lite 和 Android 5.0 之外的所有设备上都能正常工作,我从 Firebase 测试实
我正在尝试启动前台服务,如下所示: if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { NotificationChannel chan
我尝试使用下面的代码在我的应用中创建一个通知媒体 Controller ,该代码在除 华为 P8 Lite 和 Android 5.0 之外的所有设备上都能正常工作,我从 Firebase 测试实验室
我在 Android 8.0 和 Android 7.x 中都通过 Fabric.io 收到了这个错误报告。 由于不仅仅是特定类失败,我不知道如何处理它们。 如果你有任何想法,请帮助我。 最佳答案 在
我的真实用户在 Crashlytics 上发布了数百次此异常,而且我无法在 5 种不同的设备上重现一次 崩溃日志 Fatal Exception: android.app.RemoteServiceE
我在崩溃日志中看到以下异常: android.app.RemoteServiceException: Bad notification posted from package com.my.packa
我在 Android 中发出此类通知,但不知何故收到以下类型的异常。请帮我解决这个问题。我为 Root View 使用了 64dp 的高度,这是通知的自定义 View 。然后使用 notificati
android.app.RemoteServiceException: Bad notification for startForeground: java.util.ConcurrentModifi
我在崩溃日志中看到以下异常: android.app.RemoteServiceException: Bad notification posted from package com.my.packa
我在运行 Android 5.1 的特定华为设备 (HUAWEI TIT-L01) 上发生崩溃 我使用 Google 找不到很多信息 堆栈跟踪: android.app.RemoteServiceEx
我是一名优秀的程序员,十分优秀!