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.复制文字会有水滴标志

  • 相关阅读:
    PAT (Advanced Level) 1080. Graduate Admission (30)
    PAT (Advanced Level) 1079. Total Sales of Supply Chain (25)
    PAT (Advanced Level) 1078. Hashing (25)
    PAT (Advanced Level) 1077. Kuchiguse (20)
    PAT (Advanced Level) 1076. Forwards on Weibo (30)
    PAT (Advanced Level) 1075. PAT Judge (25)
    PAT (Advanced Level) 1074. Reversing Linked List (25)
    PAT (Advanced Level) 1073. Scientific Notation (20)
    PAT (Advanced Level) 1072. Gas Station (30)
    PAT (Advanced Level) 1071. Speech Patterns (25)
  • 原文地址:https://www.cnblogs.com/cnsanshao/p/8334124.html
Copyright © 2011-2022 走看看