setSeeMoreAction () срезов не работает во время тестирования с действиями приложения - PullRequest
1 голос
/ 25 июня 2019

Мне нужно показать больше данных, чем могли бы показать срезы, поэтому я использовал метод setSeeMoreAction (PendingIntent intent), который добавляет возможность «видеть больше» в конце слайса, и мы можем установить, какое действие вызывать при касании егопри помощи PendingIntent.

При тестировании моих слайсов в приложении для просмотра слайсов я вижу возможность «показать больше» и щелкаю на том, который работает, как и ожидалось, но когда я тестирую его с помощью «App Actions Test Tool», это не показывает эту возможность «увидеть больше».Вместо этого иногда (хотя иногда ничего не отображается) он показывает нажатие кнопки «Открыть приложение», при которой не запускается ожидающее намерение, о котором я упоминал в setSeeMoreAction, вместо этого он запускает SliceAction, упомянутый в setPrimaryAction () RowBuilder.

Вот мой код:

    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 голосов
/ 26 июня 2019

В соответствии с документами (хотя их легко не заметить):

Если не удается отобразить весь контент в срезе, возможность «видеть больше» может будет отображаться там, где обрезано содержимое.

(клавиша " может ").

По сути, это зависит от приложения, отображающего фрагмент (в этом случае Google Assistant), если он отображает возможность «увидеть больше».В случае Assistant он может не отображаться, потому что он автоматически добавляет кнопку «Открыть приложение» к каждому отображаемому слайсу, поэтому вы должны использовать ее, чтобы связать пользователя с дополнительной информацией или предпринять дальнейшие действия.

Если вы считаете, что «увидеть больше» было бы полезно в вашем случае, вы можете подать запрос функции для действий приложения + фрагменты, чтобы поддержать его вместе с подробностями вашего использования.

...