在通知布局中添加<fragment>?

时间:2015-05-08 17:54:36

标签: android

我为Android开发了一个音乐播放器应用程序,而且我在通知布局中遇到了问题。似乎我无法在其中添加任何复杂的元素,或者它会抛出android.app.RemoteServiceException: Bad notification

问题是我写了一个片段的播放器控制器。我无法找到如何在代码中手动添加片段,所以我直接在XML布局中尝试但没有成功。我也遇到了我写的自定义ImageView的问题。

我真的有义务重复代码吗?

2 个答案:

答案 0 :(得分:0)

看起来你不能添加片段。您可以看到MediaStyle是否符合您的需求。在通知构建器中,您将添加.setStyle(NotificationCompat.MediaStyle)。否则,您似乎必须创建自定义布局的子类Notification.StyleNotificationCompat.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仅支持一些视图,它不支持自定义视图或片段。