使用App Actions测试时,Slices的setSeeMoreAction()无法正常运行

时间:2019-06-25 09:26:42

标签: android app-actions android-slices

我需要显示更多的数据,而不是切片可以显示的数据,因此我使用了setSeeMoreAction(PendingIntent intent)方法,该方法在切片的末尾添加了“查看更多”功能,我们可以设置在点击时调用哪个操作在PendingIntent的帮助下。

在slice-viewer应用程序上测试切片时,我可以看到“显示更多”功能,并单击可以正常使用的功能,但是当我使用“ App Actions测试工具”对其进行测试时,它不会显示此“查看更多”。相反,有时(虽然有时什么都没有显示)显示一个“打开应用程序”按钮,单击该按钮不会触发我在setSeeMoreAction中提到的未决意图,而是触发RowBuilder的setPrimaryAction()中提到的SliceAction。

这是我的代码:

    override fun onBindSlice(sliceUri: Uri): Slice? {
    if(!isLoggedIn())  // if user is not logged in
    {
        return createLoginSlice(sliceUri).build()
    }
    var head = ListBuilder.HeaderBuilder()
            .setTitle("Slice Title")
    var slice = ListBuilder(context,sliceUri,ListBuilder.INFINITY)
            .setSeeMoreAction(orderActivityPendingIntent())
            .setHeader(head)
    for(i in 0 .. 6) {
            icon = IconCompat.createWithResource(context.applicationContext, R.drawable.placeholder)
        var row = ListBuilder.RowBuilder()
                .setTitleItem(icon!!,ListBuilder.LARGE_IMAGE,true)
                .setTitle(orderName.get(i),true)
                .setSubtitle(orderStatus.get(i),true)
                .addEndItem(IconCompat.createWithResource(context, colorScheme.get(i)),ListBuilder.SMALL_IMAGE)
                .setPrimaryAction(openOrderActivity(orderId.get(i)))
        slice.addRow(row)
    }
    return slice.build()
}

@RequiresApi(Build.VERSION_CODES.KITKAT)
private fun openOrderActivity(orderNo: String?): SliceAction {
    val intent = Intent(Intent.ACTION_VIEW, 
    Uri.parse(context.getString(R.string.orderURI)+orderNo))
        return SliceAction.create(
                PendingIntent.getActivity(context, 0, intent, 0),
                IconCompat.createWithResource(context, R.drawable.abc_ic_star_black_36dp),
                ListBuilder.ICON_IMAGE,
                "Open Order Activity."
        )
    }
private fun orderActivityPendingIntent(): PendingIntent {
        // create intent for order page here
val intent = Intent(Intent.ACTION_VIEW, Uri.parse(context.getString(R.string.orderPageURI)))
        return PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT)
    }

1 个答案:

答案 0 :(得分:0)

根据docs(尽管很容易错过):

  

如果无法显示切片中的所有内容,则可能   在内容被截断的地方显示。

(键为“ 可能”)。

基本上,取决于显示“切片”的应用程序(在本例中为Google Assistant)是否显示“查看更多”功能。对于Assistant,它可能不会显示,因为它会自动在显示的每个Slice上附加一个“打开应用程序”按钮,因此您应该使用该按钮链接用户以查看更多信息或采取进一步措施。

如果您认为“查看更多”在您的情况下很有用,则可以提交feature request的App Actions + Slices来支持他以及使用案例的详细信息。