| | |
| | | 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; |
| | |
| | | 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; |
| | |
| | | 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 |
| | |
| | | } |
| | | 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); |
| | |
| | | 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); |
| | | } |
| | | |
| | | |
| | |
| | | |
| | | @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(); |
| | | } |
| | | } |