zoukankan      html  css  js  c++  java
  • Android使用腾讯浏览服务X5内核

    【前期准备】

    腾讯X5 jar包下载地址 [点击打开]

    本次完整DEMO源码 [打开Github]

    【集成步骤】

    第一步:下载jar包添加到项目

    第二步:添加权限

    [java] view plain copy
     
    1. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />  
    2. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />  
    3. <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />  
    4. <uses-permission android:name="android.permission.INTERNET" />  
    5. <uses-permission android:name="android.permission.READ_PHONE_STATE" />  

    第三步:创建BaseApplication.class

    [java] view plain copy
     
    1. import android.app.Application;  
    2. import com.tencent.smtt.sdk.QbSdk;  
    3. import com.tencent.smtt.sdk.TbsListener;  
    4. import com.xiong.tbs_x5.utils.LogUtil;  
    5.   
    6. /** 
    7.  * Created by xiongwenwei@aliyun.com 
    8.  * CreateTime: 2017/1/12 
    9.  * Note:BaseApplication 
    10.  */  
    11. public class BaseApplication extends Application {  
    12.   
    13.     private static BaseApplication instance;  
    14.   
    15.     @Override  
    16.     public void onCreate() {  
    17.         super.onCreate();  
    18.   
    19.         instance = this;  
    20.         initTbs();  
    21.     }  
    22.   
    23.     private void initTbs() {  
    24.         //搜集本地tbs内核信息并上报服务器,服务器返回结果决定使用哪个内核。  
    25.         QbSdk.PreInitCallback cb = new QbSdk.PreInitCallback() {  
    26.   
    27.             @Override  
    28.             public void onViewInitFinished(boolean arg0) {  
    29.                 LogUtil.i("onViewInitFinished is " + arg0);  
    30.             }  
    31.   
    32.             @Override  
    33.             public void onCoreInitFinished() {  
    34.             }  
    35.         };  
    36.   
    37.         QbSdk.setTbsListener(new TbsListener() {  
    38.             @Override  
    39.             public void onDownloadFinish(int i) {  
    40.                 LogUtil.i("onDownloadFinish");  
    41.             }  
    42.   
    43.             @Override  
    44.             public void onInstallFinish(int i) {  
    45.                 LogUtil.i("onInstallFinish");  
    46.             }  
    47.   
    48.             @Override  
    49.             public void onDownloadProgress(int i) {  
    50.                 LogUtil.i("onDownloadProgress:" + i);  
    51.             }  
    52.         });  
    53.   
    54.         QbSdk.initX5Environment(getApplicationContext(), cb);  
    55.     }  
    56.   
    57.     public static BaseApplication getInstance() {  
    58.         return instance;  
    59.     }  
    60. }  

    不要忘记添加:

    第三步:创建tbs_activity.xml

    [java] view plain copy
     
    1. <?xml version="1.0" encoding="utf-8"?>  
    2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    3.     android:layout_width="match_parent"  
    4.     android:layout_height="match_parent"  
    5.     android:orientation="vertical">  
    6.   
    7.     <com.tencent.smtt.sdk.WebView  
    8.         android:id="@+id/webView"  
    9.         android:layout_width="match_parent"  
    10.         android:layout_height="match_parent"  
    11.         android:background="@color/white" />  
    12.   
    13. </LinearLayout>  

    第四步:创建TbsActivity.class

    [java] view plain copy
     
    1. import android.graphics.PixelFormat;  
    2. import android.os.Bundle;  
    3. import android.support.v7.app.AppCompatActivity;  
    4. import android.util.Log;  
    5. import android.view.KeyEvent;  
    6. import android.view.WindowManager;  
    7. import com.tencent.smtt.sdk.WebChromeClient;  
    8. import com.tencent.smtt.sdk.WebSettings;  
    9. import com.tencent.smtt.sdk.WebView;  
    10. import com.tencent.smtt.sdk.WebViewClient;  
    11. import com.xiong.tbs_x5.R;  
    12.   
    13. /** 
    14.  * Created by xiongwenwei@aliyun.com 
    15.  * CreateTime: 2017/1/13 
    16.  * Note:腾讯浏览服务 
    17.  */  
    18. public class TbsActivity extends AppCompatActivity{  
    19.       
    20.     private com.tencent.smtt.sdk.WebView webView;  
    21.     private String url = "http://3g.qq.com";  
    22.   
    23.     @Override  
    24.     protected void onCreate(Bundle savedInstanceState) {  
    25.         super.onCreate(savedInstanceState);  
    26.         setContentView(R.layout.activity_main);  
    27.         getWindow().setFormat(PixelFormat.TRANSLUCENT);//(这个对宿主没什么影响,建议声明)  
    28.         getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE | WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);  
    29.   
    30.         initView();  
    31.         loadUrl(url);  
    32.     }  
    33.   
    34.     private void initView() {  
    35.         webView = (com.tencent.smtt.sdk.WebView) findViewById(R.id.webView);  
    36.     }  
    37.   
    38.     private void loadUrl(String url) {  
    39.         WebSettings webSettings = webView.getSettings();  
    40.         webSettings.setJavaScriptEnabled(true);  
    41.         webView.loadUrl(url);  
    42.         webView.setWebViewClient(new WebViewClient() {  
    43.             @Override  
    44.             public boolean shouldOverrideUrlLoading(WebView view, String url) {  
    45.                 view.loadUrl(url);  
    46.                 return true;  
    47.             }  
    48.   
    49.             @Override  
    50.             public void onReceivedError(WebView var1, int var2, String var3, String var4) {  
    51.                 Log.i("打印日志","网页加载失败");  
    52.             }  
    53.         });  
    54.         //进度条  
    55.         webView.setWebChromeClient(new WebChromeClient() {  
    56.             @Override  
    57.             public void onProgressChanged(WebView view, int newProgress) {  
    58.                 if (newProgress == 100) {  
    59.                     Log.i("打印日志","加载完成");  
    60.                 }  
    61.             }  
    62.         });  
    63.     }  
    64.   
    65.     @Override  
    66.     protected void onDestroy() {  
    67.         super.onDestroy();  
    68.         if (webView != null) webView.destroy();  
    69.     }  
    70.   
    71.     @Override  
    72.     public boolean onKeyDown(int keyCode, KeyEvent event) {  
    73.         if (keyCode == KeyEvent.KEYCODE_BACK) {  
    74.             if (webView != null && webView.canGoBack()) {  
    75.                 webView.goBack();  
    76.                 return true;  
    77.             }  
    78.             return super.onKeyDown(keyCode, event);  
    79.         }  
    80.         return super.onKeyDown(keyCode, event);  
    81.     }  
    82.       
    83. }  

    【接入成功效果】

    上述代码只是最基础的集成,更多的效果,请移步官网 [官网接入文档]

    大概试了下,APP第一次启动好像用的还是自带Webview,猜测是X5内核还没下载完吧

    接入成功,标志:1.长按文字会出现"保存离线网页" 2.复制英文会出现"翻译" 3.复制文字会有水滴标志

  • 相关阅读:
    (字符串)子串变位词
    反转链表 II
    翻转链表
    覆盖索引
    MySQL索引结构之Hash索引、full-text全文索引(面)
    MySQL索引结构之B+树索引(面)
    MYSQL 存储引擎(面)
    MySQL架构(面)
    如何在Linux Mint 20系统上安装Pip
    如何在CentOS 8系统服务器上安装Nginx
  • 原文地址:https://www.cnblogs.com/cnsanshao/p/8334124.html
Copyright © 2011-2022 走看看