最近开发一个需求是使用wps打开本地的文档,所以记录一下方便以后查阅

对于Android 7.0 以后文件的读写 请参照一下链接

https://www.jianshu.com/p/5ebfa842e6c1

如何跳过 7.0对文件访问的权限目前我知道的有以下两点

1、将build.gradle下的targetSdkVersion改成23以下(这个也会跳过6.0的权限,但很多应用平台以后要对这个进行检测,如果不知道6.0权限检测,可能影响APP上架)

2、在Application的onCreate中加入

//解决FileUriExposedException。

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {

StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder();

StrictMode.setVmPolicy(builder.build());

}

代码:

判断手机是否安装了 wps

private boolean isInstall(Context context, String packageName) {

final PackageManager packageManager = context.getPackageManager();

// 获取所有已安装程序的包信息

List pinfo = packageManager.getInstalledPackages(0);

for (int i = 0; i < pinfo.size(); i++) {

if (pinfo.get(i).packageName.equalsIgnoreCase(packageName))

return true;

}

return false;

}

获取文档类型

private static String getMIMEType(File f) {

String type = "";

String fName = f.getName();

/* 取得扩展名 */

String end = fName.substring(fName.lastIndexOf(".") + 1, fName.length()).toLowerCase();

/* 依扩展名的类型决定MimeType */

if (end.equals("pdf")) {

type = "application/pdf";

} else if (end.equals("m4a") || end.equals("mp3") || end.equals("mid") ||

end.equals("xmf") || end.equals("ogg") || end.equals("wav")) {

type = "audio/*";

} else if (end.equals("3gp") || end.equals("mp4")) {

type = "video/*";

} else if (end.equals("jpg") || end.equals("gif") || end.equals("png") ||

end.equals("jpeg") || end.equals("bmp")) {

type = "image/*";

} else if (end.equals("apk")) {

type = "application/vnd.android.package-archive";

} else if (end.equals("pptx") || end.equals("ppt")) {

type = "application/vnd.ms-powerpoint";

} else if (end.equals("docx") || end.equals("doc")) {

type = "application/vnd.ms-word";

} else if (end.equals("xlsx") || end.equals("xls")) {

type = "application/vnd.ms-excel";

}else if(end.equals("txt")){

type = "text/plain";

}else if(end.equals("html") || end.equals("htm")){

type = "text/html";

} else {

//如果无法直接打开,就跳出软件列表给用户选择

type = "*/*";

}

return type;

}

打开文档

private Intent getWordFileIntent(String Path) {

File file = new File(Path);

Intent intent = new Intent("android.intent.action.VIEW");

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

Uri uri = Uri.fromFile(file);

String type = getMIMEType(file);

if(type.contains("pdf") || type.contains("vnd.ms-powerpoint") || type.contains("vnd.ms-word") || type.contains("vnd.ms-excel") || type.contains("text/plain")|| type.contains("text/html")){

if (isInstall(this, "cn.wps.moffice_eng")) {

intent.setClassName("cn.wps.moffice_eng",

"cn.wps.moffice.documentmanager.PreStartActivity2");

intent.setData(uri);

} else {

intent.addCategory("android.intent.category.DEFAULT");

intent.setDataAndType(uri, type);

}

}else{

intent.addCategory("android.intent.category.DEFAULT");

intent.setDataAndType(uri, type);

}

return intent;

}

应用:

Intent intent = getWordFileIntent("文件路径");

startActivity(intent);

2、如果不是PDF文件

Intent intent = getWordFileIntent(BASE_PATH + list.get(clickPosition).get("fileName"));

try{

startActivity(intent);

}catch (Exception e){

showToast("无可用打开方式,建议下载wps后重试");

}

给用户一个友好提示。

OK,大功告成。

