Android Wear - 通知 - setContentAction()不起作用

时间:2014-07-29 14:38:39

标签: android android-notifications wear-os

我正在创建一个通知,该通知从可穿戴设备发出,仅在可穿戴设备上发出,而不是在手机上发出。我希望它有两个动作按钮(还没有功能)和第三个动作,当点击通知本身时。我正在尝试使用setContentAction()使最后一个操作成为单击通知时的操作,但它仍然显示为单独的操作按钮(根据文档here它不应显示单独的按钮)。然而,这个不需要的按钮激发了所需的意图。通知本身不响应点击。以下是创建通知的代码:

    Intent pictureIntent = new Intent(this, PictureActivity.class);
    PendingIntent pendingIntent = PendingIntent.getActivity(this, 254, pictureIntent, PendingIntent.FLAG_ONE_SHOT);

    NotificationCompat.Builder notificationBuilder =
            new NotificationCompat.Builder(this)
                    .setSmallIcon(R.drawable.medicinepillmd)
                    .setContentTitle(dose[0])
                    .setContentText(dose[3])
                    .extend(new NotificationCompat.WearableExtender()
                            .setContentIcon(R.drawable.thumbnail)
                            .setBackground(BitmapFactory.decodeResource(getResources(), R.drawable.orangegirl))
                            .addAction(new NotificationCompat.Action.Builder(R.drawable.medicinepillmd, "Taken", null).build())
                            .addAction(new NotificationCompat.Action.Builder(R.drawable.thumbnail, "Skipped", null).build())
                            .addAction(new NotificationCompat.Action.Builder(0, null, pendingIntent).build())
                            .setContentAction(2));

任何人都知道为什么这可能不符合预期的行为?任何输入赞赏。感谢

1 个答案:

答案 0 :(得分:11)

原因:

setContentAction(int index)允许您指定将“合并”到卡中的操作。它会从“操作页面”中删除此操作,它只会出现在您的主卡上。但是,问题的原因是您没有为Action指定图标资源。没有图标,它无法合并到主卡。

解决方案:

您需要指定一些图标并将其添加到您的操作中:

.addAction(new NotificationCompat.Action.Builder(R.drawable.some_icon, null, pendingIntent).build())

如果你真的不想要任何图标,你可以使用带有空图标的“hack”:

empty_icon.xml:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
</shape>


注意setContentIntent(PendingIntent intent)不会使您的卡可以点击。它只会使用标签创建并添加另一个动作(最右边):“打开”。