gpt4 book ai didi

java - 无法展开 RemoteViews - 错误通知

转载 作者:太空狗 更新时间:2023-10-29 22:58:26 25 4
gpt4 key购买 nike

最近我收到了越来越多的用户报告 RemoteServiceException 错误。我每次得到的堆栈跟踪如下:

android.app.RemoteServiceException: Bad notification posted from package com.smithyproductions.fasttracks: Couldn't expand RemoteViews for: StatusBarNotification(pkg=com.smithyproductions.fasttracks id=311095 tag=null score=0 notn=Notification(pri=0 contentView=com.smithyproductions.fasttracks/0x7f03007d vibrate=null sound=null defaults=0x0 flags=0x62 kind=[null]) user=UserHandle{0})
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1523)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:153)
at android.app.ActivityThread.main(ActivityThread.java:5341)
at java.lang.reflect.Method.invokeNative(Method.java)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:929)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:696)
at dalvik.system.NativeStart.main(NativeStart.java)

我自己似乎永远无法在 HTC Sensation 或 HTC One X 上重现该问题,这让我相信它可能是特定于设备的。我从以下设备收到了有关此错误的报告:

  • 华为G610 U15
  • bq Aquaris 5 HD
  • Enspert 阶梯
  • JYT JY-G5

...而且他们都在运行 Android 4.2.1 - 也许那个版本的 Android 有错误?

我已经在互联网和 StackOverflow 上搜索过有类似问题的人,虽然大多数时候有很多人遇到这个问题,但他们无法正常工作的原因是资源 ID 不正确或使用不受支持的RemoteViews 中的 View 。我不明白如果它能在 98% 的设备上运行,我怎么可能做错了,但我不想告诉这些人我也无能为力。

就我创建通知的方式而言,我使用 NotificationCompat.Builder 类和自定义 RemoteViews - 本质上它是一个音乐播放器通知,所以它上面也有一些 ImageButtons。

这是我设置通知的代码:

PendingIntent pi = PendingIntent.getActivity(
getApplicationContext(), 0, new Intent(getApplicationContext(), Showcase.class),
PendingIntent.FLAG_UPDATE_CURRENT);

RemoteViews smallContentView = new RemoteViews(getPackageName(),
R.layout.notif_layout);

nowPlayingNotification = new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.notification_icon)
.setContentTitle(
"Playing: "
+ playbackManager.getCurrentTrack()
.getName()).setContentIntent(pi)
.setOngoing(true)
.setWhen(System.currentTimeMillis())
.setContent(smallContentView).build();

然后我为 RemoteViews 按钮设置所有回调:

Intent playIntent = new Intent(this, RemoteControlReceiver.class);
playIntent.setAction(ACTION_TOGGLE_PLAYBACK);
PendingIntent playPausePendingIntent = PendingIntent.getBroadcast(this,
0, playIntent, 0);

Intent nextIntent = new Intent(this, RemoteControlReceiver.class);
nextIntent.setAction(ACTION_SKIP);
PendingIntent nextPendingIntent = PendingIntent.getBroadcast(this, 0,
nextIntent, 0);

Intent stopIntent = new Intent(this, RemoteControlReceiver.class);
stopIntent.setAction(ACTION_STOP);
PendingIntent stopPendingIntent = PendingIntent.getBroadcast(this, 0,
stopIntent, 0);

nowPlayingNotification.contentView.setTextViewText(R.id.title,
playbackManager.getCurrentTrack().getName());

nowPlayingNotification.contentView.setProgressBar(
android.R.id.progress, 100, mediaProgress, false);

if (notificationIconMixBitmap != null)
nowPlayingNotification.contentView.setImageViewBitmap(R.id.icon,
notificationIconMixBitmap);
else {
nowPlayingNotification.contentView.setImageViewResource(R.id.icon,
R.drawable.notification_icon);

}

nowPlayingNotification.contentView.setOnClickPendingIntent(
R.id.playPause, playPausePendingIntent);

if (playbackManager.getCurrentPlaybackState() == State.Paused) {
nowPlayingNotification.contentView.setImageViewResource(
R.id.playPause, R.drawable.play_icon_solid);
} else {
nowPlayingNotification.contentView.setImageViewResource(
R.id.playPause, R.drawable.pause_icon_solid);
}

if (!playbackManager.isSkipAllowed()) {
nowPlayingNotification.contentView.setImageViewResource(R.id.next,
R.drawable.next_icon_disabled);
} else {
nowPlayingNotification.contentView.setImageViewResource(R.id.next,
R.drawable.next_icon_solid);
}

if (playbackManager.getCurrentPlaybackState() == State.Preparing) {
nowPlayingNotification.contentView.setProgressBar(
android.R.id.progress, 100, mediaProgress, true);
}

nowPlayingNotification.contentView.setOnClickPendingIntent(R.id.next,
nextPendingIntent);
nowPlayingNotification.contentView.setOnClickPendingIntent(R.id.close,
stopPendingIntent);

其次是

mNotificationManager.notify(NOTIFICATION_ID, nowPlayingNotification);

如果有人知道任何可以提供帮助的信息,也许是 4.2.1 中公认的错误,我们将不胜感激!谢谢

最佳答案

我在我的构建中看到了类似的问题 - 只有 Kitkat 设备大量抛出这些问题 - Android 操作系统版本:4.4.4、4.4.2、4.2.2、4.0.4

通过更改 Notification 使用的 drawable 修复。

.addAction(R.drawable.ic_forward_black_24dp, VIEW_ACTION, pendingIntentView);

我们停止使用 vector 资源并开始使用图像资源。

R.drawable.ic_forward_black_24dp 不再使用 xml 文件( vector 资源),我们现在使用 png 文件(图像资源)。

关于java - 无法展开 RemoteViews - 错误通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22614912/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com