android 读取wps_Android 默认使用wps打开本地文档相关推荐

  1. Android默认优先使用WPS打开PDF文档

    使用第三方App打开PDF文档,当选择使用WPS时,出现提示获取文档类型,一直打不开的情况. 解决办法,首先检测是否安装了WPS软件.如果安装了,则用WPS打开,否则,使用默认工具打开. 具体实现如下 ...

  2. android 读取wps_Android 实现 调用 WPS Office手机版接口

    从V5.1版本开始,WPS移动版本提供了额外的功能,可以供第三方程序通过集成的方式调用"WPS移动版"打开文件,打开的文件保存和关闭时第三方也可接收到广播通知. 通过此接口,开发者 ...

  3. WPS使用,实现用WPS打开在线文档并且进行编辑

    相关资料文档 JSAPI概述及原理 https://kdocs.cn/l/skWT29577eEE JSAPI集成开发文档 https://kdocs.cn/l/srARJ5L8CTx4 JSAPI功 ...

  4. HTML文件总是WPS打开,设置wps默认打开方式_设置默认使用WPS打开文件

    今天有个客户问我,为什么我双击xls文件不能直接用WPS打开,我直接帮他远程调试,发现他wps没有关联默认文件格式. 下面我就教大家如何设置WPS默认打开方式. 测试环境:windows 7  64位 ...

  5. [Android]_[初级]_[sdk docs reference api 文档打开慢的解决办法]

    此题正解:打开firefox, 选中菜单 File->Work Offline,之后打开api文档都是秒开了,缺点就是不能访问在线的网址. 默认菜单是隐藏的,可以移动到Tab页空白处右键Menu ...

  6. 打开office 文档慢的小技巧1 更改默认打印机

    打开office 文档慢的小技巧1 更改默认打印机为本机虚拟打印机 因为word打开时要缓存打开的文件到预览的缓存,如果默认打印机为离线,则office word,excel,ppt等打开有可能稍慢点 ...

  7. vb wps 链接单元格_vb读取WPS的EXCEL文档并另存为其他

    编程之家收集整理的这篇文章主要介绍了vb读取WPS的EXCEL文档并另存为其他,编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考. Dim xlApp Dim xlApp2 Dim xlBo ...

  8. 电脑安装了WPS之后,文档无法用原来的office打开,右键新建的文档是wps类型的而不是office类型的解决方案

    前言:因为我身边很多小伙伴都遇到自己的电脑已经安装了office,之后又安装了WPS,安装了WPS之后,每次打开文档都是默认用WPS打开,有时想右键新建一个office的文档,但是建立的都是WPS文档 ...

  9. wps android qq 群,手机WPS怎样发送文档给QQ?WPS怎样发送文档给QQ教程

    软件大小: 52.26MB 软件版本: 2.1.0 软件类型: 办公工具 查看详情 直接下载 手机WPS怎样发送文档给QQ?不少刚使用手机WPS的人不晓得怎么操作,那么下面来看看WPS怎样发送文档给Q ...

最新文章

  1. URAL 1011 Conductors
  2. 研究javascript中的this
  3. java网络编程实例_关于java网络编程的实例代码
  4. egret键盘事件监听
  5. react js 按条数 展开/折叠
  6. MURAL:消除预训练模型的语言限制!Google提出跨语言的多模态、多任务检索模型MURAL...
  7. 在 Queue 中 poll()和 remove()有什么区别?
  8. linux c 创建新线程,Linux C Phread 入门1---线程创建
  9. 计算机组组内培训记录,计算机教研组活动记录
  10. 跨5合并dnf无限连接服务器,不妨一试!跨5等跨区卡登陆卡黑屏解决办法分享
  11. Windows10上安装EPLAN无法连接虚拟加密狗的解决方法
  12. rubyonrails安装
  13. Ubuntu安装无线网卡驱动
  14. android支付宝支付界面设计,支付宝移动端App ui界面设计规范
  15. android小米手机变慢,手机越来越慢怎么破?小米手机七大加速绝招
  16. 【云计算的1024种玩法】搭建 wiki 知识库
  17. Vue computed自动计算对象中的属性
  18. bind dlz mysql ptr_Bind+DLZ+MySQL智能DNS的正向解析和反向解析实现方法
  19. Git创建分支和查看分支命令
  20. 三步完整实现运放负反馈电路稳定性设计

热门文章

  1. MySQL 8.0初体验
  2. ubuntu 向日葵连接后即断开解决办法
  3. 通过挑土豆—我学会了如何区分JS数组的遍历方法
  4. java retry: 详解
  5. 企业如何正确选择云服务商
  6. c语言高级编程培训,C语言高级编程
  7. php获取本机内网ip地址
  8. 基于51单片机的交通灯(资源链接见末尾)
  9. 删除MySQL历史数据并修改sqlsource.status lastindex脚本
  10. 魅蓝note2手机计算机打开教程,魅族 魅蓝note2 开启USB调试模式