From 222df7b655c51992580b832f5e06c6772d27d9d6 Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期六, 12 三月 2022 15:21:20 +0800 Subject: [PATCH] 'Android集成flutter插件' --- src/main/resources/code/android/app/src/main/java/com/demo/app/MyApplication.java | 88 ++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 88 insertions(+), 0 deletions(-) diff --git a/src/main/resources/code/android/app/src/main/java/com/demo/app/MyApplication.java b/src/main/resources/code/android/app/src/main/java/com/demo/app/MyApplication.java index feff1ac..a8d56f7 100644 --- a/src/main/resources/code/android/app/src/main/java/com/demo/app/MyApplication.java +++ b/src/main/resources/code/android/app/src/main/java/com/demo/app/MyApplication.java @@ -1,19 +1,47 @@ package com.demo.app; +import android.Manifest; +import android.app.Activity; import android.app.Application; import android.content.Context; +import android.content.Intent; +import android.os.Bundle; import com.bytedance.sdk.dp.DPSdkConfig; import com.bytedance.sdk.openadsdk.TTAdSdk; import com.demo.app.utils.Constant; import com.demo.app.utils.UserUtil; +import com.demo.app.utils.api.HttpApiUtil; +import com.demo.lib.common.util.ui.MyActivityManager; import com.demo.library_ad.AdUtil; import com.demo.library_dp.DPUtil; import com.demo.lib.common.util.ManifestDataUtil; +import com.demo.library_flutter.FlutterCommonActivity; +import com.demo.library_flutter.message.AdMethodChannel; +import com.demo.library_flutter.message.DataMethodChannel; +import com.demo.library_flutter.message.UIMethodChannel; +import com.demo.library_flutter.nativeview.CSJExpressNativeViewFactory; +import com.demo.library_flutter.nativeview.GDTExpressNativeViewFactory; +import com.idlefish.flutterboost.FlutterBoost; +import com.idlefish.flutterboost.FlutterBoostDelegate; +import com.idlefish.flutterboost.FlutterBoostRouteOptions; +import com.idlefish.flutterboost.containers.FlutterBoostActivity; import com.umeng.analytics.MobclickAgent; import com.umeng.commonsdk.UMConfigure; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.Map; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import androidx.multidex.MultiDex; +import io.flutter.embedding.android.FlutterActivityLaunchConfigs; +import io.flutter.embedding.engine.FlutterEngine; +import io.flutter.plugin.common.MethodCall; +import io.flutter.plugin.common.MethodChannel; +import io.flutter.plugin.common.StandardMessageCodec; +import io.flutter.plugin.platform.PlatformViewRegistry; public class MyApplication extends Application { public static MyApplication application = null; @@ -57,6 +85,8 @@ initNovel(application); //绌垮北鐢插皬瑙嗛 initDPSDK(application); + + initFlutter(application); } @@ -107,6 +137,64 @@ } } + public static void initFlutter(Application application) { + + FlutterBoost.instance().setup(application, new FlutterBoostDelegate() { + @Override + public void pushNativeRoute(FlutterBoostRouteOptions options) { + //杩欓噷鏍规嵁options.pageName鏉ュ垽鏂綘鎯宠烦杞摢涓〉闈紝杩欓噷绠�鍗曠粰涓�涓� + Intent intent = new Intent(FlutterBoost.instance().currentActivity(), FlutterCommonActivity.class); + FlutterBoost.instance().currentActivity().startActivityForResult(intent, options.requestCode()); + } + + @Override + public void pushFlutterRoute(FlutterBoostRouteOptions options) { + Intent intent = new FlutterBoostActivity.CachedEngineIntentBuilder(FlutterBoostActivity.class) + .backgroundMode(FlutterActivityLaunchConfigs.BackgroundMode.transparent) + .destroyEngineWithActivity(false) + .uniqueId(options.uniqueId()) + .url(options.pageName()) + .urlParams(options.arguments()) + .build(FlutterBoost.instance().currentActivity()); + FlutterBoost.instance().currentActivity().startActivity(intent); + } + }, engine -> { + PlatformViewRegistry registry = engine.getPlatformViewsController().getRegistry(); + registry.registerViewFactory("ad-csj-express-view", new CSJExpressNativeViewFactory(engine.getDartExecutor().getBinaryMessenger(), StandardMessageCodec.INSTANCE)); + registry.registerViewFactory("ad-gdt-express-view", new GDTExpressNativeViewFactory(engine.getDartExecutor().getBinaryMessenger(), StandardMessageCodec.INSTANCE)); + + //鏁版嵁鎺ュ彛 + new DataMethodChannel(engine.getDartExecutor().getBinaryMessenger(), application.getApplicationContext(), new DataMethodChannel.DataListener() { + @Override + public Map<String, Object> getBaseRequestParams(Map<String, Object> params) { + LinkedHashMap<String, String> ps = new LinkedHashMap<>(); + if (params != null) + for (Iterator<String> its = params.keySet().iterator(); its.hasNext(); ) { + String key = its.next(); + if (params.get(key) != null) { + ps.put(key, params.get(key).toString()); + } + } + HttpApiUtil.getRequestParams(application.getApplicationContext(), ps); + return null; + } + }); + //UI鎺ュ彛 + new UIMethodChannel(engine.getDartExecutor().getBinaryMessenger(), application.getApplicationContext(), new UIMethodChannel.DataListener() { + @Override + public boolean isStatusBarDefaultLight() { + return true; + } + }); + //骞垮憡鎺ュ彛 + new AdMethodChannel(engine.getDartExecutor().getBinaryMessenger(), application.getApplicationContext(), new AdMethodChannel.DataListener() { + + }); + + + }); + } + public interface InitListener { public void onFinish(); -- Gitblit v1.8.0