admin
2024-09-13 23cb5200b7a8fb57af5e8006612181bae9c0c95d
BuWanVideo/src/com/weikou/beibeivideo/BeibeiVideoApplication.java
@@ -11,18 +11,20 @@
import android.content.SharedPreferences;
import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.os.Message;
import android.telephony.TelephonyManager;
import android.util.Log;
import android.webkit.WebView;
import android.widget.Toast;
import com.alibaba.baichuan.android.trade.AlibcTradeSDK;
import com.alibaba.baichuan.android.trade.callback.AlibcTradeInitCallback;
import com.bytedance.applog.AppLog;
import com.bytedance.applog.InitConfig;
import com.bytedance.applog.util.UriConstants;
import com.apkfuns.log2file.LogFileEngineFactory;
import com.apkfuns.logutils.LogUtils;
import com.bytedance.sdk.djx.DJXSdk;
import com.bytedance.sdk.djx.DJXSdkConfig;
import com.bytedance.sdk.djx.model.DJXError;
import com.bytedance.sdk.dp.DPSdk;
import com.bytedance.sdk.dp.DPSdkConfig;
import com.bytedance.sdk.dp.IDPPrivacyController;
@@ -32,7 +34,6 @@
import com.kwad.sdk.api.KsAdSDK;
import com.kwad.sdk.api.KsCustomController;
import com.kwad.sdk.api.SdkConfig;
import com.lcjian.library.util.ManifestDataUtil;
import com.lcjian.library.util.common.AndroidManifestUtil;
import com.lcjian.library.util.common.DeviceUtil;
import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator;
@@ -49,33 +50,28 @@
import com.umeng.commonsdk.UMConfigure;
import com.umeng.socialize.PlatformConfig;
import com.umeng.socialize.UMShareAPI;
import com.weikou.beibeivideo.entity.ad.AdPidInfo;
import com.weikou.beibeivideo.entity.ad.AdPositionEnum;
import com.weikou.beibeivideo.entity.ad.SplashAdLoadInfo;
import com.weikou.beibeivideo.ui.SplashActivity;
import com.weikou.beibeivideo.ui.ad.SplashADFragment;
import com.weikou.beibeivideo.ui.ad.SplashAdActivity;
import com.weikou.beibeivideo.util.BeibeiConstant;
import com.weikou.beibeivideo.util.CrashHandler;
import com.weikou.beibeivideo.util.DebuggerUtils;
import com.weikou.beibeivideo.util.UserUtil;
import com.weikou.beibeivideo.util.ad.AdUtil;
import com.weikou.beibeivideo.util.ad.CSJConstant;
import com.weikou.beibeivideo.util.ad.GDTConstant;
import com.weikou.beibeivideo.util.ad.GMAdManagerHolder;
import com.weikou.beibeivideo.util.ad.TTAdManagerHolder;
import com.weikou.beibeivideo.util.downutil.StringUtils;
import com.yeshi.appupdate.util.PackageUtils2;
import org.apache.http.Header;
import org.greenrobot.eventbus.EventBus;
import org.json.JSONObject;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
import androidx.multidex.MultiDex;
import androidx.annotation.Nullable;
public class BeibeiVideoApplication extends Application {
@@ -122,7 +118,6 @@
    //兼容4.4以下版本
    protected void attachBaseContext(Context newBase) {
        super.attachBaseContext(newBase);
        MultiDex.install(this);
    }
    private static Handler handler = new Handler() {
@@ -183,7 +178,6 @@
        application = this;
        instance = this;
        MultiDex.install(this);
        if (UserUtil.isAgreeUserProtocol(this) || BeibeiConstant.IS_TEST) {
            //如果同意了用户协议
            init(application, null);
@@ -202,6 +196,17 @@
     */
    public static void init(final Application application, InitListener initListener) {
        Log.i(TAG, "系统初始化");
        // 初始化广告位
        if(AndroidManifestUtil.isOppoChannel(application)){
            CSJConstant.SPLASH_AD = "889066047";
            CSJConstant.RECOMMEND_BIG_IMG_AD = "956732346";
            CSJConstant.APP_EXIT = "956732346";
            CSJConstant.VIDEO_DETAIL_PLAYER_BOTTOM= "956732346";
            CSJConstant.VIDEO_SEARCH= "956732346";
            CSJConstant.HOME_INTERSTITIALAD = "956732361";
        }
        inited = true;
        registerActivityListener(application);
        //防止动态代码注入
@@ -258,6 +263,30 @@
        initWX(application);
        initX5(application);
         if(BeibeiConstant.IS_TEST) {
             initLog(application);
         }
    }
    /**
     *  初始化日志,将未捕获的错误保存到日志中
     * @param application
     */
    private static void initLog(Application application){
        LogUtils.getLogConfig()
                .configAllowLog(true)
                .configTagPrefix("taoke")
                .configShowBorders(true)
                .configFormatTag("%d{HH:mm:ss:SSS} %t %c{-5}");
        LogUtils.getLog2FileConfig().configLog2FileEnable(true)
                // targetSdkVersion >= 23 需要确保有写sdcard权限
                .configLog2FilePath(Environment.getExternalStorageDirectory().getAbsolutePath() + "/Download/" + application.getPackageName() + "/logs")
                .configLog2FileNameFormat("%d{yyyyMMdd}.txt")
                .configLogFileEngine(new LogFileEngineFactory(application));
        Thread.setDefaultUncaughtExceptionHandler(new MyExceptionHandler(application));
    }
    private static String getProcessName(Context context) {
@@ -341,6 +370,7 @@
                if (initListener != null)
                    initListener.onFinish();
                initDPSDK(context);
                initDJ(context);
            }
            @Override
@@ -398,7 +428,7 @@
                    @Override
                    public List<String> getInstalledPackages() {
                        return DeviceUtil.getInstalledPackageNamesCache(appContext);
                        return  new ArrayList<>(); //DeviceUtil.getInstalledPackageNamesCache(appContext);
                    }
                })// 是否开启sdk 调试⽇志 可选
                .build());
