我想在 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. 但我的注册员是谁?我怎样才能得到它/使用它?代码示例将不胜感激。
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)
该类FlutterActivity实现该PluginRegistry接口。该接口定义了您想要的PluginRegistry方法。registrarFor
所以在你的MainActivity班级里,你可以做this.registrarFor('plugin_name_here')注册员。
我认为您随后会想要建立一个EventChannel. 在onActivityResult和onNewIntent方法中,您可以使用EventChannel将数据从 Kotlin 代码发送到 Dart 代码。
| 归档时间: |
|
| 查看次数: |
11277 次 |
| 最近记录: |