【问题标题】:Get input text from Wear OS从 Wear OS 获取输入文本
【发布时间】:2022-07-08 02:51:18
【问题描述】:

我试图从活动中获取 Wear OS 上的文本并将结果返回到平台频道。等待并从活动中获取结果的正确方法是什么?

override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) {
    super.configureFlutterEngine(flutterEngine)
    MethodChannel(
        flutterEngine.dartExecutor.binaryMessenger,
        channel
    ).setMethodCallHandler { call, result ->
        myResult = result
        getInputText()
    }
}

private fun getInputText() {
    val inputText: String

    val remoteInputs: List<RemoteInput> = listOf(RemoteInput.Builder("quick_reply").setLabel("Quick reply").build())
    val intent: Intent = createActionRemoteInputIntent()
    putRemoteInputsExtra(intent, remoteInputs)
    startActivityForResult(intent, 0)
    inputText = RemoteInput.getResultsFromIntent(intent).toString()

    myResult?.success(inputText)
}

现在我的代码在我得到结果时不会等待,在 Flutter 中我立即得到 null

【问题讨论】:

    标签: android flutter wear-os


    【解决方案1】:

    我通过onActivityResult找到了解决方案。这是完成的解决方案:

    override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) {
        super.configureFlutterEngine(flutterEngine)
        MethodChannel(
            flutterEngine.dartExecutor.binaryMessenger,
            channel
        ).setMethodCallHandler { call, result ->
            if (call.method == "selectInputType") {
                _result = result
                val remoteInputs: List<RemoteInput> =
                    listOf(RemoteInput.Builder("quick_reply").setLabel("Quick reply").build())
                val intent: Intent = createActionRemoteInputIntent()
                putRemoteInputsExtra(intent, remoteInputs)
                startActivityForResult(intent, 9689)
            } else {
                result.notImplemented()
            }
        }
    }
    
    override fun onActivityResult(requestCode: Int, result: Int, intent: Intent?) {
        if (requestCode != 9689)
            return super.onActivityResult(requestCode, result, intent)
        if (result == Activity.RESULT_OK) {
            val inputResult = RemoteInput.getResultsFromIntent(intent)
            _result.success(inputResult.getCharSequence("quick_reply"))
        } else
            _result.error("RESULT_NOT_OK", "", "")
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-06
      • 2012-02-11
      • 2017-04-23
      • 2012-05-12
      • 2012-01-10
      • 1970-01-01
      相关资源
      最近更新 更多