1、在官網上下載SDK,里面包含我們需要的jar,官網地址:https://x5.tencent.com/。
把jar復制放在libs目錄下,如圖:

2、把SDK里面的liblbs.so庫復制到這里,如圖:

3、在build.gradle文件添加ndk和sourceSets設置,如圖:

(1)//配置so文件
ndk {
abiFilters"armeabi","armeabi-v7a","x86","mips"
}
(2)android節(jié)點里,添加:
sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}
4、使用方法,目前騰訊的瀏覽支持本地文件的預覽。
在主項目的application里必須要初始化QbSdk方法:(有誰能教教我格式化代碼復制到簡書,實在太難看?。?/p>
/**
* TBS 庫初始化
*/
public void initTBSReader(){
QbSdk.initX5Environment(this, new QbSdk.PreInitCallback() {
@Override
public void onCoreInitFinished() {
Log.v("initTBSReader", "========= QbSdk initX5Environment: onCoreInitFinished =========");
? ? ? ? }
@Override
public void onViewInitFinished(boolean b) {
//這里被回調,并且b=true說明內核初始化并可以使用
? ? ? ? ? ? Log.v("initTBSReader", "========= QbSdk initX5Environment: 加載內核是否成功 =========b:" + b);
? ? ? ? }
});
? ? QbSdk.setDownloadWithoutWifi(true);
? ? // 下載內核的監(jiān)聽
? ? QbSdk.setTbsListener(new TbsListener() {
@Override
public void onDownloadFinish(int i) {
//tbs內核下載完成回調
? ? ? ? ? ? Log.v("initTBSReader", "========= QbSdk onDownloadFinish ======== " + i);
? ? ? ? }
@Override
public void onInstallFinish(int i) {
//內核安裝完成回調
? ? ? ? ? ? Log.v("initTBSReader", "========= QbSdk onInstallFinish ======== " + i);
? ? ? ? }
@Override
public void onDownloadProgress(int i) {
//下載進度監(jiān)聽
? ? ? ? ? ? Log.v("initTBSReader", "========= QbSdk onDownloadProgress ======== " + i);
? ? ? ? }
});
}
5、權限的設置,必須確保有讀取文件權限,
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
6、用法如下:
布局:

Activity的關鍵代碼如下:
/**
* 添加TbsReaderView
*
* @param path
*/
public void addTBSReaderView(String path, String fileName) {
LinearLayout layout = findViewById(R.id.layout);
? ? TbsReaderView tbsReaderView =new TbsReaderView(this, new TbsReaderView.ReaderCallback() {
@Override
public void onCallBackAction(Integer integer, Object o, Object o1) {
}
});
? ? layout.addView(tbsReaderView, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT));
? ? String tempFileStr = Environment.getExternalStorageDirectory() +"/TbsReaderTemp";
? ? Log.v("Test", "======== tempFileStr:" + tempFileStr);
? ? File tempFile =new File(tempFileStr);
? ? if (!tempFile.exists()) {
boolean result = tempFile.mkdir();
? ? ? ? if (!result) {
Log.v("Test", "========= TbsReaderTemp 生成失??! ======== ");
? ? ? ? }
}
Bundle bundle =new Bundle();
? ? bundle.putString("filePath", path);
? ? bundle.putString("tempPath", tempFile.getAbsolutePath());
? ? boolean isSupportType = tbsReaderView.preOpen(getFileType(fileName), false);
? ? if (isSupportType) {
tbsReaderView.openFile(bundle);
? ? }else {
Toast.makeText(this, "暫不支持該文件的格式", Toast.LENGTH_SHORT).show();
? ? }
}
/***
* 獲取文件類型
*
* @param paramString
* @return
*/
public String getFileType(String paramString) {
String str ="";
? ? if (TextUtils.isEmpty(paramString)) {
Log.v("getFileType", "paramString---->null");
? ? ? ? return str;
? ? }
Log.v("getFileType", "paramString:" + paramString);
? ? int i = paramString.lastIndexOf('.');
? ? if (i <= -1) {
Log.v("getFileType", "i <= -1");
? ? ? ? return str;
? ? }
str = paramString.substring(i +1);
? ? Log.v("getFileType", "paramString.substring(i + 1)------>" + str);
? ? return str;
}
調用:

大功告成?。。?/p>