美文网首页
集成腾讯TbsReaderView浏览多种格式的文件

集成腾讯TbsReaderView浏览多种格式的文件

作者: sunny635533 | 来源:发表于2020-02-25 18:41 被阅读0次

    1、在官网上下载SDK,里面包含我们需要的jar,官网地址:https://x5.tencent.com/

    把jar复制放在libs目录下,如图:

    图1

    2、把SDK里面的liblbs.so库复制到这里,如图:

    图2

    3、在build.gradle文件添加ndk和sourceSets设置,如图:

    图4

    (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、权限的设置,必须确保有读取文件权限,

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

    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;

    }

    调用:

    大功告成!!!

    相关文章

      网友评论

          本文标题:集成腾讯TbsReaderView浏览多种格式的文件

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