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

 

 

 

posted on 2018-01-23 09:59 cn三少<script></script> 阅读(...) 评论(...) 编辑 收藏

导航

公告