美文网首页
日常搬砖腾讯X5 tbs 文件预览

日常搬砖腾讯X5 tbs 文件预览

作者: luoye呀 | 来源:发表于2019-08-21 16:56 被阅读0次

    其实吧,网络上很多 X5的教程。我只是想写一点 我遇到的问题吧。
    https://x5.tencent.com/tbs/sdk.html
    上面是官网下载地址。Android studio 可以直接 导入,很方便。
    像这个样子。
    api 'com.tencent.tbs.tbssdk:sdk:43697'
    然后听说 需要 兼容一些 cpu。需要导入一些 .so 文件,和一些配置。
    像这个样子。

    image.png
    配置像这个样子。
    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 的压缩文件解压应该是这个样子。

    image.png
    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加载不出来内容。

    相关文章

      网友评论

          本文标题:日常搬砖腾讯X5 tbs 文件预览

          本文链接:https://www.haomeiwen.com/subject/cylisctx.html