扩展 AppCompatActivity 与扩展 flutterActivity

Ale*_*ufo 2 flutter

为了https://flutter.dev/docs/development/platform-integration/platform-channels?tab=android-channel-java-tab#step-3-add-an-android-platform-specific-implementation

我们必须在 MainActivity 中使用我们的代码扩展 FlutterActivity

但在我工作的 Android 应用程序中我有public class MainActivity extends AppCompatActivity

我不能扩展两个课程,比如extends AppCompatActivity,FlutterActivity 我应该做什么?我可以使用另一个 java 类作为 methodChannels 吗?

更新:2022 - FlutterActivity 已弃用

Aki*_*kif 7

我可以使用另一个 java 类作为 methodChannels 吗?

是的,您可以使用另一个 java 类作为 methodChannels。您可以将其写入应用程序中的任何位置,如下所示:

public class MyFlutterActivity extends FlutterActivity {
private static final String CHANNEL = "samples.flutter.io/battery";

@Override
public void configureFlutterEngine(@NonNull FlutterEngine flutterEngine) {
    GeneratedPluginRegistrant.registerWith(flutterEngine);

    new MethodChannel(flutterEngine.getDartExecutor().getBinaryMessenger(), CHANNEL).setMethodCallHandler(((methodCall, result) -> {
        if (methodCall.method.equals("getBatteryLevel")) {

            result.success("batteryLevel"); // It returns string "batteryLevel".

        } else {
            result.notImplemented();
        }
    }));
 }
}
Run Code Online (Sandbox Code Playgroud)

然后你可以使用相关类启动 Flutter 引擎,如下所示:

startActivity(
  new FlutterActivity.NewEngineIntentBuilder(MyFlutterActivity.class).build(getApplicationContext())
 );
Run Code Online (Sandbox Code Playgroud)

当然,您需要在 AndroidManifest.xml 中定义该类:

   <activity android:name=".MyFlutterActivity"
    android:theme="@style/AppTheme"
    android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
    android:hardwareAccelerated="true"
    android:windowSoftInputMode="adjustResize"
    />
Run Code Online (Sandbox Code Playgroud)

  • 我想,最好使用颤振缓存引擎来打开颤振活动,而不是新的 FlutterActivity.NewEngineIntentBuilder。 (2认同)