其实吧,网络上很多 X5的教程。我只是想写一点 我遇到的问题吧。
https://x5.tencent.com/tbs/sdk.html
上面是官网下载地址。Android studio 可以直接 导入,很方便。
像这个样子。
api 'com.tencent.tbs.tbssdk:sdk:43697'
然后听说 需要 兼容一些 cpu。需要导入一些 .so 文件,和一些配置。
像这个样子。
配置像这个样子。
vectorDrawables.useSupportLibrary = true
ndk {
abiFilters "armeabi", "armeabi-v7a", "x86", "mips"
}
image.png
然后在 自己的Application 的onCreate 写入初始化。
像这个样子
QbSdk.setDownloadWithoutWifi(true);
QbSdk.initX5Environment(this, new QbSdk.PreInitCallback() {
@Override
public void onCoreInitFinished() {
Log.e(TAG, "onCoreInitFinished: " );
}
@Override
public void onViewInitFinished(boolean b) {
Log.e(TAG, "onViewInitFinished: "+b );
}
});
以上 都和别人写的没有任何区别。
然后 骚的事情来了。我的下载监听 竟然的false.
下面就是 debug 之路了。
首先在你手动下的sdk 的压缩文件解压应该是这个样子。
jar 文件 名字被我改掉了(这个可以忽略)。
另外一个是问题自查手册,还是可以看一下,关键是 我特么内核都加载失败了,能自己应用中打开吗?还不是 只能微信打开。debugtbs.qq.com 这个网址还有有用的,如果x5浏览器能够打开这个网址,说明,x5内核加载成功了。
这么一想,是一个思路。
然后提示网络错误?嗯???
换了一个 9以下的手机,发现内核加载成功了,en???
image.png
https://x5.tencent.com/tbs/technical.html#/detail/sdk/1/b1b4cd06-f71e-47ab-b15f-f92fa9fe81da
将上面配置 写入项目。然后X5 就可以打开 debugtbs.qq.com了。
写了这么多,其实 就是 这么一句话 没找到:
由于debugtbs.qq.com访问需要依赖http请求,当targetAPI为28时非Https请求将会被block,会导致部分内核功能异常。您可以手动降低targetAPi到27及以下或者在您的AndroidManifst.xml中的Application标签中添加
android:networkSecurityConfig="@xml/network_security_config"
并在app的res/xml目录中添加network_security_config.xml文件,文件内容为
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true" />
</network-security-config>
然后 就是文件 预览 了。
还是 下载的sdk 里面 有这么一个文件。
image.png
其实加载文件就这样
/**
* 本地播放。
* @param pathName
*/
public void openFileReader(String pathName) {
HashMap<String, String> params = new HashMap<String, String>();
params.put("local", "true");
JSONObject Object = new JSONObject();
try
{
Object.put("pkgName",this.getApplicationContext().getPackageName());
}
catch (JSONException e)
{
e.printStackTrace();
}
params.put("menuData",Object.toString());
QbSdk.getMiniQBVersion(this);
int ret = QbSdk.openFileReader(this, pathName, params, this);
}
然后 骚的是如果有QQ浏览器,他会优先用QQ浏览器打开,这个估计可以设置。上面那张图片 指向的那个 pdf 有传参 含义的(我没有仔细看过)。
如果没有QQ浏览器 他就会当前应用打开,像这样子,
image.png
我们老板不喜欢这个样子,然后,继续改吧。
通过百度发现 其实 他是通过这个TbsReaderView 加载预览文件的,通过 TbsReaderView 预览的文件 是没有刚刚的头和尾部的。
然后 TbsReaderView 的使用教程 百度下吧。
image.png
这个是必须加了,否则,下一次加载不了,还有一个问题,就是同时只能用一个,用了openFileReader 再用TbsReaderView TbsReaderView加载不出来内容。
网友评论