首页 > 解决方案 > Flutter 应用程序未通过 MethodChannel 接收来自 Android 的消息

问题描述

问题

我有一个主要使用 Flutter 开发的 Android 应用程序,该应用程序依赖于在后台运行的 .jar 文件。在 main.dart 中有 2 个 MethodChannel 对象,一个用于向 Java 发送命令,一个用于从 Java 接收消息。我的 Java 中的颤振通道处理方法是这样编写的:

_ui_channel.setMethodCallHandler(uiHandler);

Future<void> uiHandler(MethodCall call) async {
    switch (call.method){
      case "INPUT_ACCOUNT":
        print("Success!");
        break;
      default:
        print("This was called by " + call.method);
        break;
    }
  }

在Java方面

MethodChannel out_channel= new MethodChannel(Objects.requireNonNull(getFlutterEngine()).getDartExecutor().getBinaryMessenger(), OUT_CHANNEL);

private void inputAccount(MethodChannel out_channel) {
        new Handler(Looper.getMainLooper()).post(() -> {
            out_channel.invokeMethod("INPUT_ACCOUNT", "", new MethodChannel.Result() {
                @Override
                public void success(Object result) {
                }

                @Override
                public void error(String errorCode, String errorMessage, Object errorDetails) {
                    Log.e("input", errorCode + "\n" + errorMessage);
                }

                @Override
                public void notImplemented() {
                }
            });
        });

我已经验证了 Java 代码可以调用 invokeMethod() 并且两侧的通道是相同的。根据我在网上阅读的内容,这应该是正确的,但 Dart 从未收到“INPUT_ACCOUNT”消息并打印我发布的“Success”消息。AndroidManifest.xml 中是否有我遗漏的东西?

标签: flutterdart

解决方案


推荐阅读