当前位置:首页 > 科技

【手机怎么看word文字】Android应用程序内部是否打开了PDF、Excel和Word文档?

Android应用程序中为什么要打开PDF、Word、Excel等文档?

公司项目的部分功能是查看新闻的功能,但这些新闻的内容并不都是HTML,或者链接可以直接使用Android Webview直接打开,这些新闻细节包括PDF、Word、Excel等多种类型的文档。之前赶着处理项目的时候,处理方式是直接调用系统浏览器进行下载,所以在项目快结束的时候,公司总经理说,我们要在自己的应用程序内打开我们的新闻。所以我们很专业,很友好。我们想个方案吧。这个需求出来了。(阿尔伯特爱因斯坦,美国作家)。

我相信安卓是为了打人而开发的。为什么IOS直接使用系统WebView可以直接打开所有文档,而我们不能。(阿尔伯特爱因斯坦,Northern Exposure,)这句话应该怪谷歌爸爸。谷歌爸爸其实有解决办法。就是使用谷歌服务。(阿尔伯特爱因斯坦,Northern Exposure,谷歌名言)但是由于国内互联网,这种方法只能放弃。

我相信这可能有很多解决方法,但我只是记录下我自己的解决方法,如果有更好的方法,希望大家给我指出来。感谢大家。(大卫亚设)。

首先,让我们看一下我的实现图。

解决方法

我正在使用腾讯的TBS内核替换Android的默认WebView。为什么使用X5内核?有几个原因。

腾讯大佬的东西(讨论区还是有bug的,但不影响整体情况)

微信、QQ都是使用的TBS内核

使用TBS内核的人很多,论坛活跃,有很多解决方案。

TBS内核优势:

1.腾讯浏览服务(TBS)的优点

1)速度快:比系统webview打开网页的速度快30%。

2)节省流量:使用云优化技术,流量可以减少20%。

3)更安全:安全问题可以在24小时内修复。

4)提高稳定性:经过1亿用户使用测试,CRASH比率低于0.15%。

5)兼容性:没有系统内核的碎片化问题,兼容性问题减少。

6)良好的使用体验:支持夜间模式、定制屏幕排版、字体设置等浏览增强功能。

7)所有功能:Html5、ES6提供更全面的支持

8)更强大:集成了强大的视频播放器,支持比系统网络视图多得多的视频格式。

9)视频和文件格式比系统核心支持更多的X5内核

10)防止劫持是X5内核的亮点

2.操作环境

1)手机ROM版本高于或等于2.2版本

2)手机RAM大于500M,此RAM值是通过手机/proc/meminfo文件中的MemTotal动态获取的

注:如果不满足上述条件,SDK将自动切换到系统WebView,SDK用户不关心切换过程。

3.SDK大小指示器

1)SDK提供的JAR软件包约为250K

不想听我唠叨的人可以直接戳这里。

TBS内核的文件功能

访问文件服务后,APP可以支持主流9种格式。升级文件服务可以支持46种文件格式。

访问TBS

如果不想看我写的东西,可以直接看官网的访问过程。直接戳下面的链接,就可以直接看到主页的SDK访问流程:TBS访问主页

1、导入Jar程序包

官网下载Android Studio访问样本,并将TBS jar包放在libs文件夹下。

请求必要的权限。

uses-permission Android : name=' Android。/

uses-permission Android : name=' Android。/

uses-permission Android : name=' Android。/

uses-permission Android : name=' Android。/

uses-permission Android : name=' Android。/

uses-permission Android 3360 Nam

e="android.;/>

2、初始化TBS

一般TBS的X5内核初始化是放在Application中进行,如图是我的项目中初始化地方:

下面是系统WebView的类和tbs内核的类的区别:

tbs的内核的类名和系统的基本一致,而且使用方法也是一致,这里就不赘述了。

3、64位手机

这个是TBS官网的解释:

x5内核暂时不提供64位的so文件,在64位手机上需要让APP以32位模式运行。具体操作如下:

1.如果使用是Eclipse则需要将所有的.so文件都放置在so加载目录:lib/armeabi文件夹下(没有该目录则新建一个,AP中没有使用到.so文件则需要拷贝任意一个32位的so文件到该目录下,如果没有合适的so可以到官网下载官网“SDK接入示例“,拷贝对应目录下的liblbs.so文件),lib文件夹下不要有其他以”armeabi“开头的文件夹。

2.如果使用的是 Android studio则需要进行两项配置,

(1)打开对应module中的build.gradle文件,在文件的android{}中的defaultConfig{}里(如果没有defaultConfig{}则手动添加)添加如下配置: ndk{abiFilters “armeabi”},如果配置后编译报错,那么需要在gradle.properties文件中加上Android.useDeprecatedNdk=true;

(2)找出build.gradle中配置的so加载目录:jniLibs.srcDir:customerDir,如果没有该项配置则so加载目录默认为:src/main/jniLibs,需要将.so文件都放置在so加载目录的armeabi文件夹下(没有该目录则新建一个,AP中没有使用到.so文件则需要拷贝任意一个32位的so文件到该目录下,如果没有合适的so可以到官网下载官网“SDK接入示例“,拷贝对应目录下的liblbs.so文件),so加载目录下不要有其他以”armeabi“开头的文件夹。

我就用我的接入的图片说明:

1.添加32位的so库

这个liblbs.so文件可以是任意的32位的so文件,我们一般自己难得去找,或者你有现成的更好,这里我直接拷贝示例里面的:

