注册自己的Activity

通过mimeType和scheme,可以将自己的Activity与特定格式的内容和协议关联起来,从而用自己的Activity去打开这些内容

mimeType指的是内容格式,比如是txt,还是doc,还是ppt等

scheme指的是协议格式,比如是file,还是http等

<!-- KML预览 --><activityandroid:name=".view_window.kml.KmlPreviewActivity"android:label="KML查看器"><intent-filter><action android:name="android.intent.action.VIEW" /><category android:name="android.intent.category.DEFAULT" /><dataandroid:mimeType="application/vnd.google-earth.kml+xml"android:scheme="content" /></intent-filter></activity>

获得资源URI

在Activity中通过以下代码,就可以获得打开的资源对应的URI

//获得资源URIUri uri = getIntent().getData();

微信URI转文件路径

微信文件的URI,是通过FileProvider分享出去的,我们通过URI,可以获得实际对应的文件位置

但从Android11开始,由于系统权限管理的力度加强,微信的文件已经存放到私有目录

所以我们就算能通过URI拿到文件路径,也不能读取这个文件

只有通过ContentResolver,才能正常访问FileProvider提供的资源

//通过微信URI解析文件地址public static String uriToFile(Context context, Uri uri) {//获得ContentResolver,用于访问其它应用数据ContentResolver resolver = context.getContentResolver();//获得URI路径String pathUri = uri.getPath().toLowerCase();//解析微信文件路径if (uri.toString().toLowerCase().startsWith("content://com.tencent.mm.external.fileprovider/external/")) {String file = ProjectFile.getProjectFile("cache/" + Files.getFileName(pathUri));InputStream is = resolver.openInputStream(uri);OutputStream os = new FileOutputStream(file);Streams.write(is, os);return file;}return null;}
//将输入流的数据拷贝到输出流public static void write(InputStream is, OutputStream os) {byte[] buffer = new byte[1024 * 1024];while (true) {int len = is.read(buffer);if (len < 0) break;os.write(buffer, 0, len);}os.flush();is.close();os.close();}

【Android】【打开方式】Android11用其它应用打开微信文件相关推荐

  1. “打开方式”中找不到打开某一类型文件想使用的软件

    "打开方式"中找不到打开某一类型文件想使用的软件 操作步骤: "打开方式"-->"选择默认程序"-->"其他程序&qu ...

  2. python的打开方式有哪些_python中打开程序的方式有哪些

    python中打开程序的方式有哪些 发布时间:2020-08-10 11:58:08 来源:亿速云 阅读:64 作者:小新 这篇文章将为大家详细讲解有关python中打开程序的方式有哪些,小编觉得挺实 ...

  3. 后缀名.dat文件在选择打开方式时误勾选了用记事本打开, 结果电脑上的*.dat文件的打开方式都变成了记事本,没有修改文件的内容,如何恢复.bat文件的默认打开方式

    项目场景: 后缀名.dat文件在选择打开方式时误勾选了用记事本打开, 结果电脑上的*.dat文件的打开方式都变成了记事本,没有修改文件的内容 问题描述 后缀名.dat文件在选择打开方式时误勾选了用记事 ...

  4. .html 打开方式注册表,修改注册表实现文件默认打开方式

    在您的系统中安装了许多应用软件时,难免会有几个软件可以打开同一种文件格式的情况,这时,您可能希望能够自己选择用哪一种软件打开,也可能希望能在使用的过程中更换打开方式,这样不仅可以避免在某个应用软件损坏 ...

  5. 电脑的excel和word文件默认打开方式都变为QQ浏览器打开(修改为wps打开所有格式文件)

    1.看一下用QQ浏览器打开固定格式文件的效果图片 2.解决方案如下 找到电脑的控制面板--所有控制面板--默认程序--设置默认关联 找到固定的文件的格式,双击然后选择默认的打开方式就可以恢复到wps打 ...

  6. windows中LNK文件打开方式恢复(图形文件打开方式怎么都成CAD打开方式)

    windows中LNK文件打开方式恢复(图形文件打开方式怎么都成CAD打开方式) 一大早,有同事说桌面上的文件快捷方式全是CAD图标,打开也是CAD方式打开,我在"文件夹选项"下设 ...

  7. .py默认打开方式修改为cmd之后无法改回,始终默认打开方式灰显的解决方案(其他文件类型方法同)

    问题背景: 初学Python,使用 认用cmd.exe打开.py文件,导致默认打开方式灰显无法改回. 摸索查找解决方案不易,耗费时间,特此总结经验分享给大家,望有帮助! 疑问请留言,转载请注出处,谢谢 ...

  8. android如何打开apk文件怎么打开方式,apk是什么文件格式?.apk文件怎么打开?

    apk文件在安卓系统的普及后为人熟知,作为我们最最常用的软件安装包,你对它的了解又有多少呢? apk是什么文件 APK是AndroidPackage的缩写,即Android安装包(apk).APK是类 ...

  9. 怎么把打开方式改回计算机程序,电脑打开方式改变了,怎么还原

    2008-12-16 就是默认的方式还原不了了,就是电脑也不知道什么打开方式好的那种样子原始的! 这可能是因为修改了文件夹默认操作,将其改回即可.打开我的电脑/工具/文件夹选项/文件夹类型/在已注册的 ...

  10. html默认office打开如何更改,怎么设置office默认打开方式,修改office的默认打开方式...

    Q1:怎么把office软件设置为默认的文档打开方式 选中文件,再按shift再按鼠标右键,选打开方式,选择程序,把下方始终使用选择的程序打开这种文件选上,选择office,确定就可以了 Q2:怎样设 ...

最新文章

  1. Pytest - 使用介绍
  2. 为什么 APP 纷纷开发“暗黑模式”?优酷最佳实践总结
  3. linux之LAMP架构搭建
  4. 【Python学习日志】 - Numpy包
  5. vb光环褪去java、c/c++/c#成编程主流
  6. fast-planner 安装
  7. Microsoft Office SharePoint Server 2007介绍
  8. 【共生性】CVPR 2019:Multi-Label Image Recognition with Graph Convolutional Networks
  9. 《代码大全》阅读笔记01
  10. 从MySQL复制功能中得到一举三得实惠
  11. 直连路由和静态路由(实验)
  12. .Net Core 使用Swagger,且使用自定义UI(Knife4jUI)
  13. M580PLC以太网读通讯和写通讯
  14. 大数据平台回归SQL
  15. 彩色喷头程序开发项目外包
  16. P4169 [Violet]天使玩偶/SJY摆棋子 [CDQ分治]
  17. 3ds模型--完善TGA纹理显示
  18. 易语言 5.93静态编译报错
  19. haas506-量产工具
  20. 离散数学图论在普通电路分析中的应用

热门文章

  1. 编译工具:XMake 和 CMake对比分析
  2. 容器亲和、反亲和、污点、容忍以及驱逐的介绍
  3. 转载:SolidWorks 2014 安装完成破解成功,用过一段时间后提示重新激活(win10系统)...
  4. Gossiping闲聊路由协议
  5. 3d Max人物动画学习笔记(二)蒙皮
  6. 人证核验、人证比对系统应用行业如何判别
  7. 苹果发布iOS9.1 Beta 3:新增壁纸和表情
  8. in ./node_modules/html-entities/lib/index.js终端报错
  9. PS合成在灯泡里活动的金鱼教程
  10. 使用CSS美化shiny app效果