如何在 FlutterActivity 上实现 onActivityResult 和 onNewIntent

Asa*_*ssi 8 android flutter

我想在 flutter 应用程序的 Android 本机端实现 onActivityResult 和 onNewIntent 。

例如,我希望能够运行“startActivityForResult”,并使用深层链接打开我的应用程序。

我的主要活动是 flutter,但我需要在本机部分做一些工作。

有没有一种方法可以在不编写外部插件的情况下完成此任务?

package com.test.flutter_app

import androidx.annotation.NonNull;
import io.flutter.embedding.android.FlutterActivity
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugins.GeneratedPluginRegistrant

class MainActivity: FlutterActivity() {
    override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) {
        GeneratedPluginRegistrant.registerWith(flutterEngine);
    }
}
Run Code Online (Sandbox Code Playgroud)

据我从文档中了解到,我需要使用PluginRegistry.Registrar addActivityResultListener. 但我的注册员是谁?我怎样才能得到它/使用它?代码示例将不胜感激。

Rob*_*hof 5

FlutterActivity 是一个活动,所以我想你可以添加如下内容:

Result mResult;

private void doStuff() {
    ...
    startActivityForResult(intent, INTENT_CODE);
}

@Override
public boolean onActivityResult(int requestCode, int resultCode, Intent intent) {
    ...
    mResult.success(null);
    return false;
}
Run Code Online (Sandbox Code Playgroud)

现在您可以使用doStuff平台通道

    new MethodChannel(getFlutterView(), MY_CHANNEL).setMethodCallHandler(
            (call, result) -> {
                if (call.method.equals("my_method")) {
                    mResult = result;
                    doStuff();
                }
            });
Run Code Online (Sandbox Code Playgroud)


Ted*_*nry 4

该类FlutterActivity实现该PluginRegistry接口。该接口定义了您想要的PluginRegistry方法。registrarFor

https://api.flutter.dev/javadoc/io/flutter/plugin/common/PluginRegistry.html#registrarFor-java.lang.String-

所以在你的MainActivity班级里,你可以做this.registrarFor('plugin_name_here')注册员。

我认为您随后会想要建立一个EventChannel. 在onActivityResultonNewIntent方法中,您可以使用EventChannel将数据从 Kotlin 代码发送到 Dart 代码。