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