@@ -409,16 +439,6 @@
        if (!AdUtil.isCanInitCSJ()) {
            return;
        }
        /* 初始化开始 */
        final InitConfig config = new InitConfig("5095354", AndroidManifestUtil.getChannel(application)); // appid和渠道,appid如不清楚请联系客户成功经理,注意第二个参数 channel 不能为空
        config.setUriConfig(UriConstants.DEFAULT);//上报地址
// 加密开关,SDK 5.5.1 及以上版本支持,false 为关闭加密,上线前建议设置为 true
        AppLog.setEncryptAndCompress(true);
        config.setAutoStart(true);
        AppLog.init(application, config);
        /* 初始化结束 */
        if (!dpSDKIninted) {
            DPSdkConfig.Builder configBuilder = new DPSdkConfig.Builder()
                    .debug(false)
@@ -460,18 +480,36 @@
                    //若您需要接入直播,参考「直播接入文档」;否则可忽略此参数。
            try {
                DPSdk.init(application, "SDK_Setting_5095354.json", configBuilder.build());
                DPSdk.start(new DPSdk.StartListener() {
                    @Override
                    public void onStartComplete(boolean b, String s) {
                        dpSDKIninted = b;
                        Log.i(TAG," DPSdk.start:"+b+", "+s);
                    }
                });
//                DPSdk.start(new DPSdk.StartListener() {
//                    @Override
//                    public void onStartComplete(boolean b, String s) {
//                        dpSDKIninted = b;
//                        Log.i(TAG," DPSdk.start:"+b+", "+s);
//                    }
//                });
            } catch (Exception e) {
            }
        }
    }
    public static void initDJ(Application application){
                try{
                    DJXSdk.init(application, "SDK_Setting_5095354.json", new DJXSdkConfig.Builder().debug(true).build());
                    DJXSdk.start(new DJXSdk.StartListener() {
                        @Override
                        public void onStartComplete(boolean b, String s, @Nullable DJXError djxError) {
                            Log.i(TAG, String.format("DJXSdk.init:%s,%s", b, s));
                        }
                    });
                }catch(Exception e){
                    e.printStackTrace();
                }
    }
@@ -592,3 +630,28 @@
    }
}
class MyExceptionHandler implements Thread.UncaughtExceptionHandler {
    private final String TAG ="MyExceptionHandler";
    private final Context context;
    public MyExceptionHandler(Context context) {
        this.context = context;
    }
    @Override
    public void uncaughtException(Thread t, Throwable e) {
        try {
            StringWriter sw = new StringWriter();
            PrintWriter pw = new PrintWriter(sw);
            e.printStackTrace(pw);
            pw.flush();
            sw.flush();
            LogUtils.tag(TAG).e(sw.toString());
            LogUtils.getLog2FileConfig().flushAsync();
        }catch(Throwable ee){
        }
    }
}