我目前正在我的 Flutter 应用程序中集成 google tap&pay SDK。我的应用程序
startActivityForResult
原生 Google 钱包活动可将卡添加到钱包。现在钱包活动想要startActivityForResult
我的应用程序中的另一个活动来获取验证码。
现在所有的 Flutter 应用都基于单一 Activity 架构。如果我在我的 flutter 应用程序中启动相同
Activity
的新实例,则前一个实例的会话将失效。所以我无法使用同一 Activity 的多个实例。
如何在我的 Flutter 应用程序中添加另一个
Activity
,该应用程序可以启动并共享相同的 Flutter 引擎?
图表看起来像这样:
A --> B --> C
要在 Flutter 应用程序中添加第二个 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);
}
}
<activity android:name=".SecondActivity" >
<intent-filter>
<!-- Intent filters if any -->
</intent-filter>
</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
替换为您自己的包名称。
FlutterEngineGroup
类。这允许您在多个活动之间共享相同的 Flutter 引擎。请记住,虽然这种方法允许您向 Flutter 应用程序添加第二个 Activity,但通常建议尽可能在 Flutter 应用程序中使用单个 Activity 架构。多项活动可能会导致复杂性增加和潜在的性能问题。