使用(上架 Google Play)

注意:为了减少您的apk包大小增量,及时动态发版解决安全隐患,X5 内核采用了后台动态下发内核的方案。由于 Google Play 禁止任何二进制代码的下发(包括so、dex、jar)和插件化技术的使用,故需要上架海外的场景请勿接入 X5 组件。

  • 自定义基于原生 webview 的组件,参考代码如下:
/**
 * 业务侧拓展的WebView,可自行拓展能力
 */
public class SampleWebView extends WebView {
    public SampleWebView(Context context) {
        super(context);
    }
}

注意:WebView 为 Android 原生的 android.webkit.WebView。

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

    @Override
    public void onPageFinished(WebView view, String url) {
        //注意super.onPageFinished不能删除
        super.onPageFinished(view, url);
    }
}
  • 创建 WebChromeClient,参考代码如下:
/**
 * 业务需要的WebChromeClient
 */
public class WebChromeClientDemo extends DefaultTMFWebChromeClient {
    @Override
    public void onProgressChanged(WebView view, int newProgress) {
        //注意super.onProgressChanged不能删除
        super.onProgressChanged(view, newProgress);
    }
}
  • 初始化 Webview 组件,参考代码如下:
 /**
 * 获取WebView实例
 * @return
 */
 private static WebView createWebView(Context context){
    SampleWebView webView = new SampleWebView(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.with(activity)
.setWebView(new DefaultTMFWebView(createWebView(activity)))//必须设置
.setWebViewClient(new WebClientDemo())//必须设置,须是DefaultTMFX5WebViewClient的子类
.setWebChromeClient(new WebChromeClientDemo())//必须设置,须是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 ""