0

我正在尝试使用 Android slice 来显示我的应用程序中的数据。

所以我有我的 action.xml

<actions>
<action intentName="actions.intent.START_EXERCISE">

    <fulfillment
        fulfillmentMode="actions.fulfillment.SLICE"
        urlTemplate="content://com.example/hello{?name}">

        <parameter-mapping urlParameter="name" intentParameter="exercise.name" required="false" />
    </fulfillment>


</action>

在我的 SliceProvider 上,我添加一行只是为了加载时间,并启动一个服务

  override fun onBindSlice(sliceUri: Uri): Slice {
val activityAction = createActivityAction()
return if (sliceUri.path == "/hello") {
  startPendingIntent()

  list(context!!, sliceUri, ListBuilder.INFINITY) {
    row {
      primaryAction = activityAction
      title = "Waiting for real data"
    }
  }
} else {
  list(context!!, sliceUri, ListBuilder.INFINITY) {
    row {
      primaryAction = activityAction
      title = "URI not recognized."
    }
  }
}
}
fun startPendingIntent(){
  val intent = Intent(context, SliceBroadcastReceiver::class.java)
  intent.action = "ACTION_NOTIFICATION"
  val pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 
  PendingIntent.FLAG_UPDATE_CURRENT)

          pendingIntent.send()
}

在我的广播接收器上,我正在开始服务并为我的切片获取数据。当我有数据时,我正在尝试更新切片 - 相同的 url,但现在使用参数

val parse = Uri.parse("uri content://com.example/hello")
  .buildUpon()
  .appendQueryParameter("name", "Running").build()
 applicationContext.contentResolver.notifyChange(parse, null)

但出于某种原因,在 SliceProvider 上,onBindSlice URI 始终是 content://com.example/hello - 这是我在 App 操作测试工具在进程开始时运行 slice 时获得的第一个 URI。

4

0 回答 0