使用

初始化

  • Application 中初始化 X5 内核
//X5内核初始化
TMFX5Core.getInstance().init(context);
//初始化结果监听
TMFX5Core.getInstance().onX5CoreInited(new ValueCallback<Boolean>() {
    @Override
    public void onReceiveValue(Boolean value) {
        if(value){
            L.d("X5初始化成功");
        }else {
            L.e("X5初始化失败");
        }
    }
});
  • 自定义基于 X5 的 webview 组件,参考代码如下:
/**
 * 业务侧拓展的WebView,可自行拓展能力
 */
public class X5SampleWebView extends WebView {
    public X5SampleWebView(Context context) {
        super(context);
    }
}

注意:WebView 为 X5 内核的 com.tencent.smtt.sdk.WebView。

  • 创建 X5WebViewClient,参考代码如下:
/**
 * 业务侧需要的WebViewClient例子,需要可以拓展更多能力
 */
public class X5WebClientDemo extends DefaultTMFX5WebViewClient {
    @Override
    public void onPageStarted(WebView view, String url, android.graphics.Bitmap favicon){
        //注意super.onPageStarted不能删除
        super.onPageStarted(view, url, favicon);
    }

    @Override
    public void onPageFinished(WebView view, String url) {
        //注意super.onPageFinished不能删除
        super.onPageFinished(view, url);
    }
}
  • 创建 X5WebChromeClient,参考代码如下:
/**
 * 业务需要的WebChromeClient
 */
public class X5WebChromeClientDemo extends DefaultTMFX5WebChromeClient {
    @Override
    public void onProgressChanged(WebView view, int newProgress) {
        //注意super.onProgressChanged不能删除
        super.onProgressChanged(view, newProgress);
    }
}
  • 初始化 Webview 组件。
 /**
 * 获取WebView实例
 * @return
 */
 private static WebView createX5WebView(Context context){
    X5SampleWebView webView = new X5SampleWebView(context);
    //config webview settings
    WebSettings webSettings = webView.getSettings();
    webSettings.setJavaScriptEnabled(true);
    webView.removeJavascriptInterface("searchBoxJavaBridge_");
    webSettings.setAllowContentAccess(true);
    webSettings.setDatabaseEnabled(true);
    webSettings.setDomStorageEnabled(true);
    webSettings.setAppCacheEnabled(true);
    webSettings.setSavePassword(false);
    webSettings.setSaveFormData(false);
    webSettings.setLoadWithOverviewMode(true);

    return webView;
}
  • 创建 H5 容器,参考代码如下:
ITMFWeb mWebContainer = TMFWeb.withX5(activity)
.setWebView(new DefaultTMFX5WebView(createX5WebView(activity)))//必须设置
.setWebViewClient(new X5WebClientDemo())//必须设置,须是DefaultTMFX5WebViewClient的子类
.setWebChromeClient(new X5WebChromeClientDemo())//必须设置,须是DefaultTMFX5WebChromeClient的子类
.setWebContainerReporter(new WebViewReporter())//设置H5容器上报器(可选)
.build();
  • 将 WebView 添加到页面视图中,参考代码如下:
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
     LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);
mContainer.addView((ViewGroup) mWebContainer.getWebViewHolder().getWebView(), params);

mContainer 为 xml 页面中的一个布局,如 LinearLayout、FraneLayout 等。

  • 在 Activity 和 Fragment 的生命周期中管理 H5 容器,参考代码如下:
 @Override
    public void onResume() {
        super.onResume();
        if (mWebContainer != null) {
            mWebContainer.onResume();
        }
    }

    @Override
    public void onStop() {
        super.onStop();
        if (mWebContainer != null) {
            mWebContainer.onStop();
        }
    }

    @Override
    public void onPause() {
        super.onPause();
        if (mWebContainer != null) {
            mWebContainer.onPause();
        }
    }

    @Override
    public void onDestroy() {
        if (mWebContainer != null) {
            mWebContainer.onDestroy();
        }
        super.onDestroy();    
    }
Copyright © 2013-2023 Tencent Cloud. all right reserved,powered by GitbookUpdate Time 2023-08-31 14:46:07

results matching ""

    No results matching ""