美文网首页Android Tipsandroid自定义控件安卓
Android应用内展示word、excel、pdf、ppt等文

Android应用内展示word、excel、pdf、ppt等文

作者: 钟离四郎 | 来源:发表于2017-09-20 16:20 被阅读9929次

笔者最近两个项目里头都有需要展示文件的功能,于是做了一番调研,发现asce1885给出一份方案,不过都是关于pdf的展示:http://www.jianshu.com/p/1bf49af6584d,显然不符合笔者的要求,笔者的项目里需要展示的文件格式并不单一,后来经过一番搜索最后敲定使用腾讯的Tbs,可以在应用内打开各类型文件。不过这过程也有点坑。

什么是Tbs

腾讯浏览服务(TBS,Tencent Browsing Service)整合腾讯底层浏览技术和腾讯平台资源及能力,提供整体浏览服务解决方案。TBS更多详细的介绍,请移步:https://x5.tencent.com/tbs/

关于官网接入的坑

关于接入Tbs服务官网给出了接入文档:https://x5.tencent.com/tbs/guide/sdkInit.html,很搞笑的是我找了很久也没有发现具有打开文件能力demo工程,官网sdk里头的demo工程居然都没有展示文件功能,后来我发现官网论坛里有不少朋友留言,不知如何使用SdK打开文件,因此本文主要将的是如何使用SDK打开文件,以及对sdk打开文件的功能的简单封装。

如何接入

参考:https://x5.tencent.com/tbs/guide/sdkInit.html

  1. 第一步

下载 SDK jar 包放到工程的libs目录下

image.png
  1. 第二步

x5暂时不提供64位so文件,为了保证64位手机能正常加载x5内核,进行以下两项设置:
(1)打开对应module中的build.gradle文件,在文件的android{}中的defaultConfig{}里(如果没有defaultConfig{}则手动添加)添加如下配置: ndk{abiFilters "armeabi"}

image.png

(2)添加对应目录下的liblbs.so文件

image.png

如何展示文件

显示文件关键代码,例如:

Bundle localBundle = new Bundle();
            localBundle.putString("filePath", mFile.toString());
            localBundle.putString("tempPath", Environment.getExternalStorageDirectory() + "/" + "TbsReaderTemp");
            if (this.mTbsReaderView == null)
                this.mTbsReaderView = getTbsReaderView(context);
            boolean bool = this.mTbsReaderView.preOpen(getFileType(mFile.toString()), false);
            if (bool) {
                this.mTbsReaderView.openFile(localBundle);
            }

TbsReaderView是封装的用于展示文件的View,继承与FramLayout,首先调用mTbsReaderView.preOpen(getFileType(mFile.toString()), false)进行文件打开之前的初始化工作,然后调用的mTbsReaderView.openFile(localBundle)打开文件,localBundle里包含有文件在本地的路径,加载文件步骤十分简单,其中的加载任务全部交由tbs内核完成。

简单封装

有时候可能需要加载网络文件,但是tbs目前是暂时不支持在线预览的,因此是需要使用网络将文件下载下来之后在展示,因此笔者这里对获取文件路径这一部分进行封装,如下:

 public void show() {
        if(mOnGetFilePathListener!=null){
            mOnGetFilePathListener.onGetFilePath(this);
        }
    }

    /***
     * 将获取File路径的工作,“外包”出去
     */
    public interface OnGetFilePathListener {
        void onGetFilePath(SuperFileView2 mSuperFileView2);
    }

TbsReaderView是上面的SuperFileView2的子View,完整使用如下:

 mSuperFileView = (SuperFileView2) findViewById(R.id.mSuperFileView);
        //设置获取文件路径监听
        mSuperFileView.setOnGetFilePathListener(new SuperFileView2.OnGetFilePathListener() {
            @Override
            public void onGetFilePath(SuperFileView2 mSuperFileView2) {
                getFilePathAndShowFile(mSuperFileView2);
            }
        });

        Intent intent = this.getIntent();
        String path = (String) intent.getSerializableExtra("path");
        if (!TextUtils.isEmpty(path)) {
            TLog.d(TAG, "文件path:" + path);
            setFilePath(path);
        }
        mSuperFileView.show();

效果图

展示doc文件
显示doc文件
展示Excel文件
显示Excel文件
展示pdf文件
显示pdf文件
展示ppt文件
显示ppt文件
展示txt
显示TXT文件

