android - 尝试在现有的 Flutter 应用中实现 flutter_contacts 示例
问题描述
我正在尝试实现这里的flutter_contacts示例:我现有的flutter应用程序中的flutter contacts,但我在调用kotlin方法时遇到了问题。据我所知,我已经完全镜像了该功能,但是当我调用启动联系人方法时,它会引发缺少插件异常。这是错误:
E/flutter (10095): [ERROR:flutter/lib/ui/ui_dart_state.cc(148)] Unhandled Exception: MissingPluginException(No implementation found for method launch on channel flutter_contacts/launch_contacts)
当我运行它时,它在 expmle 应用程序中运行良好,所以我假设我遗漏了一些东西。
主要活动代码:
package com.lightbridge.flutter_contacts
import android.app.Activity
import android.content.Intent
import android.os.Bundle
import android.provider.ContactsContract
import io.flutter.app.FlutterActivity
import io.flutter.plugin.common.MethodChannel
import io.flutter.plugins.GeneratedPluginRegistrant
class MainActivity : FlutterActivity() {
var lastResult: MethodChannel.Result? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
GeneratedPluginRegistrant.registerWith(this)
MethodChannel(flutterView, CHANNEL).setMethodCallHandler { call, result ->
lastResult = result
launchContactActivity()
}
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == REQUEST_CODE) {
if (resultCode == Activity.RESULT_OK) {
lastResult?.success("Done!")
} else {
lastResult?.error("Error", "Can't launch contacts", "")
}
}
}
private fun launchContactActivity() {
val intent = Intent(Intent.ACTION_VIEW)
intent.type = ContactsContract.Contacts.CONTENT_TYPE
startActivityForResult(intent, REQUEST_CODE)
}
companion object {
private const val CHANNEL = "flutter_contacts/launch_contacts"
private const val REQUEST_CODE = 42
}
}
要启动的 Dart 代码
void launchContacts() async {
try {
await platform.invokeMethod('launch');
} on PlatformException catch (e) {
print("Failed to launch contacts: ${e.message}");
}
setState(() {
});
}
解决方案
在setMethodCallHandler中,您必须编写一个 if 语句来检查方法名称,然后执行它:
if (call.method == "launch")
launchContactActivity()
推荐阅读
- wordpress - 联系论坛 7 到 wordpress 中的静态页面?
- java - 在错误消息中添加新行以进行 vaadin 表单验证
- c# - 源更新时未刷新绑定值
- continuous-integration - Gitlab:作业取消后如何执行脚本
- codenameone - 从哪里调用 Component.deinitialize()?
- ios - iOS XCode 突然控制台垃圾邮件:[默认] IOConnectCallMethod (kIOHIDEventServiceFastPathUserClientCopyEvent): 0xe00002f0 (copySpec = (null))
- python - 雅虎财经 API 未显示实时报价
- sql - 加速 SQL 查询
- vue.js - Nuxtjs 自动注销用户不活动
- c++ - 如何编写用户可以提供数组元素的代码?