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.FlutterBoostSetupOptions;
|
import com.idlefish.flutterboost.containers.FlutterBoostActivity;
|
import com.umeng.analytics.MobclickAgent;
|
import com.umeng.commonsdk.UMConfigure;
|
|
import java.util.ArrayList;
|
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.Log;
|
import io.flutter.app.FlutterApplication;
|
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;
|
public static boolean inited = false;
|
|
private static String TAG = "MyApplication";
|
|
//兼容4.4以下版本
|
protected void attachBaseContext(Context newBase) {
|
super.attachBaseContext(newBase);
|
MultiDex.install(this);
|
}
|
|
|
@Override
|
public void onCreate() {
|
super.onCreate();
|
application = this;
|
MultiDex.install(this);
|
if (UserUtil.isAgreeUserProtocol(application) || Constant.DEBUG) {
|
init(application, null);
|
}
|
}
|
|
public static void init(Application application, InitListener initListener) {
|
if (inited) {
|
return;
|
}
|
|
inited = true;
|
//友盟初始化
|
String description = ManifestDataUtil.getAppMetaData(application, "UMENG_CHANNEL");
|
UMConfigure.init(application, application.getResources().getString(R.string.umeng_key), description, UMConfigure.DEVICE_TYPE_PHONE, null);
|
UMConfigure.setEncryptEnabled(true);
|
// 选用AUTO页面采集模式
|
MobclickAgent.setPageCollectionMode(MobclickAgent.PageMode.AUTO);
|
|
initAd(application, initListener);
|
|
//小说
|
// initNovel(application);
|
//穿山甲小视频
|
// initDPSDK(application);
|
|
initFlutter(application);
|
}
|
|
|
//动态初始化广告
|
public static void initAd(Application application, InitListener initListener) {
|
//广点通广告
|
AdUtil.initGDTAd(application, application.getString(R.string.ad_gdt_appid));
|
//穿山甲广告
|
initCSJAd(application, application.getString(R.string.ad_csj_appid), initListener);
|
}
|
|
|
/**
|
* 穿山甲广告初始化
|
*/
|
private static void initCSJAd(Application application, String appId, InitListener initListener) {
|
|
AdUtil.initCSJAd(application, appId, false, new TTAdSdk.InitCallback() {
|
@Override
|
public void success() {
|
if (initListener != null)
|
initListener.onFinish();
|
}
|
|
@Override
|
public void fail(int i, String s) {
|
if (initListener != null)
|
initListener.onFinish();
|
}
|
});
|
}
|
|
|
private static void initNovel(Application application) {
|
DPUtil.initNovel(application, "SDK_Setting_5211168.json");
|
}
|
|
private static boolean dpSDKIninted;
|
|
public static void initDPSDK(Application application) {
|
if (!dpSDKIninted) {
|
DPUtil.initDPSDK(application, "SDK_Setting_5211168.json", new DPSdkConfig.InitListener() {
|
@Override
|
public void onInitComplete(boolean b) {
|
dpSDKIninted = b;
|
}
|
});
|
}
|
}
|
|
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, 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() {
|
|
});
|
|
|
}, options);
|
}
|
|
|
public interface InitListener {
|
public void onFinish();
|
}
|
}
|