如果你的app当中需要浏览文件(word、excel、ppt、pdf、txt...)的功能,那么TBS腾讯浏览服务提供的文件解决能力是你一个不错的选择。
关于这方面的介绍可以去官网详细了解。
接入
文件解决能力是依赖于x5内核的,因此第一步就是要接入x5内核(接入文档):
-
添加jar包。
下载sdk时要选择包含文件能力的那个,如下:
sdk包括如下文件:
其中第一个就是要添加的jar,第二个pdf文档是文件能力的接入文档。
- 加入权限
<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" />
- 在application的onCreate中加载x5内核
//搜集本地tbs内核信息并上报服务器,服务器返回结果决定使用哪个内核。
QbSdk.PreInitCallback cb = new QbSdk.PreInitCallback() {
@Override
public void onViewInitFinished(boolean arg0) {
// TODO Auto-generated method stub
//x5內核初始化完成的回调,为true表示x5内核加载成功,否则表示x5内核加载失败,会自动切换到系统内核。
Log.d("app", " onViewInitFinished is " + arg0);
}
@Override
public void onCoreInitFinished() {
// TODO Auto-generated method stub
}
};
//x5内核初始化接口
QbSdk.initX5Environment(getApplicationContext(), cb);
使用文件解决能力
有两种方式:
- 调用QbSdk.openFileReader方法打开文件。
QbSdk.openFileReader(Context context, String filePath, HashMap<String, String>
extraParams,ValueCallback<String> callback)
此方式优先调起 QQ 浏览器打开文件。如果没有安装 QQ 浏览器,在 X5 内核下调起简版 QB(miniqb) 打开文件。如果使用的系统内核,则调起文件阅读器弹框。
- 使用sdk提供的TbsReaderView来加载并显示文件
TbsReaderView.openFile(Bundle bundle)
此方式不会调起其他页面来加载。
两种方式的区别
- 官方文档中只提供了方式一的接入方式,而方式二是我在网上发现的。官方推荐的当然会稳妥一点。
- 方式一有QQ浏览器和x5内核的支持,因此提供的能力更全面,包括支持更多的格式(使用QQ浏览器调起),最近打开的文件(QQ浏览器和x5内核均支持),文件管理能力(使用QQ浏览器调起)。
- 当手机没有安装QQ浏览器,但能加载x5内核时,第一次打开可能还是会弹出文件阅读器弹框,第二次打开才能正常使用miniqb加载文档。
- 方式二在手机没装QQ浏览器且没有x5内核的情况下,会弹出文件阅读器弹框让用户选择打开方式,当用户没有安装对应app的情况下,则无法打开该文件。
注意
- 方式二在activity销毁时记得调用TbsReaderView.onStop()方法,否则再次打开文件会显示一直加载中。
- 两种方式都不支持在线浏览文件,要实现在线浏览功能只能自己讲文件下载下来再用以上两种方式打开。
方式1的效果
手机未安装QQ浏览器且无x5内核:
手机未安装QQ浏览器但已加载x5内核:
手机安装了QQ浏览器:
已安装QQ浏览器,点击最近打开文件按钮:
查看全部文件:
方式2的效果
具体实现看代码吧