腾讯浏览器服务TBS使用

官方:https://x5.tencent.com/tbs/index.html

我的环境:

Android Studio 3.4.1
Build #AI-183.6156.11.34.5522156, built on May 2, 2019
JRE: 1.8.0_152-release-1343-b01 amd64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
Windows 10 10.0

之前有使用过一次TBS,好像直接修改的官方例子,

今天是第二次使用,打算全手工引入TBS,以便熟悉整个过程

开始:

1、新建一个简单android工程,解压TBS SDK后,把文件:

tbs_sdk_thirdapp_v4.3.0.3_43903_sharewithdownloadwithfile_withoutGame_obfs_20200402_121309.jar

放到项目的libs文件夹里面:

2、在Android Studio里面按快捷键 Alt+Ctrl+Shift+S 打开Project Structure
    点击左边 Dependencies,把jar包 

bs_sdk_thirdapp_v4.3.0.3_43903_sharewithdownloadwithfile_withoutGame_obfs_20200402_121309.jar

添加到工程里面

3、创建一个java类:APPAplication 包名根据实际情况修改,

APPAplication类代码如下:
package com.ssc.football.sharevip;

import android.app.Application;
import android.util.Log;

import com.tencent.smtt.sdk.QbSdk;

public class APPAplication extends Application {
    public static String LogTag = "ShareVIP";

    @Override
    public void onCreate() {
        // TODO Auto-generated method stub
        super.onCreate();

        Log.d(LogTag, "APPAplication onCreate...");

        //搜集本地tbs内核信息并上报服务器,服务器返回结果决定使用哪个内核。

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

            //x5內核初始化完成的回调,为true表示x5内核加载成功,否则表示x5内核加载失败,会自动切换到系统内核。
            @Override
            public void onViewInitFinished(boolean arg0) {
                Log.d(LogTag, " onViewInitFinished is " + arg0);
            }

            @Override
            public void onCoreInitFinished() {
                Log.d(LogTag, "onCoreInitFinished...");
            }
        };

        QbSdk.initX5Environment(getApplicationContext(),  cb);  //x5内核初始化接口
        Log.d(LogTag, "APPAplication onCreate finish...");

    }

}

4、layout里面创建一个文件 activity_browser.xml 用来显示网页,内容如下:

<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".BrowserActivity">

    <com.tencent.smtt.sdk.WebView
        android:id="@+id/forum_context"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:paddingLeft="5dp"
        android:paddingRight="5dp" />

</androidx.coordinatorlayout.widget.CoordinatorLayout>

5.创建一个类 BrowserActivity,包名根据实际情况修改,内容如下:

package com.ssc.football.sharevip;

import android.graphics.PixelFormat;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import android.util.Log;
import android.view.View;

import com.tencent.smtt.sdk.WebSettings;
import com.tencent.smtt.sdk.WebView;
import com.tencent.smtt.sdk.WebViewClient;

public class BrowserActivity extends AppCompatActivity {

    com.tencent.smtt.sdk.WebView mWebView = null;

    private WebViewClient mWebViewClient = new WebViewClient() {
        /**
         * 防止加载网页时调起系统浏览器
         */
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            mWebView.loadUrl(url);
            return true;
        }
    };

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

        Log.d(APPAplication.LogTag, "BrowserActivity onCreate...");
//        if(true){
//            return;
//        }

        getWindow().setFormat(PixelFormat.TRANSLUCENT);
        mWebView = (com.tencent.smtt.sdk.WebView)findViewById(R.id.forum_context);
        initWebViewSettings();

//        String url = "https://www.baidu.com/?t=" + System.currentTimeMillis();
        String url = "https://www.baidu.com";
        mWebView.clearFormData();
        mWebView.clearHistory();
        mWebView.clearCache(true);
        mWebView.loadUrl(url);

        Log.d(APPAplication.LogTag, "BrowserActivity onCreate finish...");
    }

    private void initWebViewSettings() {
        WebSettings webSetting = mWebView.getSettings();
        webSetting.setJavaScriptEnabled(true);
        webSetting.setJavaScriptCanOpenWindowsAutomatically(true);
        webSetting.setAllowFileAccess(true);
        webSetting.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS);
        webSetting.setSupportZoom(true);
        webSetting.setBuiltInZoomControls(true);
        webSetting.setUseWideViewPort(true);
        webSetting.setSupportMultipleWindows(true);
        // webSetting.setLoadWithOverviewMode(true);
        webSetting.setAppCacheEnabled(true);
        webSetting.setDatabaseEnabled(true);
        webSetting.setDomStorageEnabled(true);
        webSetting.setGeolocationEnabled(true);
        webSetting.setAppCacheMaxSize(Long.MAX_VALUE);
        // webSetting.setPageCacheCapacity(IX5WebSettings.DEFAULT_CACHE_CAPACITY);
        webSetting.setPluginState(WebSettings.PluginState.ON_DEMAND);
        // webSetting.setRenderPriority(WebSettings.RenderPriority.HIGH);
        webSetting.setCacheMode(WebSettings.LOAD_NO_CACHE);
        webSetting.setSaveFormData(false);
        mWebView.setWebViewClient(mWebViewClient);

        // this.getSettingsExtension().setPageCacheCapacity(IX5WebSettings.DEFAULT_CACHE_CAPACITY);//extension
        // settings 的设计

    }

}

6、修改文件 AndroidManifest.xml,加入

   <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />

    <!-- 硬件加速对X5视频播放非常重要,建议开启 -->
    <uses-permission android:name="android.permission.GET_TASKS" />

  和

     <activity
            android:name=".BrowserActivity"
            android:label="@string/title_activity_browser"
            android:configChanges="orientation|screenSize|keyboardHidden"
            android:theme="@style/AppTheme.NoActionBar">
        </activity>

7、res\values\strings.xml 加入项:
<string name="title_activity_browser">BrowserActivity</string>

8、修改 MainActivity, 加入一个方法,用来打开网页:

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

//        Toolbar toolbar = findViewById(R.id.toolbar);
//        setSupportActionBar(toolbar);
//
//        FloatingActionButton fab = findViewById(R.id.fab);
//        fab.setOnClickListener(new View.OnClickListener() {
//            @Override
//            public void onClick(View view) {
//                Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
//                        .setAction("Action", null).show();
//            }
//        });

        StartBrowserActivity();

    }

    public void StartBrowserActivity(){
        Intent intent = new Intent(MainActivity.this, BrowserActivity.class);
        MainActivity.this.startActivity(intent);
    }

 

9、编译运行就可以打开网页了

 

整个流程大概就是这样子了,可能有遗漏的地方,具体还是看我的例子代码吧,

整个例子代码下载地址:

腾讯浏览器服务器TBS使用例子.rar

 

 

 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

friendan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值