我们必须在 MainActivity 中使用我们的代码扩展 FlutterActivity
但在我工作的 Android 应用程序中我有public class MainActivity extends AppCompatActivity
我不能扩展两个课程,比如extends AppCompatActivity,FlutterActivity
我应该做什么?我可以使用另一个 java 类作为 methodChannels 吗?
更新:2022 - FlutterActivity 已弃用
我可以使用另一个 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)
| 归档时间: |
|
| 查看次数: |
3795 次 |
| 最近记录: |