package org.zywx.wbpalmstar.base;
import android.app.Activity;
import android.content.Context;
import com.tencent.smtt.export.external.interfaces.IX5WebChromeClient;
import com.tencent.smtt.sdk.CookieManager;
import com.tencent.smtt.sdk.CookieSyncManager;
import com.tencent.smtt.sdk.QbSdk;
import com.tencent.smtt.sdk.WebSettings;
import java.io.IOException;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
/**
* Created by ylt on 16/5/20.
*/
public class WebViewSdkCompat {
public static final String type = "x5";
public static void initInActivity(Activity activity) {
}
public static void initInApplication(Context context) {
CookieSyncManager.createInstance(context);
CookieManager.getInstance().setAcceptCookie(true);
CookieManager.getInstance().removeSessionCookie();
CookieManager.getInstance().removeExpiredCookie();
initTencentX5(context);
}
private static void initTencentX5(Context context) {
int tbsVersion = 0;
boolean noTencentX5 = false;
try {
String[] lists = context.getAssets().list("widget");
for (int i = 0; i < lists.length; i++) {
if (lists[i].equalsIgnoreCase("notencentx5")) {
noTencentX5 = true;
}
}
} catch (IOException e) {
e.printStackTrace();
}
//初始化X5引擎SDK
tbsVersion = QbSdk.getTbsVersion(context);
if (noTencentX5 || (tbsVersion > 0 && tbsVersion < 30000)) {
BDebug.i("AppCanTBS", "QbSdk.forceSysWebView()");
QbSdk.forceSysWebView();
}
if(!QbSdk.isTbsCoreInited() && (tbsVersion == 0 || tbsVersion >= 30000) && !noTencentX5){
final long timerCounter = System.currentTimeMillis();
// 如果手机没有可以共享的X5内核,会先下载并安装,首次启动不会使用X5,再次启动才会使用X5;
// 如果手机有可以共享的X5内核,但未安装,会先安装,首次启动不会使用X5,再次启动才会使用X5;
// 如果手机有可以共享的X5内核,已经安装,首次启动会使用X5;
QbSdk.initX5Environment(context, new QbSdk.PreInitCallback(){
@Override
public void onViewInitFinished(boolean success) {
float deltaTime = (System.currentTimeMillis() - timerCounter);
BDebug.i("AppCanTBS", "success " + success + " x5初始化使用了" + deltaTime + "毫秒");
}
@Override
public void onCoreInitFinished() {
BDebug.i("AppCanTBS", "onX5CoreInitFinished!!!!");
}
});
}
}
public static void setCookie(String inUrl, String cookie) {
CookieManager.getInstance().setCookie(inUrl, cookie);
CookieSyncManager.getInstance().sync();
}
public static void clearCookie() {
CookieManager.getInstance().removeAllCookie();
}
public static String getCookie(String inUrl) {
return CookieManager.getInstance().getCookie(inUrl);
}
public static void stopSync(){
CookieSyncManager.getInstance().stopSync();
}
public enum ZoomDensityCompat{
FAR(WebSettings.ZoomDensity.FAR), // 240dpi
MEDIUM(WebSettings.ZoomDensity.MEDIUM), // 160dpi
CLOSE(WebSettings.ZoomDensity.CLOSE); // 120dpi
ZoomDensityCompat(WebSettings.ZoomDensity size) {
value = size;
}
public WebSettings.ZoomDensity getValue() {
return value;
}
WebSettings.ZoomDensity value;
}
public interface CustomViewCallback extends IX5WebChromeClient.CustomViewCallback{
}
public interface ValueCallback<Uri> extends com.tencent.smtt.sdk.ValueCallback<Uri>{
}
}