随笔 - 2649  文章 - 2452  评论 - 0  阅读 - 74060

客户端接口 - (v1)invoke

invoke

当小程序中调用 wmpf.Channel.invoke 时,Client 端需要使用 insert 操作完成异步调用。

传入参数

通过 ContentValues 传递

参数 类型 必填 说明
invoke_id String 调用 id ,用于后续获取对应的返回数据,每次调用的 id 都不一样
command String 小程序经 wmpf 透传给第三方 app 的指令名
data String 小程序经 wmpf 透传给第三方 app 的指令参数

返回参数

通过 insert 操作通知及 ContentValues 传递

参数 类型 必填 说明
invoke_id String 调用 id ,作为通知回调的凭据
command String 小程序经 wmpf 透传给第三方 app 的指令名
data String 小程序经 wmpf 透传给第三方 app 的指令参数

示例代码

override fun insert(p0: Uri, p1: ContentValues?): Uri? {
  when(sURIMatcher.match(p0)) {
    // 异步方法调用
    CODE_CALLBACK_INVOKE_CHANNEL -> {
      val invokeId = p1?.getAsString(InvokeChannelConstants.Key.INVOKE_ID)
      val command = p1?.getAsString(InvokeChannelConstants.Key.COMMAND)
      val sourceData = p1?.getAsString(InvokeChannelConstants.Key.DATA)

      Log.i(TAG, "invokeId: $invokeId, command: $command, sourceData: $sourceData")

      if (command.equals("test")) {
        // 实现特定的功能逻辑
        mHandler.post({
          val cv = ContentValues()
          cv.apply {
            put(InvokeChannelConstants.Key.INVOKE_ID, invokeId)
            put(InvokeChannelConstants.Key.COMMAND, command)
            put(InvokeChannelConstants.Key.DATA, "your data") // 返回执行结果给小程序端
          }
          try {
            context?.contentResolver?.insert(InvokeChannelConstants.ContentProvider.Cli2WMPF.URI_CALLBACK_INVOKE_CHANNEL, cv)
          } catch (e: Exception) {
            Log.e(TAG, "callback invoke channel error")
          }
        })
      }
    }
  }
  return null
}
posted on   AtlasLapetos  阅读(0)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 全程使用 AI 从 0 到 1 写了个小工具
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示