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

oxf4rvwz  于 2023-10-22  发布在  Flutter
关注(0)|答案(2)|浏览(130)

我目前正在我的Flutter应用程序中集成一个Google Tap&Pay SDK。我的应用程序startActivityForResult本机谷歌钱包活动添加一张卡到钱包。现在钱包Activity想要startActivityForResult我的应用中的另一个Activity来获取验证码。
现在,所有Flutter应用程序都基于单一活动架构。如果我在flutter应用程序中启动同一个Activity的新示例,则前一个示例的会话将失效。因此,我无法处理同一Activity的多个示例。
我如何在Flutter应用中添加另一个Activity,它可以启动并共享相同的Flutter引擎?
该图看起来像这样:
A --> B --> C

  1. A:Flutter活动
  2. B:Google钱包活动
  3. C:获取验证码的另一个活动
sauutmhj

sauutmhj1#

我想你可以用flutter_isolate
Flutter isolate

enxuqcxy

enxuqcxy2#

要在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:您需要在android/app/src/main目录下的AndroidManifest.xml文件中声明此Activity。

<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类。这允许您在多个Activity之间共享相同的Flutter引擎。
请记住,虽然这种方法允许您向Flutter应用添加第二个Activity,但通常建议在可能的情况下在Flutter应用中使用单个Activity架构。多个活动可能导致复杂性增加和潜在的性能问题。

相关问题