Commit c28a3ac7 by mergen

Revert "add handler"

This reverts commit 08a9ef44.
parent 08a9ef44
package com.orhon.cordova;
import android.util.Log;
import com.tencent.smtt.export.external.TbsCoreSettings;
import com.tencent.smtt.sdk.QbSdk;
import com.tencent.smtt.sdk.TbsDownloader;
import com.tencent.smtt.sdk.TbsListener;
import org.apache.cordova.x5engine.MyHandler;
import org.apache.cordova.x5engine.X5WebView;
import java.util.HashMap;
public class MainApplication extends android.app.Application {
private static final String TAG = "MainApplication";
@Override
public void onCreate() {
super.onCreate();
// 使用独立 ClassLoader, 需要在内核初始化之前
HashMap map = new HashMap();
map.put(TbsCoreSettings.TBS_SETTINGS_USE_PRIVATE_CLASSLOADER, true);
QbSdk.initTbsSettings(map);
QbSdk.initX5Environment(this, new QbSdk.PreInitCallback() {
@Override
public void onCoreInitFinished() {
// System.out.println(" tbs init ok");
Log.d("orhonCordova", "tbs init ok");
MyHandler.getInstance().sendEmptyMessage(0);
Log.e("1111111111111", "-------------------------- " + "tbs init ok ! send message 0");
}
@Override
public void onViewInitFinished(boolean b) {
// System.out.println(" tbs init view: " + b);
Log.d("orhonCordova", "tbs init view:" + b);
}
});
}
private void downloadTbsCore() {
// 检测是否需要下载X5Core
boolean needDownload = TbsDownloader.needDownload(this, TbsDownloader.DOWNLOAD_OVERSEA_TBS);
if (needDownload) {
QbSdk.setDownloadWithoutWifi(true);
QbSdk.preInit(this, new QbSdk.PreInitCallback() {
@Override
public void onCoreInitFinished() {
}
@Override
public void onViewInitFinished(boolean b) {
}
});
QbSdk.setTbsListener(new TbsListener() {
@Override
public void onDownloadFinish(int i) {
Log.e(TAG, "onDownloadFinish: " + i);
}
@Override
public void onInstallFinish(int i) {
Log.e(TAG, "onInstallFinish: " + i);
}
@Override
public void onDownloadProgress(int i) {
Log.e(TAG, "onDownloadProgress: " + i);
}
});
TbsDownloader.startDownload(this);
}
}
}
package org.apache.cordova.x5engine;
import android.os.Handler;
import android.os.Message;
public class MyHandler extends Handler {
static MyHandler handler;
public static MyHandler getInstance() {
if (handler == null) {
handler = new MyHandler();
}
return handler;
}
@Override
public void handleMessage(Message msg) {
lisnener.handleMessage(msg);
}
public interface IhandlerLisnener {
void handleMessage(Message msg);
}
public void setListener(IhandlerLisnener listener) {
this.lisnener = listener;
}
IhandlerLisnener lisnener;
}
/**
* cordova使用webview层。。。
* 在这个层面不需要设置x5引擎的相关参数...
* <p>
* 1、用于暴露init方法。
* 2、暴露init的方法的目的可能是 X5WebViewEngine的init方法cordova层面去调用,在这个层面去进行webview的init
* init方法的其他作用是判断两个client是否为空,如果为空,初始化一个新的,复制进去
* 3、暴露的其他办法有
* getCordovaWebView 用于从系统层面获取cordova的webview
* <p>
* 一个webview有两个client,分别是webclient和chromewebclient
* setWebViewClient 给webview设置webviewclient
* setWebChromeClient 给webview设置webchromeclient
*/
package org.apache.cordova.x5engine;
import android.content.Context;
import android.os.Message;
import android.util.AttributeSet;
import android.util.Log;
import android.view.KeyEvent;
import com.orhon.cordova.MainApplication;
import com.tencent.smtt.sdk.WebChromeClient;
import com.tencent.smtt.sdk.WebView;
import com.tencent.smtt.sdk.WebViewClient;
import org.apache.cordova.ConfigXmlParser;
import org.apache.cordova.CordovaInterface;
import org.apache.cordova.CordovaWebView;
import org.apache.cordova.CordovaWebViewEngine;
public class X5WebView extends WebView implements CordovaWebViewEngine.EngineView, MyHandler.IhandlerLisnener {
private X5WebViewClient viewClient;
X5WebChromeClient chromeClient;
private X5WebViewEngine parentEngine;
private CordovaInterface cordova;
public X5WebView(Context context) {
this(context, null);
}
public X5WebView(Context context, AttributeSet attrs) {
super(context, attrs);
MyHandler.getInstance().setListener(this);
}
// Package visibility to enforce that only X5WebViewEngine should call this method.
void init(X5WebViewEngine parentEngine, CordovaInterface cordova) {
this.cordova = cordova;
this.parentEngine = parentEngine;
if (this.viewClient == null) {
setWebViewClient(new X5WebViewClient(parentEngine));
}
if (this.chromeClient == null) {
setWebChromeClient(new X5WebChromeClient(parentEngine));
}
}
void initWithLocalServer(X5WebViewEngine parentEngine,
CordovaInterface cordova,
ConfigXmlParser parser,
X5WebViewLocalServer server,
String CDV_LOCAL_SERVER_REF) {
//init the webview with server
this.cordova = cordova;
this.parentEngine = parentEngine;
if (this.viewClient == null) {
setWebViewClient(
new X5WebViewClient(
parentEngine,
parser,
server,
CDV_LOCAL_SERVER_REF
)
);
}
if (this.chromeClient == null) {
setWebChromeClient(new X5WebChromeClient(parentEngine));
}
}
@Override
public CordovaWebView getCordovaWebView() {
return parentEngine != null ? parentEngine.getCordovaWebView() : null;
}
@Override
public void setWebViewClient(WebViewClient client) {
viewClient = (X5WebViewClient) client;
super.setWebViewClient(client);
}
@Override
public void setWebChromeClient(WebChromeClient client) {
chromeClient = (X5WebChromeClient) client;
super.setWebChromeClient(client);
}
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
Boolean ret = parentEngine.client.onDispatchKeyEvent(event);
if (ret != null) {
return ret.booleanValue();
}
return super.dispatchKeyEvent(event);
}
boolean status = false;
String url = "";
// String url = "file:///android_asset/www/index.html";
@Override
public void loadUrl(String s) {
url = s;
Log.e("1111111111111", "------------------ url : " + url);
if (status)
return;
super.loadUrl(s);
}
@Override
public void handleMessage(Message msg) {
Log.e("1111111111111", "------------------ get message " + msg.what);
if (msg.what == 0) {
status = true;
loadUrl(url);
}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment