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节点里,添加:
sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}
4、使用方法,目前腾讯的浏览支持本地文件的预览。
在主项目的application里必须要初始化QbSdk方法:(有谁能教教我格式化代码复制到,实在太难看!)
/**
* 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);
// 下载内核的监听
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) {
//下载进度监听
Log.v("initTBSReader", "========= QbSdk onDownloadProgress ======== " + i);
}
});
}
5、权限的设置,必须确保有读取文件权限,
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;
}
调用:
大功告成!!!