0
点赞
收藏
分享

微信扫一扫

腾讯浏览器服务TBS使用

我是芄兰 2023-01-26 阅读 184


官方:​​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文件夹里面:

腾讯浏览器服务TBS使用_android

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

添加到工程里面

腾讯浏览器服务TBS使用_android_02

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>

腾讯浏览器服务TBS使用_android_03

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);
}

腾讯浏览器服务TBS使用_android_04

 

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

腾讯浏览器服务TBS使用_ide_05

 

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

整个例子代码下载地址:

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

 

 

 

 

 

 

举报

相关推荐

0 条评论