| | |
| | | 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.IDJXPrivacyController; |
| | | 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; |
| | |
| | | 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; |
| | |
| | | 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.vivo.mobilead.manager.VInitCallback; |
| | | import com.vivo.mobilead.manager.VivoAdManager; |
| | | import com.vivo.mobilead.model.VAdConfig; |
| | | import com.vivo.mobilead.model.VCustomController; |
| | | import com.vivo.mobilead.model.VLocation; |
| | | import com.vivo.mobilead.unified.base.VivoAdError; |
| | | 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.NonNull; |
| | | import androidx.annotation.Nullable; |
| | | |
| | | |
| | | public class BeibeiVideoApplication extends Application { |
| | |
| | | //兼容4.4以下版本 |
| | | protected void attachBaseContext(Context newBase) { |
| | | super.attachBaseContext(newBase); |
| | | MultiDex.install(this); |
| | | } |
| | | |
| | | private static Handler handler = new Handler() { |
| | |
| | | |
| | | application = this; |
| | | instance = this; |
| | | MultiDex.install(this); |
| | | if (UserUtil.isAgreeUserProtocol(this) || BeibeiConstant.IS_TEST) { |
| | | //如果同意了用户协议 |
| | | init(application, null); |
| | |
| | | */ |
| | | 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); |
| | | //防止动态代码注入 |
| | |
| | | |
| | | ImageLoader.getInstance().init(buildDefaultILC(application)); |
| | | initCSJAd(application, initListener); |
| | | if("huawei".equalsIgnoreCase(channel)) { |
| | | if(AndroidManifestUtil.isHuaWeiChannel(application)) { |
| | | initHWAdSDK(application); |
| | | } |
| | | if(AndroidManifestUtil.isVIVOChannel(application)){ |
| | | initVIVOAdSDK(application); |
| | | } |
| | | |
| | | initKSSDK(application); |
| | | try { |
| | | GlobalSetting.setEnableCollectAppInstallStatus(false); |
| | |
| | | |
| | | 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) { |
| | |
| | | if (initListener != null) |
| | | initListener.onFinish(); |
| | | initDPSDK(context); |
| | | initDJ(context); |
| | | } |
| | | |
| | | @Override |
| | |
| | | |
| | | @Override |
| | | public List<String> getInstalledPackages() { |
| | | return DeviceUtil.getInstalledPackageNamesCache(appContext); |
| | | return new ArrayList<>(); //DeviceUtil.getInstalledPackageNamesCache(appContext); |
| | | } |
| | | })// 是否开启sdk 调试⽇志 可选 |
| | | .build()); |
| | | } |
| | | |
| | | // VIVO广告初始化 |
| | | public static void initVIVOAdSDK(Application application){ |
| | | VAdConfig adConfig = new VAdConfig.Builder() |
| | | .setMediaId("90928ed246a845d9a889aae07a961d78") |
| | | //是否开启日志输出,请确保不要在正式环境开启 |
| | | // .setDebug(BuildConfig.DEBUG) |
| | | //隐私数据获取配置,请根据 App 情况认真配置,避免产生收入问题或合规风险 |
| | | .setCustomController(new VCustomController() { |
| | | @Override |
| | | public boolean isCanUseLocation() {//是否允许获取位置信息,默认允许 |
| | | return true; |
| | | } |
| | | @Override |
| | | public VLocation getLocation() { |
| | | //若不允许获取位置信息,亦可主动传给 SDK 位置信息 |
| | | return null; |
| | | } |
| | | @Override |
| | | public boolean isCanUsePhoneState() {//是否允许获取 imei 信息,默认允许 |
| | | return true; |
| | | } |
| | | @Override |
| | | public String getImei() {//若不允许获取 imei 信息,亦可主动传给 SDK imei 信息 |
| | | String imei = DeviceUtil.getImeiCache(application); |
| | | return imei; |
| | | } |
| | | @Override |
| | | public boolean isCanUseWriteExternal() {//是否允许使用公共存储空间,默认允许 |
| | | return true; |
| | | } |
| | | @Override |
| | | public boolean isCanPersonalRecommend() { //是否允许推荐个性化广告,默认允许 |
| | | return true; |
| | | } |
| | | @Override |
| | | public boolean isCanUseImsi() { //是否允许获取 imsi,默认不允许 |
| | | return false; |
| | | } |
| | | @Override |
| | | public boolean isCanUseApplist() { //是否允许获取应用列表,默认允许 |
| | | return false; |
| | | } |
| | | @Override |
| | | public boolean isCanUseAndroidId() {//是否允许获取 AndroidId,默认允许 |
| | | return true; |
| | | } |
| | | @Override |
| | | public boolean isCanUseMac() {//是否允许获取 mac,默认不允许 |
| | | return false; |
| | | } |
| | | @Override |
| | | public boolean isCanUseIp() {//是否允许获取 ip,默认允许 |
| | | return true; |
| | | } |
| | | }).build(); |
| | | |
| | | VivoAdManager.getInstance().init(application, adConfig, new VInitCallback() { |
| | | @Override |
| | | public void suceess() { |
| | | Log.d("VIVO AD SDKInit", "suceess"); |
| | | } |
| | | @Override |
| | | public void failed(@NonNull VivoAdError adError) { |
| | | //若是报超时错误,则检查是否正常出现广告,如无异常,则是正常的 |
| | | Log.e("VIVO AD SDKInit", "failed: " + adError.toString()); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | private static boolean dpSDKIninted; |
| | | |
| | | public static void initDPSDK(Application application) { |
| | | 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) |
| | |
| | | //若您需要接入直播,参考「直播接入文档」;否则可忽略此参数。 |
| | | 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().privacyController(new IDJXPrivacyController() { |
| | | @Override |
| | | public boolean isOnlyICPNumber() { |
| | | return true; |
| | | } |
| | | }).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(); |
| | | } |
| | | |
| | | |
| | | |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | 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){ |
| | | |
| | | } |
| | | } |
| | | } |