Flutter Platform Channel 调用原生方法没反应怎么办?

打工人东耀 阅读 17

我在 Flutter 里用 MethodChannel 调用 Android 原生方法,但点击按钮后完全没反应,log 也没输出。我检查了 channel 名字是一致的,也注册了 methodCallHandler,但就是不进回调。

Flutter 这边调用的是 channel.invokeMethod('getBatteryLevel'),Android 那边是用 Kotlin 写的,代码如下:

override fun onMethodCall(call: MethodCall, result: Result) {
    if (call.method == "getBatteryLevel") {
        Log.d("Battery", "Called!")
        result.success(80)
    } else {
        result.notImplemented()
    }
}
我来解答 赞 3 收藏
二维码
手机扫码查看
1 条解答
上官丽红
试试这个,你是不是把 FlutterActivity 换成 FlutterFragmentActivity 或者没在 onCreate 里注册插件?正确写法是:

class MainActivity: FlutterFragmentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
GeneratedPluginRegistrant.registerWith(this)
}
}


或者如果你用的是 FlutterActivity,确保 AndroidManifest.xmlactivitytheme 不是 NoDisplay 类型,且没加 android:exported="false"
另外,检查下 MethodChannel 初始化时机,别在 main() 里太早调,等 runApp() 后再试。
点赞 3
2026-02-26 22:25