在android N平台,进行文件分享时,需要改变数据的传输格式,否则会出现分享失败等情况。

android N上,文件的传输数据格式用"content://"取代了M上的"file://" ,这一点尤其要注意。

在网上,有不少文章用FileProvider类的getUriForFile方法,通过传入filePath,来构造一个Uri对象,然后传入Intent ,但在实际使用中,分享到微信、蓝牙、短信等,部分文件格式会有问题,如文本文件,压缩包文件等,这种方法缺陷较多,如下方式会更好:

通过绝对路径,获取对应的Uri(加上对应的权限) :

privateUri getPathUri(String path,Activity mContext) {

Uri fileUri =null;

Uri baseUri = MediaStore.Files.getContentUri("external");

Cursor cursor = mContext.managedQuery(baseUri,null,null,null,null);

cursor.moveToFirst();

while(!cursor.isAfterLast()){

String data = cursor.getString(cursor.getColumnIndex(MediaStore.MediaColumns.DATA));

if(path.equals(data)){

intid = cursor.getInt(cursor.getColumnIndex(MediaStore.MediaColumns._ID));

fileUri = Uri.withAppendedPath(baseUri,id+"");

break;

}

cursor.moveToNext();

}

returnfileUri;

}

将Uri传入到Intent中:

Intent intent =newIntent();

intent.setAction(Intent.ACTION_SEND);

intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);

intent.setType("text/plain");//这里请注意,写对应文件的minetype

intent.putExtra(Intent.EXTRA_STREAM,getPathUri(path ,activity));

上面的文件主要指文本文件,zip文件等等。如果是图片、音频、视频,则需要改动baseUri ,主要目的是减小返回cursor集合,减少遍历次数 ;

图片需要将baseUri改为:

Uri baseUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;

视频文件需要将baseUri改为:

Uri baseUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;

音频文件将baseUri改为:

Uri baseUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;

关于android调用系统的分享,选择微信多文件分享失败提示分享失败,多文件分享仅支持照片格式的解决_浪子求仙的博客-CSDN博客_多文件分享仅支持照片格式怎么解决

Android使用系统分享,分享不成功,提示多图只支持照片格式相关推荐

  1. IE11兼容性问题——网站提示“打印插件只支持IE浏览器”

    很多系统已经自动升级到IE11,会出现兼容性问题--网站提示"打印插件只支持IE浏览器" 解决方法: 浏览器"工具"--"兼容性视图设置", ...

  2. Android 调用系统的分享[完美实现同一时候分享图片和文字]

    android 系统的分享功能 private void share(String content, Uri uri){Intent shareIntent = new Intent(Intent.A ...

  3. android x86占比,不输主流安卓机 Android x86系统体验分享(附性能对比)

    记得在前几年一段时间里比较流行安卓&win系统二合一平板,在整合了两个系统的同时价格还很便宜.可是这种东西很快就凉了,究其原因还是寨板居多体验差.各种配置和硬件方面偷工减料等等,但这个思路其实 ...

  4. Android 打开系统图库,查看相册和视频(只查看不获取)

    一.介绍 有个需求是点击app内按钮,直接打开系统的图库,可以查看相册和视频 但是因为android的系统都是定制的,所以使用api中提供的图库包名并不能进行成功跳转 二.实现 那么..翻遍全网 找到 ...

  5. Android调用系统原生分享组件

    想必做Android开发都会遇到的需求--分享. 实现需求和方式也都各自不一,有接入某个app的SDK进行分享,也有集成第三方平台例如友盟等等... 接下来所要说到的是Android系统提供的分享组件 ...

  6. 银行祖传系统重构实例:创立12年,只支持Python 2,跑着500多个应用程序

    作者 | THEHFTGUY.万佳 提到遗留系统,你会想到什么? 还在使用 Java 5 的路过 JDK 1.6 的我不说啥了 很多坑 难维护 从零开始(重写) 盼着 IE 什么时候不再能使用 ... ...

  7. android 读取excel表格数据(暂时只支持xls格式)

    需要的jar包:jxl public class ExcelUtils {private static List list = new ArrayList();private static Movie ...

  8. 吃透监控系统!分享一套开源的监控系统(附源码)

    前言 电视监控系统由前端监视设备.传输设备.后端存储.控制及显示设备这五大部分组成.后端设备可进一步分为中心控制设备和中心控制设备.前.后端设备有多种构成方式,它们之间的联系可通过电缆.光纤.微波等多 ...

  9. Android调用系统分享和指定app分享-微信朋友圈图文分享和qq分享

    Android调用系统分享和指定app分享-微信朋友圈图文分享和qq分享 标签: Android系统分享QQ分享朋友圈图文分享 2016-09-27 22:54 279人阅读 评论(0) 收藏 举报 ...

最新文章

  1. 初识片选信号和中断控制器
  2. Tegra3 vSMP架构Android运行时CPU热插拔及高低功耗CPU切换
  3. mysql常用命令及问题汇总
  4. graphpad多条不同的曲线_Graphpad作图,这些技巧你知道吗?
  5. android:persistent (非系统app失效)
  6. 【定时同步系列3】8PSK调制+OM定时+信号分段处理+误码率曲线之MATLAB仿真(实信号模型)
  7. tomcat在linux下开机启动
  8. linux-centos7环境搭建
  9. Python 3.6.x字符串格式化方法小结
  10. Vue源码分析 - mvvm.js
  11. ENVI制作三维立体影像图
  12. Javaer换坑指南之Linux
  13. C语言实现简单的五子棋
  14. TP4056 充电电路学习借鉴
  15. gulp minify-css 压缩之后删除calc所在行解决
  16. Right-BICEP单元测试
  17. python构建配对t检验(Paired Student’s t-test)
  18. 知识图谱与KBQA——槽填充
  19. 微信公众号内测开放个人订阅号认证!
  20. amd k14主板参数_看U选主板:AMD A8-5600K主板怎么选

热门文章

  1. 网络语音软件UUCall
  2. 【附源码】Java计算机毕业设计安卓基于Android健康饮食搭配的设计与实现(程序+LW+部署)
  3. 做户外直播都会用到哪些设备
  4. Ubuntu18.04环境下使用python包管理工具pipenv
  5. php基础教程读后感,读后感 · PHP开发笔记解决方案 · 看云
  6. HDU 4553 约会安排
  7. 不平衡数据集处理办法
  8. JavaDoc生成文档
  9. 云计算与超级计算机的关系,超级计算机和普通用户到底有何关系?
  10. SpringBoot——整合数据库,springSecurity,shiro、整合thymeleaf