TBS 腾讯浏览服务 集成

Posted All For Revenge

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TBS 腾讯浏览服务 集成相关的知识,希望对你有一定的参考价值。

腾讯浏览服务-首页  http://x5.tencent.com/

官方文档不多,不过实例比较详细,配置和谷歌的Webview差不多,Webview有的方法,TBS也都有。

jar包不到300KB,但是它需要X5内核,需要另外下载,不过如果手机装了微信QQ,就可以用它们的了。

 

把下载jar包添加到项目

在Application添加

public class App extends Application {

    @Override
    public void onCreate() {

        super.onCreate();

        // 搜集本地tbs内核信息并上报服务器,服务器返回结果决定使用哪个内核。
        // TbsDownloader.needDownload(getApplicationContext(), false);

        QbSdk.PreInitCallback cb = new QbSdk.PreInitCallback() {

            @Override
            public void onViewInitFinished(boolean arg0) {
                // TODO Auto-generated method stub
                Log.e("apptbs", " onViewInitFinished is " + arg0);
            }

            @Override
            public void onCoreInitFinished() {
                // TODO Auto-generated method stub

            }
        };
        QbSdk.setTbsListener(new TbsListener() {
            @Override
            public void onDownloadFinish(int i) {
                Log.d("apptbs", "onDownloadFinish");
            }

            @Override
            public void onInstallFinish(int i) {
                Log.d("apptbs", "onInstallFinish");
            }

            @Override
            public void onDownloadProgress(int i) {
                Log.d("apptbs", "onDownloadProgress:" + i);
            }
        });

        QbSdk.initX5Environment(getApplicationContext(), cb);

    }

}

 

MainActivity    布局全是按钮

public class MainActivity extends Activity {

    private Intent intent;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        intent = new Intent(MainActivity.this, WebActivity.class);
    }

    public void btn(View v) {
        switch (v.getId()) {

        case R.id.btn1:
            intent.putExtra("url", "https://www.huxiu.com/article/168405.html");
            startActivity(intent);
            break;
        case R.id.btn2:
            intent.putExtra("url", "http://feizaojilao.esy.es/history.html");
            startActivity(intent);
            break;
        case R.id.btn3:
            intent.putExtra("url", "http://v.qq.com/cover/z/z1x68ih8qwjbsen.html");
            startActivity(intent);
            break;
        case R.id.btn4:
            intent.putExtra("url", "http://v.youku.com/v_show/id_XMTc3NTIzNjY2NA==.html?spm=a2hww.20023042.m_223465.5~5~5~5!2~5~5~A&from=y1.3-idx-beta-1519-23042.223465.4-1");
            startActivity(intent);
            break;
        case R.id.btn5:
            intent.putExtra("url", "http://www.hao123.com/");
            startActivity(intent);
            break;
        case R.id.btn6:
            intent.putExtra("url", "http://www.apta.gov.cn/Information/ActivityDetail?aid=167");
            startActivity(intent);
            break;
        case R.id.btn7:
            intent.putExtra("url", "http://220.180.239.166/Information/ActivityDetail?aid=123");
            startActivity(intent);
            break;

        default:
            break;
        }

    }

}

 

WebActivity

public class WebActivity extends Activity {

    WebView tbsWebView;
    ProgressBar web_bar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_web);

        ActionBar actionBar = getActionBar();
        actionBar.setDisplayHomeAsUpEnabled(true);

        String url = getIntent().getStringExtra("url");

        web_bar = (ProgressBar) findViewById(R.id.web_bar);
        web_bar.getProgressDrawable().setColorFilter(Color.RED,
                android.graphics.PorterDuff.Mode.SRC_IN);

        tbsWebView = (WebView) findViewById(R.id.tbsWebView);
        tbsWebView.loadUrl(url);

        WebSettings settings = tbsWebView.getSettings();
        settings.setjavascriptEnabled(true);

        // 设置加载进来的页面自适应手机屏幕
        settings.setUseWideViewPort(true);
        settings.setLoadWithOverviewMode(true);

        settings.setSupportZoom(true);
        settings.setBuiltInZoomControls(true);
        settings.setDisplayZoomControls(true);
        
        
        //settings.setUserAgent( );

        tbsWebView.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                Log.e("WebView ", "shouldOverrideUrlLoading " + url);
                view.loadUrl(url);
                return true;
            }

        });

        tbsWebView.setWebChromeClient(new WebChromeClient() {
            @Override
            public void onProgressChanged(WebView view, int newProgress) {
                super.onProgressChanged(view, newProgress);
                web_bar.setProgress(newProgress);

                if (newProgress == 100) {
                    web_bar.setVisibility(View.GONE);
                } else {
                    web_bar.setVisibility(View.VISIBLE);
                }
            }

        });
    }

    @Override
    protected void onDestroy() {
        if (tbsWebView != null)
            tbsWebView.destroy();
        super.onDestroy();
    }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK && tbsWebView.canGoBack()) {
            tbsWebView.goBack();
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {

        switch (item.getItemId()) {
        case android.R.id.home:
            finish();
            return true;
        default:
            return super.onOptionsItemSelected(item);
        }
    }

}

 

布局

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.tsbdemo.WebActivity" >

    <com.tencent.smtt.sdk.WebView
        android:id="@+id/tbsWebView"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <ProgressBar
        android:id="@+id/web_bar"
        style="?android:attr/progressBarStyleHorizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="-7dp"
        android:layout_marginTop="-7dp"
        android:indeterminate="false" />

</RelativeLayout>

 

 

简单测试了一下,没有什么问题,感觉应该不会差,毕竟微信QQ内置的Webview都是这个

 

参考

性能 http://x5.tencent.com/guide?id=4000

Crosswalk 开发浅析,忘掉那些Webview的坑 - sslinp的博客 - 博客频道 - CSDN.NET  http://blog.csdn.net/sslinp/article/details/51607237

Android WebView常见问题及解决方案汇总 - Whatever is worth doing is worth doing well. - 博客频道 - CSDN.NET  http://blog.csdn.net/t12x3456/article/details/13769731

QQ浏览器X5内核问题汇总  https://www.qianduan.net/qqliu-lan-qi-x5nei-he-wen-ti-hui-zong/

 

以上是关于TBS 腾讯浏览服务 集成的主要内容,如果未能解决你的问题,请参考以下文章

记一次腾讯TBS浏览服务集成实践

记一次腾讯TBS浏览服务集成实践

腾讯TBS浏览服务多次打开文件出现等待问题

集成腾讯TBS x5浏览器内核笔记

Android开发笔记(一百八十四)利用TBS浏览各种文档

Android开发笔记(一百八十四)利用TBS浏览各种文档