后续:Bug 修复

网友反映有些手机加载不了文件,会出现以下画面:

文件预览失败.png

经过排查发现原因如下:

错误原因.png

解决办法:

2解决错误.png

另外一种方式确定是不是这个原因导致的文件加载失败,你可以文件管理器那里看看有没有这个文件夹存在,如下:

没有Temp文件夹.png

声明

之前有很多小伙伴遇到这个问题,刚好遇到国庆所以没有及时跟进,国庆后积压的工作有点多,都在还债,拖得有点久,很抱歉!现在终于搞定这个bug了,代码也已经同步github,各位可以检验一下。

源码

https://github.com/ZhongXiaoHong/superFileView

加入群讨论问题

QQ群:540686217

相关文章

网友评论

  • 2e9c5196a2db:本来的程序可以运行,过了一段时间是插件下载失败或者不支持pdf。是tbs升级内核的问题还是其他配置没有对呢?麻烦解答一下
  • 过期的薯条:不错 的
  • o夜以罙:我打开app然后点击控件跳转到新的h5页面,点击按钮到打开页面相差7秒,第二次就不会出现,这个碰到过吗
  • 97edd2c61891:08-02 15:31:42.214 11378-11378/? E/TbsReaderView: not supported by:docx

    安装了qq浏览器还是存在这个问题怎么解决?
  • ab1657f01cb2:插件加载失败,于是检查发现
    onViewInitFinished(boolean b)
    b一直为false。
    该机型运行你的demo,同样的操作,是成功的。纳闷
    ab1657f01cb2:找到原因了,是因为有其它功能的64位的so文件存在,需要去掉64位的(这么做影响其它sdk的功能吧......)。http://bbs.mb.qq.com/thread-1473368-2-1.html
  • c93c89b07129:E/TbsReaderView: not supported by:xlsx
    跟你写的一毛一样, 为什么我这里报不支持这个类型文件????求解:flushed:
    5db0c34e8781:@c93c89b07129 好的。谢谢,我试试
    c93c89b07129:@那就是吧 解决了,因为我的测试机上没有微信,QQ,QQ浏览器,所以手机初始没有装载x5内核. 我解决的办法是下载了一个 QQ 浏览器, 找了一个 pdf 文件, 然后通过 QQ 浏览器打开 pdf, 这时QQ 浏览器就提示加载x5内核, 完成之后...你再用你自己的写的程序打开就可以了. 这个时候就算是卸载了 微信,QQ,QQ浏览器等这些软件, 你的程序依然可以正常使用. 我觉得问题的主要原因还是因为自己集成了 tbs程序,没有加载 x5内核成功, 才导致的... 好了,这这么多!
    5db0c34e8781:我也是,请问你的问题解决了吗
  • 奋斗_e016:我这里打开pdf,word等都是空白。可能是什么情况呢?
  • 94d78a078ea2:请问楼主 可以监听插件加载状态么,产品要求 需要使用自己的loading 求解~
  • supersugar:试了下可行,不过现在不用这么麻烦了,官方文档上
    //params 为定制参数非必须选项可以传null 为默认设置
    public static final Stringjsondata = "{
    pkgName:\"com.example.thirdfile\", "
    + "className:\"com.example.thirdfile.IntentActivity\","
    + "thirdCtx: {pp:123},"
    + "menuItems:"
    + "["
    + "{id:0,iconResId:"+ R.drawable.ic_launcher +",text:\"menu0\"},
    {id:1,iconResId:" + R.drawable.bookmark_edit_icon + ",text:\"menu1\"},
    {id:2,iconResId:"+ R.drawable.bookmark_folder_icon +",text:\"菜单2\"}"
    + "]"
    + " }";
    HashMap<String, String> params = new HashMap<String, String>();
    params.put("style", "1");
    params.put("local", "true");
    params.put("memuData", jsondata);
    QbSdk.openFileReader(ctx,”/sdcard/xxx.doc”, params,callback);
    就可以打开了
  • a9a0d4e5ebab:兄弟,遇到过doc打开空白嘛
    a9a0d4e5ebab:@奋斗_e016 有时可以打开,有时打不开。很是尴尬
    奋斗_e016:请问我也是空白,你的解决了吗?
  • KaiBo_Zhang:楼主,如果文档中包含超链接如何屏蔽掉呢
  • wangjy029:请问,打开excel文件后有api可以编辑单元格吗?在上面截图上看有编辑按钮,但是我自己试了没有出现这个按钮。谢谢。
    钟离四郎:@wangjy029 不行 编辑功能是QQ 浏览器的
  • JiaCcc:三星s8无法预览
    03-29 17:13:50.373 3757-3757/com.silang.superfileview D/FileDisplayActivity: 文件下载成功,准备展示文件。
    03-29 17:13:50.373 3757-3757/com.silang.superfileview D/superFileLog: /storage/emulated/0/007/d7f7312b2c02785c16a8f750e82bacb9.doc
    03-29 17:13:50.374 3757-3757/com.silang.superfileview D/SuperFileView: paramString:/storage/emulated/0/007/d7f7312b2c02785c16a8f750e82bacb9.doc
    03-29 17:13:50.375 3757-3757/com.silang.superfileview D/SuperFileView: paramString.substring(i + 1)------>doc
    03-29 17:13:50.376 3757-3757/com.silang.superfileview E/TbsReaderView: not supported by:doc
    钟离四郎:@c3f611eba22e not support by 要检查是否有加载内核 也有可能是处于冷启动阶段
  • 11185d6e3d8c:请问下,加了QbSdk.initX5Environment还是报错not supported by:docx,华为手机4.4.2系统,另外一个5.0系统的魅族手机是正常的
    5db0c34e8781:你好,你的问题解决了吗?我也遇到这个问题了
  • 33af8f18cbf2:楼主大人,显示 最近文件 那个按钮能隐藏吗???
    钟离四郎:@海影_9fcb MotionEvent down = MotionEvent.obtain(System.currentTimeMillis(),
    System.currentTimeMillis(), MotionEvent.ACTION_DOWN, x, y, 0);
    mSuperFileView.mTbsReaderView.dispatchTouchEvent(down); 像这种 分别传入 down move up 事件来模拟
    33af8f18cbf2:@钟离四郎 不是很懂啊,要怎么做才能隐藏???求教
    钟离四郎:@海影_9fcb 你模拟滑动事件是可以隐藏的
  • AWeiLoveAndroid:不错 学习了
  • Shark_Li:有个问题 每次打开 右下角都会有 最近文件 按钮,点击这个按钮没有反应,可不可以将这个按钮隐藏啊
    烟雨如墨lsj:同问,有解决吗
    Shark_Li:@海影_9fcb 试了多种方法隐藏不了
    33af8f18cbf2:您好!最近文件 那个按钮 你有做到隐藏吗? 求教
  • Itachi001:兄弟,请问这个能控制页码吗
    KaiBo_Zhang:同问,哥们解决了没?
    Itachi001:就是能定位到某一页吗?
  • christian_zs:稳得很老哥:clap: :clap:
  • zziazm:您好,我从github下载下来之后运行报错:INSTALL_FAILED_NO_MATCHING_ABIS,请问是什么问题。
  • 3daa6f4ac8ae:楼主,遇到问题了,19以上的版本都没有问题,我们现在有个项目考虑的使用人群里有19以下的,19以下的不支持,该怎么改啊,你的源码最小版本改了貌似不管用,需要怎么做适配?
    3daa6f4ac8ae:楼主有时间来探讨下
  • 韶华逝:大佬 你这个文件读取后能做成翻页形式的吗?? 还有可以水平滑动吗??
    钟离四郎:@韶华逝 做不到,tbs没有暴露相关接口
  • 宏一:大哥,你是唯一一个写加载本地文件的了。遇到一个问题,一个本地文件第一次加载成功,第二次就一直加载中。杀掉进程重新进入应用还可以,以后就不行了。一脸懵逼
    钟离四郎:@宏一 大哥 你有没有在页面销毁的时候调用停止显示的方法呢
  • wo叫天然呆:楼主知道如何在APP中把数据通过excel的形式保存到SD卡上么
  • Afunnyrainman:楼主大大 preOpen 方法 not supported by: pdf 这个是为什么。。
    Afunnyrainman:@钟离四郎 看到了,测试机没有加载,那这样这个插件就不适合我了,信谢谢楼主
    钟离四郎:@Afunnyrainman 见github issues10
  • e07816a2727b:11-10 17:23:50.099 5368-5368/com.silang.superfileview D/SuperFileView: paramString:/storage/emulated/0/test.txt
    11-10 17:23:50.099 5368-5368/com.silang.superfileview D/SuperFileView: paramString.substring(i + 1)------>txt
    11-10 17:23:50.102 5368-5368/com.silang.superfileview E/TbsReaderView: not supported by:txt 这是什么问题啊?本地有文件?求指点
    e07816a2727b:@钟离四郎 谢谢
    钟离四郎:@Jakellim 见 github issues10
  • 小尤学习:您好博主,E/DexLoader: 'com.tencent.tbs.reader.TbsReader' invoke method 'openFile' failed
    报错,是为什么呢?
  • 小尤学习:您好博主,E/DexLoader: 'com.tencent.tbs.reader.TbsReader' invoke method 'openFile' failed
    报错,是为什么呢?
    钟离四郎:@天天天天天天顺利啦丶 只有这一点log 看不出 导致openFile失败的原因很多
  • 木溪bo:楼主,请问用你的demo为什么什么都不显示
    11-07 14:03:53.165 7987-7987/com.silang.superfileview D/FileDisplayActivity: 写入缓存文件47ab273ab2d89e34db3b890e2c1d2523.doc进度: 95
    11-07 14:03:53.165 7987-7987/com.silang.superfileview D/FileDisplayActivity: 写入缓存文件47ab273ab2d89e34db3b890e2c1d2523.doc进度: 100
    11-07 14:03:53.165 7987-7987/com.silang.superfileview D/FileDisplayActivity: 文件下载成功,准备展示文件。47ab273ab2d89e34db3b890e2c1d2523.doc
    11-07 14:03:53.165 7987-7987/com.silang.superfileview D/superFileLog: /storage/emulated/0/007/47ab273ab2d89e34db3b890e2c1d2523.doc
    11-07 14:03:53.165 7987-7987/com.silang.superfileview D/SuperFileView: paramString:/storage/emulated/0/007/47ab273ab2d89e34db3b890e2c1d2523.doc
    11-07 14:03:53.165 7987-7987/com.silang.superfileview D/SuperFileView: paramString.substring(i + 1)------>doc
    11-07 14:03:53.165 7987-7987/com.silang.superfileview E/TbsReaderView: not supported by:doc
    11-07 14:07:28.462 7987-7987/com.silang.superfileview W/EGL_emulation: eglSurfaceAttrib not implemented
    11-07 14:07:28.922 7987-7987/com.silang.superfileview D/superFileLog: FileDisplayActivity-->onDestroy
    11-07 14:07:29.602 7987-7987/com.silang.superfileview W/EasyPermissions: hasPermissions: API version < M, returning true by default
    11-07 14:07:29.602 7987-7987/com.silang.superfileview D/FileDisplayActivity: 文件path:/mnt/shared/Other/test.pdf
    11-07 14:07:29.602 7987-7987/com.silang.superfileview D/superFileLog: /mnt/shared/Other/test.pdf
    11-07 14:07:29.602 7987-7987/com.silang.superfileview D/SuperFileView: paramString:/mnt/shared/Other/test.pdf
    11-07 14:07:29.602 7987-7987/com.silang.superfileview D/SuperFileView: paramString.substring(i + 1)------>pdf
    11-07 14:07:29.602 7987-7987/com.silang.superfileview E/TbsReaderView: not supported by:pdf
    钟离四郎:@xinyu_bobo 看这个demo在github上的issues
    木溪bo:@钟离四郎 没大明白楼主意思,望指点指点:grin:
    钟离四郎:@xinyu_bobo 见github issue10
  • 不爽你打110:有些文件打得开,有些打不开。docx、xlsx、xls打得开,pdf、doc打不开 ~~ 这个应该会是什么原因?
    钟离四郎:@不爽你打110 项目中同时引入poi与tbs的包会有冲突,会导致x结尾文件预览失败,因此应该去除所有poi包
  • f6f9719bde3d: invokeInstance -- exceptions:java.lang.NoSuchMethodException: onCallBackAction [class java.lang.Integer, class java.lang.Object, class java.lang.Object]
    at java.lang.Class.getMethod(Class.java:1981)
    at java.lang.Class.getMethod(Class.java:1637)
    at com.tencent.tbs.reader.TbsReaderEventProxy.invokeInstance(Unknown Source)
    at com.tencent.tbs.reader.TbsReaderEventProxy.doCallBackEvent(Unknown Source)
    at com.tencent.tbs.reader.TbsReader.initReader(Unknown Source)
    at com.tencent.tbs.reader.TbsReader.openFile(Unknown Source)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.tencent.smtt.export.external.DexLoader.invokeMethod(Unknown Source)
    at com.tencent.smtt.sdk.p.a(Unknown Source)
    at com.tencent.smtt.sdk.TbsReaderView.openFile(Unknown Source)
    at com.silang.superfileview.SuperFileView2.displayFile(SuperFileView2.java:80)
    at com.silang.superfileview.FileDisplayActivity.getFilePathAndShowFile(FileDisplayActivity.java:72)
    f6f9719bde3d:@只听我说 @作者
    f6f9719bde3d:已解决。楼主能问一下这个工具支持编辑吗?例如我能不能签名啊什么的?能的话是否可以告知如何实现!
    f6f9719bde3d:@作者 这个是什么问题所有本地文件打开都是这样
  • 77bd46d24b6d:请问我以前用pdfview实现pdf浏览,poi实现word浏览,最近接到execl浏览要求,看到您的文章便使用tbs浏览execl文件,现在有反馈小米和华为有的手机提示插件加载失败,其中一款华为我用qq展示一次execl来加载插件,再次用自己app打开execl依旧不行,您能想到是什么问题吗?
  • 3aa474995a25:页面没有反应,
    log信息“invokeInstance -- exceptions:java.lang.NoSuchMethodException: onCallBackAction [class java.lang.Integer, class java.lang.Object, class java.lang.Object]” 页面展示 插件加载失败 怎么回事?
    钟离四郎: @willer_xu 你是否用检测工具检测过内核加载情况,这个nosuchmethod就算加载成功,则会提示,你不必理会
    3aa474995a25:@钟离四郎 我确定加载了腾讯的x5 内核,也在之前开启了x5的webVIew,然后在使用TbsReaderView 打开文件下载插件的时候,显示插件加载失败,x5的配置检查过了 都没什么问题。使用的代码是您github上的代码。我不知道是否是因为我的项目工程添加了什么导致插件加载失败
    钟离四郎: @willer_xu 看githubissues10
  • Blankeer:有没有其他方案?这个需要网络加载插件,有没有离线的,找了好久没找到 :joy:
    钟离四郎: @Blankeer 插件只需首次使用时候下载
  • a07e5a5d3bc8:你好,请问一下,为什么之前都可以预览,今天就不行了呢? 代码没改过的,Demo也预览不了了。
    钟离四郎: @a07e5a5d3bc8 见github issues10解答
  • 德斯儿:楼主,想问一下,目前有 无网络情况下,预览office文档的sdk吗?
  • a07e5a5d3bc8:你好,请问一下,为什么之前都可以预览,今天就不行了呢? 代码没动过,
  • 0fec67a3a6be:楼主你好,我运行了demo,能够打开ppt, 当我点击 “放映” 按钮,页面没有反应,
    log信息“invokeInstance -- exceptions:java.lang.NoSuchMethodException: onCallBackAction [class java.lang.Integer, class java.lang.Object, class java.lang.Object]”
    我的手机是 Android 4.4
    0fec67a3a6be:@钟离四郎 谢谢了,我有要在应用内播放ppt的需求。请问有没有推荐,我可以参考的。
    钟离四郎: @宰禹 tbs不具备ppt放映能力,你可以下载一个QQ手机浏览器,这个时候你点击放映按钮,会跳转到手机QQ浏览器去播放
  • smartapple:下载了博主的demo
    silang.superfileview D/FileDisplayActivity: 文件path:/storage/emulated/0/test_txt.txt
    10-16 16:32:56.365 20987-20987/com.silang.superfileview D/superFileLog: /storage/emulated/0/test_txt.txt
    10-16 16:32:56.365 20987-20987/com.silang.superfileview D/SuperFileView: paramString:/storage/emulated/0/test_txt.txt
    10-16 16:32:56.365 20987-20987/com.silang.superfileview D/SuperFileView: paramString.substring(i + 1)------>txt
    10-16 16:32:56.369 20987-20987/com.silang.superfileview E/TbsReaderView: not supported by:txt
    跑步起来 安装了qq浏览器 联网了 这个怎么破呢
    钟离四郎: @kun_shao 加我扣扣细说 931766850
  • 1801705fc442:not supported by
    钟离四郎: @在路上_8dd请问你是不是运行最新代码的,是不是提示文件失败,你可以看一下本篇文章后续bug修复部分,看能不能帮到你
  • Bo动:这个很好
  • joker_fu:这个是免费的吧
    钟离四郎: @joker_fu 是滴😊
  • 543f7fbb3b53:1、tbs需要通过服务端转码吗?
    2、在服务端或者本地会产生明文数据吗?
    钟离四郎: @HerbaSaussureae 使用插件解析,tbs细节你可以去官网查阅
  • 553cb5957f6b:楼主文章写的很好,有个问题 每次打开 右下角都会有 最近文件 按钮,点击这个按钮有没有反应,可不可以将这个按钮隐藏啊
    刘小net:@刘小net 经过与版主讨论和代码实践 发现模拟滑动 对于word excel pdf 均有效 对ppt无效
    刘小net:@钟离四郎 你好 我想问一下 模拟滑动这个方案可行么 我试的时候模拟滑动不可行 您这边能提供一些帮助么 万分感谢
    钟离四郎: @雨打芭蕉_c0a4 可以呀 你模拟一个滑动事件就可以
  • 7a0a7d47cbec:还是不行啊 不显示 直接运行你的demo 我换了华为的手机也不行
    钟离四郎: @liucun0505 什么原因呢?
    7a0a7d47cbec:可以了 楼主 谢谢
  • 有鱼说:请问下,我在官网下载的sdk包,里面文档讲用QbSdk.openFileReader这个接口呢?文档里面也没提TbsReaderView,是怎么发现这个的?
    钟离四郎: @史大狼 搜腾讯tbs
    史大狼:请问楼主是如何搜到腾讯的这个sdk,为何我当时开发的时候只搜到阿帕奇的poi ,解析excel 效果也不好
    钟离四郎: @有鱼说 反编译
  • b52f6d9c1666:问个问题,我发现TBS还提供文件管理器的功能
    文件服务-文件查看&文件管理器
    但是官网和文档内都找不到怎么调用这个文件管理器的方法,请问有什么办法调起吗?
    如果能能调起TBS的文件管理器的话还能少导一个文件管理器的库,省点方法数

  • LanYun:打开预览都是空白的 日志打印出来是 提示:TbsReaderView: not supported by:pdf
    7a0a7d47cbec:我也用不了
  • 冰冷的城市:楼主 点击第一个按钮之后 进去一直没反应
    冰冷的城市:@钟离四郎 等了半天都没用
    钟离四郎: @冰冷的城市 你要等一会,这个是网络下载,我在demo做的比较粗糙,没有加一个progress
  • 38c538a73803:你好,我下载了源代码,跑没问题,但是看不到我文件的内容。根据你的目录,我放在根目录下,并且命名为test了。 然后我看你提供的那个链接,有这么一段话:将源码和XML里的系统包和类替换为SDK里的包和类。请问是这个原因吗,还是其它原因造成的
    钟离四郎: @蓝蓝爱火 你再看看你的路径吧 不行的话你加我扣扣
    38c538a73803:@钟离四郎 确实是打开目录放进去的,平时我都这么放。另外网络那个也打不开
    钟离四郎: @蓝蓝爱火 请问你是放在内部存储吗,替换sdk这句话是官网说的替换webview.,跟这个没有关系,你最好检查一下你的test文件的详情,看看你是不是放在内部存储
  • ac8eb228929f:按照你的demo写,网络获取并打开doc文件,loadPdfFile时就走到异常里去了,修改后能正常获取文件并存储到相应的文件夹,但是读取不到doc文件,提示:E/TbsReaderView: not supported by:doc,大概是什么原因
    钟离四郎: @大拇指_090e 测试手机类型是什么,cpu架构呢
  • Thesetting_de03:打开.doc文件的时候报这个错 是什么问题呀
    java.lang.NullPointerException: Attempt to invoke virtual method 'java.io.File android.content.Context.getDir(java.lang.String, int)' on a null object reference
    at com.tencent.tbs.sdk.extension.s.q(Unknown Source)
    09-27 16:46:17.997 24686-24686/com.silang.superfileview W/System.err: at com.tencent.tbs.sdk.extension.s.<init>(Unknown Source)
    09-27 16:46:17.997 24686-24686/com.silang.superfileview W/System.err: at com.tencent.tbs.sdk.extension.s.a(Unknown Source)
    09-27 16:46:17.997 24686-24686/com.silang.superfileview W/System.err: at com.tencent.tbs.sdk.extension.TbsSDKExtension.c(Unknown Source)
    钟离四郎: @Thesetting_de03 😁好的
    Thesetting_de03:找到错误了 文件路径写错了
  • from0:运行你的源码报错:
    所有的文件都打不开 提示 TbsReaderView not supported 。系统是 Android 8.0。
    Thesetting_de03:你看看它里面的路径 路径是写死的 如果你的路径下没有这个文件 是打不开的
  • 62c5deed5e45:文章很牛,问作者一个问题,我在执行你得程序的时候,这个地方返回false,导致文件打不开,getFileType(mFile.toString())获取的类型是pdf,您知道可能是什么原因导致的吗?
    boolean bool = this.mTbsReaderView.preOpen(getFileType(mFile.toString()), false);
    if (bool) {
    this.mTbsReaderView.openFile(localBundle);
    }
    一缕飘散的云:一样的问题 @钟离四郎
    62c5deed5e45:@钟离四郎
    09-28 09:10:04.524 10870-10870/com.silang.superfileview W/EasyPermissions: hasPermissions: API version < M, returning true by default
    09-28 09:10:04.697 10870-10870/com.silang.superfileview E/TbsReaderView: not supported by:pdf
    09-28 09:10:05.067 10870-10876/com.silang.superfileview I/dalvikvm: threadid=3: reacting to signal 3
    09-28 09:10:05.104 10870-10876/com.silang.superfileview I/dalvikvm: Wrote stack traces to '/data/anr/traces.txt'
    钟离四郎: @夏绿色柠檬tp 有没有log,界面没任何反应吗?
  • tcgwl:liblbs 对应的x86的so库在哪找呀
    钟离四郎: @书生也很芍 你这个华为手机CPU架构是怎么样的
    书生也很芍:09-27 14:10:12.479 6653-6653/com.silang.superfileview D/FileDisplayActivity: 写入缓存文件47ab273ab2d89e34db3b890e2c1d2523.doc进度: 94
    09-27 14:10:12.479 6653-6653/com.silang.superfileview D/FileDisplayActivity: 写入缓存文件47ab273ab2d89e34db3b890e2c1d2523.doc进度: 100
    09-27 14:10:12.479 6653-6653/com.silang.superfileview D/FileDisplayActivity: 文件下载成功,准备展示文件。
    09-27 14:10:12.479 6653-6653/com.silang.superfileview D/SuperFileView: paramString:/storage/emulated/0/10086/47ab273ab2d89e34db3b890e2c1d2523.doc
    09-27 14:10:12.479 6653-6653/com.silang.superfileview D/SuperFileView: paramString.substring(i + 1)------>doc
    09-27 14:10:12.489 6653-6653/com.silang.superfileview E/TbsReaderView: not supported by:doc
    下载你的源码在夜神模拟器 和华为手机CHM-UL00上跑,出现这个。。。。。
    钟离四郎: @tcgwl 去官网找
  • d93941377af5:你好,我想问一下,这个demo的功能能实现在线预览展示word、excel、pdf、ppt等文件吗?就是后台给你一个文件的地址,我们通过这个地址能展示这个文件吗,这个文件不是在本地的,现在需要实现这个功能,发现iOS有直接的方法可以实现这个功能,但安卓没有,好像是因为谷歌得翻墙,谷歌提供的方法用不了
    钟离四郎: @豪逍遥 恩,你好,tbs内核现在不能做到在线预览,在线预览你需要后台服务配合的,国内基本使用不了谷歌的在线解析服务,如果你那边服务端没办法配合在线解析,你可以考虑第三方一些收费的在线预览服务,另外如果你的文件不大的话,其实可以下载后显示,这样的话本篇文章可以帮到你
  • 982aad86a153:你好,我想问下引入这个库会导致APK增大多少?
    钟离四郎: @冰糖地三鲜 就几百K,tbs本身内核是共享微信或者qq或者手q浏览器的,这些应用只要有一个下载过内核,其他使用tbs的应用都可以共享内核,微信、qq的装载量很大,所以你放心使用吧

本文标题:Android应用内展示word、excel、pdf、ppt等文

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