admin
2021-12-22 0a1336cd2b95126d66d6f3126cb48a446cdbfad1
app/src/com/hanju/video/app/HanJuApplication.java
@@ -5,21 +5,33 @@
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import androidx.multidex.MultiDex;
import android.os.Build;
import android.telephony.TelephonyManager;
import android.util.Log;
import com.hanju.video.app.util.common.AppConfigUtil;
import com.bytedance.novel.pangolin.NovelConfig;
import com.bytedance.novel.pangolin.NovelSDK;
import com.bytedance.novel.pangolin.PangolinDocker;
import com.bytedance.novel.pangolin.data.NormalFontType;
import com.bytedance.novel.pangolin.data.ReaderFontType;
import com.bytedance.sdk.dp.DPSdk;
import com.bytedance.sdk.dp.DPSdkConfig;
import com.bytedance.sdk.openadsdk.TTAdSdk;
import com.hanju.lib.library.util.ManifestDataUtil;
import com.hanju.lib.library.util.common.PackageUtils2;
import com.hanju.video.app.util.HanJuConstant;
import com.hanju.video.app.util.UserUtil;
import com.hanju.video.app.util.ad.AdUtil;
import com.hanju.video.app.util.ad.TTAdManagerHolder;
import com.hanju.video.app.util.common.AppConfigUtil;
import com.hanju.video.app.util.common.CrashHandler;
import com.hanju.video.app.util.downutils.StringUtils;
import com.hanju.lib.library.util.ManifestDataUtil;
import com.hanju.video.app.util.ui.SDCardUtil;
import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.nostra13.universalimageloader.core.assist.QueueProcessingType;
import com.qq.e.comm.managers.GDTADManager;
import com.qq.e.comm.managers.GDTAdSdk;
import com.tencent.mm.opensdk.constants.ConstantsAPI;
import com.tencent.mm.opensdk.openapi.IWXAPI;
import com.tencent.mm.opensdk.openapi.WXAPIFactory;
@@ -28,8 +40,8 @@
import com.umeng.commonsdk.UMConfigure;
import com.umeng.socialize.PlatformConfig;
import com.umeng.socialize.UMShareAPI;
import com.hanju.video.app.util.common.CrashHandler;
import com.hanju.video.app.util.ad.TTAdManagerHolder;
import androidx.multidex.MultiDex;
public class HanJuApplication extends Application {
    public static HanJuApplication application = null;
@@ -38,7 +50,16 @@
    public static String MMNumber;
    public static IWXAPI mWxApi = null;
    public static boolean inited = false;
    private static int mStatusBarHeight;
    private static String TAG = "HanJuApplication";
    //兼容4.4以下版本
    protected void attachBaseContext(Context newBase) {
        super.attachBaseContext(newBase);
        MultiDex.install(this);
    }
    @Override
@@ -49,15 +70,27 @@
        }
        application = this;
        MultiDex.install(this);
        if (UserUtil.isAgreeUserProtocol(application)) {
            init(application);
        if (UserUtil.isAgreeUserProtocol(application) || HanJuConstant.DEBUG) {
            init(application, null);
        }
    }
    public static void init(Application application) {
    public static void init(Application application, InitListener initListener) {
        inited = true;
        try {
            TelephonyManager manager = (TelephonyManager) application.getSystemService(TELEPHONY_SERVICE);
            String model = Build.MODEL;
            HanJuApplication.deviceName = model;
            HanJuApplication.deviceNumber = manager.getDeviceId();
        } catch (Exception e) {
        }
        SDCardUtil.initStorage(application);
        //友盟初始化
        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);
        UMShareAPI.get(application);
@@ -69,14 +102,15 @@
        initWX(application);
        String gdtAppId = AppConfigUtil.getGDTAppId(application);
        String csjAppId = AppConfigUtil.getCSJAppId(application);
        initAd(application, gdtAppId, csjAppId);
        initAd(application, gdtAppId, csjAppId, initListener);
    }
    public static void initAd(Application context, String gdtAppId, String csjAppId) {
    public static void initAd(Application context, String gdtAppId, String csjAppId, InitListener initListener) {
        if (!StringUtils.isNullOrEmpty(gdtAppId))
            GDTADManager.getInstance().initWith(context, gdtAppId);
            GDTAdSdk.init(context, gdtAppId);
        if (!StringUtils.isNullOrEmpty(csjAppId))
            initCSJAd(context, csjAppId);
            initCSJAd(context, csjAppId, initListener);
    }
@@ -115,25 +149,93 @@
            @Override
            public void onViewInitFinished(boolean arg0) {
                // TODO Auto-generated method stub
                //x5內核初始化完成的回调,为true表示x5内核加载成功,否则表示x5内核加载失败,会自动切换到系统内核。
                Log.d("app", " onViewInitFinished is " + arg0);
            }
            @Override
            public void onCoreInitFinished() {
                // TODO Auto-generated method stub
            }
        };
        //x5内核初始化接口
        QbSdk.initX5Environment(application, cb);
        QbSdk.canGetDeviceId(false);
        QbSdk.canGetAndroidId(false);
        QbSdk.canGetSubscriberId(false);
        initNovel(application);
        initDPSDK(application);
    }
    /**
     * 穿山甲广告初始化
     */
    private static void initCSJAd(Application application, String appId) {
        TTAdManagerHolder.init(application, appId);
    private static void initCSJAd(Application application, String appId, InitListener initListener) {
        TTAdManagerHolder.init(application, appId, 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) {
        if (!AdUtil.isCanInitCSJ()) {
            return;
        }
        NovelConfig config = new NovelConfig.Builder()
                .appName(application.getString(R.string.app_name)) //接入小说SDK的App的英文名 必填
                .appVersionName(PackageUtils2.getVersionName(application)) //接入小说SDKApp的版本名称 必填
                .appVersionCode(PackageUtils2.getVersionCode(application)) //接入小说SDK App的版本号 必填
                .channel(ManifestDataUtil.getAppMetaData(application, "UMENG_CHANNEL")) //渠道号维度。开发者自定义字符串即可(建议不要包含test)。选填
                .initInnerApplog(true) // 是否使用小说sdk来初始化applog sdk。默认为false,需要开发者在App中单独初始化applog sdk,且必须在小说sdk之前初始化。
                .initInnerOpenAdSdk(true) //是否使用小说sdk来初始化广告sdk,如果为true,需要设置siteId。默认为false,需开发者在App中单独初始化广告sdk并在小说sdk之前初始化。
                .jsonFileName("SDK_Setting_5211168.json")//json配置文件的名称 必填
                .normalFontSize(NormalFontType.NORMAL) //全局字号大小 可选
                .readerFontSize(ReaderFontType.TWO) //阅读器字号大小 可选
                .build();
        NovelSDK.INSTANCE.attach(new PangolinDocker(config), application);
    }
    private static boolean dpSDKIninted;
    public static void initDPSDK(Application application) {
        if (!AdUtil.isCanInitCSJ()) {
            return;
        }
        if (!dpSDKIninted) {
            DPSdkConfig.Builder configBuilder = new DPSdkConfig.Builder()
                    .debug(true)
                    .preloadDraw(true)
                    .needInitAppLog(false)
                    .setIsAndroidx(true)
                    .initListener(new DPSdkConfig.InitListener() {
                        @Override
                        public void onInitComplete(boolean b) {
                            dpSDKIninted = b;
                        }
                    }) //接入了红包功能需要传入的参数,没有接入的话可以忽略该配置
//                    .luckConfig(new DPSdkConfig.LuckConfig().application(application).enableLuck(false))
//                    .liveConfig(new DPSdkConfig.LiveConfig())
                    ;//若您需要接入直播,参考「直播接入文档」;否则可忽略此参数。
            DPSdk.init(application, "SDK_Setting_5211168.json", configBuilder.build());
        }
    }
    public interface InitListener {
        public void onFinish();
    }
}