TBS腾讯浏览服务-阅览office系列文件

最近需要实现一个功能,在android平台下浏览office系列的文件,最终选择使用腾讯浏览服务。

腾讯浏览服务在使用的时候是需要首先初始化内核的,内核大概有30M,如果你手机有安装wx,qq这类的应用,项目本身是可以共享tbs内核的,但是我是机顶盒设备,正好属于那种没有腾讯生态的环境,所以必须自己提前初始化内核。

有些坑,不过最后实现了,简单总结一下,以备不时之需。腾讯浏览服务官网是有demo的,但是你拿到demo以后可能并不能非常顺畅的去使用,并且官网并没有特别详细的进行描述,导致费了不少的时间,请各位同学看下面的步骤。

首先,如果要使用浏览服务,是需要用到一个jar包的,在app同一目录下创建libs,还会用到一个so库文件,一并加入到项目中去,如下图:

 这个时候准备工作就做好了,然后需要在自己的Application中初始化内核接口,因为浏览服务是不提供静态内核的,必须要通过联网的方式下载动态内核,所以需要在应用一起动的时候就去初始化内核,代码如下:

public class DemoApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        //x5内核初始化接口
        QbSdk.initX5Environment(getApplicationContext(),  cb);
    }
    /**
     * 搜集本地tbs内核信息并上报服务器,服务器返回结果决定使用哪个内核。
     */
    QbSdk.PreInitCallback cb = new QbSdk.PreInitCallback() {

        @Override
        public void onViewInitFinished(boolean isX5Core) {
            //x5內核初始化完成的回调,为true表示x5内核加载成功,否则表示x5内核加载失败,会自动切换到系统内核。
            Log.e("APPAplication", " onViewInitFinished is " + isX5Core);
        }

        @Override
        public void onCoreInitFinished() {
            Log.e("APPAplication", " onCoreInitFinished");
        }
    };
    @Override
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
        
    }
}

这个application里每次启动初始化方法的时候,onViewInitFinished如果返回true,就是初始化成功,返回false就是初始化失败,刚开始测试的时候,发现一个问题,反复启动,总是出现初始化失败的情况,so我增加了一个activiy,可以提前把内核下载下来,不过这个是腾讯给出的测试demo,不能用于正式项目中去

下一步,就该到加载文件的地方了,其实主要用到的类是TbsReaderView,但是这个类是不可以定义到xml文件中去的,会报错,需要在类中定义,

mTbsReaderView = new TbsReaderView(context, readerCallback);

        RelativeLayout rootRl = findViewById(R.id.rl_root);
        rootRl.addView(mTbsReaderView, new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT));

最后就是打开文件的方法:QbSdk.openFileReader(context, pathName, params, valueCallback),在调用这个方法之前会提前检测一下文件是否支持打开,如果支持打开才会调用该方法

 public void openFileReader(Context context, String pathName)
    {

        HashMap<String, String> params = new HashMap<>();
        params.put("local", "true");
        JSONObject Object = new JSONObject();
        try{
            Object.put("pkgName",context.getApplicationContext().getPackageName());
        }catch (JSONException e){
            e.printStackTrace();
        }
        params.put("menuData",Object.toString());
        QbSdk.getMiniQBVersion(context);
        int ret = QbSdk.openFileReader(context, pathName, params, valueCallback);

    }

下面是demo的一个地址,可以看着玩,但是如果要加到自己的项目中去,还是需要加混淆文件,否则可能造成打包后无法使用

官网地址:https://x5.tencent.com/

demo地址:https://github.com/bichao1986/miniqbdemo.git

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值