2.在 a 文件中对 libs 目录中 jar 文件的依赖

dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) }

3.**需要注意的是:**TBS 目前只提供 armeabi 类型 CPU 架构的 so 库。当然,也可以将 so 文件放置于 libs 目录下,只不过需要在 a 中额外修改 so 文件依赖配置:

sourceSets { main { jniLibs.srcDirs = ['libs'] } }

那么我们要怎么确认是否这个TBS的X5内核已经加载成功了呢?

如下图,当你长按选择复制的时候出现下面的蓝色水滴状就表示tbs的X5内核加载成功:

4、下载文件到本地

下载文件到本地,我们就使用系统的http请求来下载文件,假如你开发中用的Okhttp或者其他的网络框架,直接使用网络框架下载就好了。代码如下:

5、TbsReaderView加载文件

创建TbsReaderView:

  • /**

  • * 下载文件并使用TBS打开文件 *

  • * @param url 下载的路径

  • * @param fileName 保存的文件的名字

  • * @param fileType 我们需要打开的文件的类型 word类型 doc excel类型xls pdf类型 pdf等等,这个可以在官网上查

  • * @throws IOException */

  • private void downLoadFile(URL url, String fileName, String fileType) throws IOException {

  • new Thread(new Runnable() {

  • @Overridepublicvoidrun() {

  • try {

  • final HttpURLConnection connection = (HttpURLConnection) url.openConnection();

  • //获取总的文件大小

  • connec("GET");

  • //试过POST 可能报错

  • connec(true);

  • connec(10000);

  • connec(10000);

  • //实现连接

  • connec();

  • if () == 200) {

  • //获取内容长度int contentLength = connec();

  • inputStream = connec();

  • File dir = mCon);

  • file = new File(dir, fileName);

  • if ()) {

  • (); }

  • fileOutputStream = new FileOutputStream(file);

  • byte[] bytes = newbyte[1024];

  • int tempLen;

  • long totalReaded = 0;

  • while ((tempLen = in(bytes)) != -1) {

  • // bytes[index]= (byte) temp_Len;// index++;

  • totalReaded += tempLen;

  • finalint progress = (int) (totalReaded * 100 / contentLength);

  • mCon(() -> binding.(progress)); (bytes, 0, tempLen);

  • }

  • }

  • } catch (Exception e) {

  • Logger.e("文件下载异常");

  • } finally {

  • if (fileOutputStream != null) {

  • try { f

  • ileOu();

  • } catch (IOException e) {

  • e.printStackTrace();

  • }

  • }

  • if (inputStream != null) {

  • try {

  • in();

  • } catch (IOException e) {

  • e.printStackTrace();

  • }

  • }

  • }

  • }

  • });

  • }

Activity 中实现 ReaderCallback 接口,并通过 Java 代码动态创建 TbsReaderView 对象,将其添加到 content view 当中。

实现ReaderCallback 接口,重写方法:

暂不知这个方法有什么用,我也没使用到,所以未深究。

可能你会有疑惑,为什么不将 TbsReaderView 放在 layout 布局文件中,而是在代码中手动 add 进去。经测试,这么做会报错,提示找不到这个类。然后我们查看 TbsReaderView 源码,发现只有这么一个构造函数:

最后一步传入参数,打开文件即可:

说明下这里的fileType是一个字符串类型的,其实就是文件的后缀名,例如Word类型的是“doc” 、 PDF的类型是“pdf”,一般可以通过url来截取到类型。

总结

Android 应用中打开文件,上面只是我个人的项目使用的方法,当然还有其他的方法。欢迎大家都去尝试,其实一般这种按照官网的文档来做是没有什么问题的,但是说实话文档还是有点简陋,只有自己动手去做才比较清楚。还有点就是告诉大家:tbs的X5内核还是有问题的,并不是说腾讯的都没问题,可以去tbs的讨论区看看都有哪些问题,然后根据这些问题,确定自己的项目是否适合使用。

原创不易,如果觉得写得好,关注一下点个赞,是我最大的动力。

1.《【手机怎么看word文字】Android应用程序内部是否打开了PDF、Excel和Word文档?》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《【手机怎么看word文字】Android应用程序内部是否打开了PDF、Excel和Word文档?》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/keji/2510045.html

上一篇

【怎么连续打印多张word文件】单词技术——批量印刷法

【手机怎么看word文字】知道如何阅读这种手机文档,所以不必害怕再次给老板误事

  • 【手机怎么看word文字】知道如何阅读这种手机文档,所以不必害怕再次给老板误事
  • 【手机怎么看word文字】知道如何阅读这种手机文档,所以不必害怕再次给老板误事
  • 【手机怎么看word文字】知道如何阅读这种手机文档,所以不必害怕再次给老板误事
【手机怎么看word文字】手机QQ为什么可以打开多种格式的文档?

【手机怎么看word文字】手机QQ为什么可以打开多种格式的文档?

手机怎么看word文字相关介绍,简介:手机QQ知道可以打开Word文档、Excel文档、PPT文档、pdf文档等多种格式的文档。怎么能做这样的事? 原因:手机QQ内置了一个插件,可以打开多种格式的文档。 就像QQ插件管理员一样,里面...

【手机怎么看word文字】系统范围内的超级办公室-Polaris Office

  • 【手机怎么看word文字】系统范围内的超级办公室-Polaris Office
  • 【手机怎么看word文字】系统范围内的超级办公室-Polaris Office
  • 【手机怎么看word文字】系统范围内的超级办公室-Polaris Office