如何在 Flutter 中添加第二个 Android Activity?

问题描述 投票:0回答:1

我目前正在我的 Flutter 应用程序中集成 google tap&pay SDK。我的应用程序

startActivityForResult
原生 Google 钱包活动可将卡添加到钱包。现在钱包活动想要
startActivityForResult
我的应用程序中的另一个活动来获取验证码。

现在所有的 Flutter 应用都基于单一 Activity 架构。如果我在我的 flutter 应用程序中启动相同

Activity
的新实例,则前一个实例的会话将失效。所以我无法使用同一 Activity 的多个实例。

如何在我的 Flutter 应用程序中添加另一个

Activity
,该应用程序可以启动并共享相同的 Flutter 引擎?

图表看起来像这样:

A --> B --> C

  1. A:颤动活动
  2. B:Google 钱包活动
  3. C:另一个获取验证码的Activity
android flutter android-activity google-provisioning-api
1个回答
0
投票

要在 Flutter 应用程序中添加第二个 Android Activity,您可以按照以下步骤操作:

  1. 创建一个新的Android Activity:您可以在android/app/src/main/java/your/package/name目录中创建一个新的Android Activity。此活动将用于获取验证码。
import androidx.annotation.NonNull;
import io.flutter.embedding.android.FlutterActivity;
import io.flutter.embedding.engine.FlutterEngine;
import io.flutter.plugins.GeneratedPluginRegistrant;

public class SecondActivity extends FlutterActivity {
    @Override
    public void configureFlutterEngine(@NonNull FlutterEngine flutterEngine) {
        GeneratedPluginRegistrant.registerWith(flutterEngine);
    }
}
  1. 将新的 Activity 添加到 AndroidManifest.xml:您需要在 AndroidManifest.xml 文件中声明此 Activity,该文件位于 android/app/src/main 目录中。
<activity android:name=".SecondActivity" >
    <intent-filter>
        <!-- Intent filters if any -->
    </intent-filter>
</activity>
  1. 从 Flutter 启动新的 Activity:您可以使用
    MethodChannel
    在 Flutter 和原生 Android 之间进行通信。以下是如何执行此操作的示例:
MethodChannel channel = MethodChannel('com.example/second_activity');
channel.invokeMethod('startSecondActivity');

在你的 SecondActivity.java 中:

new MethodChannel(getFlutterView(), "com.example/second_activity").setMethodCallHandler(
  new MethodCallHandler() {
    @Override
    public void onMethodCall(MethodCall call, Result result) {
      if (call.method.equals("startSecondActivity")) {
        Intent intent = new Intent(MainActivity.this, SecondActivity.class);
        startActivity(intent);
      }
    }
  });

请注意,您需要将

com.example
替换为您自己的包名称。

  1. 共享相同的 FlutterEngine:在 Android 和 iOS 上添加多个 Flutter 实例的主要 API 基于新的
    FlutterEngineGroup
    类。这允许您在多个活动之间共享相同的 Flutter 引擎。

请记住,虽然这种方法允许您向 Flutter 应用程序添加第二个 Activity,但通常建议尽可能在 Flutter 应用程序中使用单个 Activity 架构。多项活动可能会导致复杂性增加和潜在的性能问题。

© www.soinside.com 2019 - 2024. All rights reserved.