From f19071bd5e0007fc823f99cdfa0196391827da1e Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期三, 11 五月 2022 18:46:35 +0800 Subject: [PATCH] 'android项目完善' --- src/main/resources/code/android/app/src/main/java/com/demo/app/MyApplication.java | 173 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 170 insertions(+), 3 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..2828217 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 @@ -2,18 +2,47 @@ import android.app.Application; import android.content.Context; +import android.content.Intent; import com.bytedance.sdk.dp.DPSdkConfig; import com.bytedance.sdk.openadsdk.TTAdSdk; +import com.demo.R; +import com.demo.app.entity.eventbus.UpdateConfig; +import com.demo.app.utils.AppConfigUtil; import com.demo.app.utils.Constant; +import com.demo.app.utils.SettingUtil; import com.demo.app.utils.UserUtil; +import com.demo.app.utils.api.HttpApiUtil; +import com.demo.app.utils.ui.JumpPageUtil; +import com.demo.lib.common.util.ManifestDataUtil; 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.FlutterBoostSetupOptions; +import com.idlefish.flutterboost.containers.FlutterBoostActivity; import com.umeng.analytics.MobclickAgent; import com.umeng.commonsdk.UMConfigure; +import org.greenrobot.eventbus.EventBus; + +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.Map; + import androidx.multidex.MultiDex; +import cn.jpush.android.api.JPushInterface; +import io.flutter.Log; +import io.flutter.embedding.android.FlutterActivityLaunchConfigs; +import io.flutter.plugin.common.StandardMessageCodec; +import io.flutter.plugin.platform.PlatformViewRegistry; public class MyApplication extends Application { public static MyApplication application = null; @@ -54,9 +83,16 @@ initAd(application, initListener); //灏忚 - initNovel(application); +// initNovel(application); //绌垮北鐢插皬瑙嗛 - initDPSDK(application); +// initDPSDK(application); + + initFlutter(application); + + //鍒濆鍖栨帹閫� + JPushInterface.setDebugMode(true); + JPushInterface.init(application); + } @@ -107,6 +143,137 @@ } } + public static void initFlutter(Application application) { + + FlutterBoostSetupOptions options = new FlutterBoostSetupOptions.Builder().build(); + FlutterBoost.instance().setup(application, new FlutterBoostDelegate() { + @Override + public void pushNativeRoute(FlutterBoostRouteOptions options) { + Log.i(TAG, "pushNativeRoute"); +// options.arguments() + //杩欓噷鏍规嵁options.pageName鏉ュ垽鏂綘鎯宠烦杞摢涓〉闈紝杩欓噷绠�鍗曠粰涓�涓� +// Intent intent = new Intent(FlutterBoost.instance().currentActivity(), FlutterCommonActivity.class); +// intent.putExtra("pageRoute", options.pageName()); +// FlutterBoost.instance().currentActivity().startActivityForResult(intent, options.requestCode()); + + Intent intent = new FlutterBoostActivity.CachedEngineIntentBuilder(FlutterCommonActivity.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); + } + + @Override + public void pushFlutterRoute(FlutterBoostRouteOptions options) { + Log.i(TAG, "pushFlutterRoute"); + 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); + } + + @Override + public boolean popRoute(FlutterBoostRouteOptions options) { + Log.i(TAG, "popRoute"); + return false; + } + }, 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, String> getBaseRequestParams(Map<String, String> 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()); + } + } + return HttpApiUtil.getRequestParams(application.getApplicationContext(), ps); + } + + @Override + public String getConfig(String key) { + AppConfigUtil.ConfigKey configKey = null; + try { + configKey = AppConfigUtil.ConfigKey.valueOf(key); + } catch (Exception e) { + + } + if (configKey == null) { + EventBus.getDefault().post(new UpdateConfig()); + return null; + } + return AppConfigUtil.getConfig(configKey, application); + } + + @Override + public Boolean getSetting(String key) { + SettingUtil.SettingKey settingKey = null; + try { + settingKey = SettingUtil.SettingKey.valueOf(key); + } catch (Exception e) { + + } + if (settingKey == null) { + return null; + } + return SettingUtil.getSetting(settingKey, application); + } + + @Override + public void setSetting(String key, boolean b) { + + SettingUtil.SettingKey settingKey = null; + try { + settingKey = SettingUtil.SettingKey.valueOf(key); + } catch (Exception e) { + + } + if (settingKey == null) { + return; + } + + + SettingUtil.saveSetting(settingKey, b, application); + } + }); + //UI鎺ュ彛 + new UIMethodChannel(engine.getDartExecutor().getBinaryMessenger(), application.getApplicationContext(), new UIMethodChannel.DataListener() { + @Override + public boolean isStatusBarDefaultLight() { + return true; + } + + @Override + public void jumpAppPage(String type, Map<String, Object> params) { + //璺宠浆搴旂敤鍒楄〃 + if (JumpPageUtil.AppJumpType.valueOf(type) == null) { + //鏈煡璺宠浆绫诲瀷 + return; + } + JumpPageUtil.jump(JumpPageUtil.AppJumpType.valueOf(type), params, FlutterBoost.instance().currentActivity()); + } + }); +// //骞垮憡鎺ュ彛 + new AdMethodChannel(engine.getDartExecutor().getBinaryMessenger(), application.getApplicationContext(), new AdMethodChannel.DataListener() { + + }); + }, options); + } + public interface InitListener { public void onFinish(); -- Gitblit v1.8.0