我为Android开发了一个音乐播放器应用程序,而且我在通知布局中遇到了问题。似乎我无法在其中添加任何复杂的元素,或者它会抛出android.app.RemoteServiceException: Bad notification
。
问题是我写了一个片段的播放器控制器。我无法找到如何在代码中手动添加片段,所以我直接在XML布局中尝试但没有成功。我也遇到了我写的自定义ImageView的问题。
我真的有义务重复代码吗?
答案 0 :(得分:0)
看起来你不能添加片段。您可以看到MediaStyle是否符合您的需求。在通知构建器中,您将添加.setStyle(NotificationCompat.MediaStyle)
。否则,您似乎必须创建自定义布局的子类Notification.Style
或NotificationCompat.Style
。对于某些选项,您也可以在创建时拦截通知。请查看this以获取更多详细信息。
考虑到你的时间框架,如果你愿意在你的布局上展示一些,那么我只需在通知中添加按钮。为您希望能够通过通知(播放,暂停,跳过)执行的每个操作创建待处理意图。通过代码示例,我已经在我的通知中添加了一个缩写版本的放置方式。
Intent resultIntent = new Intent(context, AlarmScreen.class);
resultIntent.putExtra("Id",reminder.getId());
PendingIntent resultPendingIntent =
PendingIntent.getActivity(
context,
reminder.getId()*2,
resultIntent,
PendingIntent.FLAG_UPDATE_CURRENT
);
Notification.Builder mBuilder =
new Notification.Builder(context)
.setStyle(new Notification.BigTextStyle()
.bigText(reminder.getDescription()))
.addAction(R.drawable.ic_stat_content_clear, "Dismiss", dismissPendingIntent)
.build();
在您的情况下,您应该可以使用适当的图标替换R.drawable.ic_stat_content_clear
,也可以跳过文本。您可以为所需的每个按钮重复.addAction()
。另请注意我的待定意图声明中有reminder.getId()*2
的位置?我发现如果我的两个按钮都有相同的数字,我会得到奇怪的结果,所以我的一个按钮有id*2
而另一个有id*2+1
。
至于你如何处理按钮发送的意图,你必须创建一个BroadcastReceiver
来接收它们,并根据你实现其余部分的方式找出去哪里逻辑。
答案 1 :(得分:0)
这是不可能的。通知只能与RemoteView一起使用。 RemoteView仅支持一些视图,它不支持自定义视图或片段。