package com.hanju.video.app;
|
|
import android.app.Application;
|
import android.content.BroadcastReceiver;
|
import android.content.Context;
|
import android.content.Intent;
|
import android.content.IntentFilter;
|
import android.os.Build;
|
import android.telephony.TelephonyManager;
|
import android.util.Log;
|
|
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.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.GDTAdSdk;
|
import com.tencent.mm.opensdk.constants.ConstantsAPI;
|
import com.tencent.mm.opensdk.openapi.IWXAPI;
|
import com.tencent.mm.opensdk.openapi.WXAPIFactory;
|
import com.tencent.smtt.sdk.QbSdk;
|
import com.umeng.analytics.MobclickAgent;
|
import com.umeng.commonsdk.UMConfigure;
|
import com.umeng.socialize.PlatformConfig;
|
import com.umeng.socialize.UMShareAPI;
|
|
import androidx.multidex.MultiDex;
|
|
public class HanJuApplication extends Application {
|
public static HanJuApplication application = null;
|
public static String deviceName = null;
|
public static String deviceNumber = 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
|
public void onCreate() {
|
if (HanJuConstant.DEBUG) {
|
CrashHandler crashHandler = CrashHandler.getInstance();
|
crashHandler.init(getApplicationContext());
|
}
|
application = this;
|
MultiDex.install(this);
|
if (UserUtil.isAgreeUserProtocol(application) || HanJuConstant.DEBUG) {
|
init(application, null);
|
}
|
}
|
|
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);
|
PlatformConfig.setWeixin(HanJuConstant.WECHAT_ID, HanJuConstant.WECHAT_KEY);
|
PlatformConfig.setQQZone(HanJuConstant.QQ_ID, HanJuConstant.QQ_KEY);
|
PlatformConfig.setSinaWeibo(HanJuConstant.SINA_ID, HanJuConstant.SINA_KEY, "http://sns.whalecloud.com/sina2/callback");
|
ImageLoader.getInstance().init(buildDefaultILC(application));
|
initX5(application);
|
initWX(application);
|
String gdtAppId = AppConfigUtil.getGDTAppId(application);
|
String csjAppId = AppConfigUtil.getCSJAppId(application);
|
initAd(application, gdtAppId, csjAppId, initListener);
|
|
}
|
|
public static void initAd(Application context, String gdtAppId, String csjAppId, InitListener initListener) {
|
if (!StringUtils.isNullOrEmpty(gdtAppId))
|
GDTAdSdk.init(context, gdtAppId);
|
if (!StringUtils.isNullOrEmpty(csjAppId))
|
initCSJAd(context, csjAppId, initListener);
|
}
|
|
|
private static void initWX(Application application) {
|
//AppConst.WEIXIN.APP_ID是指你应用在微信开放平台上的AppID,记得替换
|
mWxApi = WXAPIFactory.createWXAPI(application, HanJuConstant.WECHAT_ID, true);
|
// 将该app注册到微信
|
mWxApi.registerApp(HanJuConstant.WECHAT_ID);
|
application.registerReceiver(new BroadcastReceiver() {
|
@Override
|
public void onReceive(Context context, Intent intent) {
|
// 将该app注册到微信
|
mWxApi.registerApp(HanJuConstant.WECHAT_ID);
|
}
|
}, new IntentFilter(ConstantsAPI.ACTION_REFRESH_WXAPP));
|
}
|
|
|
private static ImageLoaderConfiguration buildDefaultILC(Context context) {
|
// This configuration tuning is custom. You can tune every option, you may tune some of them,
|
// or you can create default configuration by
|
// ImageLoaderConfiguration.createDefault(this); method.
|
ImageLoaderConfiguration.Builder config = new ImageLoaderConfiguration.Builder(context);
|
config.threadPriority(Thread.NORM_PRIORITY - 2);
|
config.denyCacheImageMultipleSizesInMemory();
|
config.diskCacheFileNameGenerator(new Md5FileNameGenerator());
|
config.diskCacheSize(50 * 1024 * 1024); // 50 MiB
|
config.tasksProcessingOrder(QueueProcessingType.LIFO);
|
config.writeDebugLogs(); // Remove for release app
|
|
return config.build();
|
}
|
|
private static void initX5(Application application) {
|
QbSdk.PreInitCallback cb = new QbSdk.PreInitCallback() {
|
|
@Override
|
public void onViewInitFinished(boolean arg0) {
|
//x5內核初始化完成的回调,为true表示x5内核加载成功,否则表示x5内核加载失败,会自动切换到系统内核。
|
Log.d("app", " onViewInitFinished is " + arg0);
|
}
|
|
@Override
|
public void onCoreInitFinished() {
|
}
|
};
|
//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, 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();
|
}
|
}
|