Android使用系统分享,分享不成功,提示多图只支持照片格式
在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使用系统分享,分享不成功,提示多图只支持照片格式相关推荐
- IE11兼容性问题——网站提示“打印插件只支持IE浏览器”
很多系统已经自动升级到IE11,会出现兼容性问题--网站提示"打印插件只支持IE浏览器" 解决方法: 浏览器"工具"--"兼容性视图设置", ...
- Android 调用系统的分享[完美实现同一时候分享图片和文字]
android 系统的分享功能 private void share(String content, Uri uri){Intent shareIntent = new Intent(Intent.A ...
- android x86占比,不输主流安卓机 Android x86系统体验分享(附性能对比)
记得在前几年一段时间里比较流行安卓&win系统二合一平板,在整合了两个系统的同时价格还很便宜.可是这种东西很快就凉了,究其原因还是寨板居多体验差.各种配置和硬件方面偷工减料等等,但这个思路其实 ...
- Android 打开系统图库,查看相册和视频(只查看不获取)
一.介绍 有个需求是点击app内按钮,直接打开系统的图库,可以查看相册和视频 但是因为android的系统都是定制的,所以使用api中提供的图库包名并不能进行成功跳转 二.实现 那么..翻遍全网 找到 ...
- Android调用系统原生分享组件
想必做Android开发都会遇到的需求--分享. 实现需求和方式也都各自不一,有接入某个app的SDK进行分享,也有集成第三方平台例如友盟等等... 接下来所要说到的是Android系统提供的分享组件 ...
- 银行祖传系统重构实例:创立12年,只支持Python 2,跑着500多个应用程序
作者 | THEHFTGUY.万佳 提到遗留系统,你会想到什么? 还在使用 Java 5 的路过 JDK 1.6 的我不说啥了 很多坑 难维护 从零开始(重写) 盼着 IE 什么时候不再能使用 ... ...
- android 读取excel表格数据(暂时只支持xls格式)
需要的jar包:jxl public class ExcelUtils {private static List list = new ArrayList();private static Movie ...
- 吃透监控系统!分享一套开源的监控系统(附源码)
前言 电视监控系统由前端监视设备.传输设备.后端存储.控制及显示设备这五大部分组成.后端设备可进一步分为中心控制设备和中心控制设备.前.后端设备有多种构成方式,它们之间的联系可通过电缆.光纤.微波等多 ...
- Android调用系统分享和指定app分享-微信朋友圈图文分享和qq分享
Android调用系统分享和指定app分享-微信朋友圈图文分享和qq分享 标签: Android系统分享QQ分享朋友圈图文分享 2016-09-27 22:54 279人阅读 评论(0) 收藏 举报 ...
最新文章
- 初识片选信号和中断控制器
- Tegra3 vSMP架构Android运行时CPU热插拔及高低功耗CPU切换
- mysql常用命令及问题汇总
- graphpad多条不同的曲线_Graphpad作图,这些技巧你知道吗?
- android:persistent (非系统app失效)
- 【定时同步系列3】8PSK调制+OM定时+信号分段处理+误码率曲线之MATLAB仿真(实信号模型)
- tomcat在linux下开机启动
- linux-centos7环境搭建
- Python 3.6.x字符串格式化方法小结
- Vue源码分析 - mvvm.js
- ENVI制作三维立体影像图
- Javaer换坑指南之Linux
- C语言实现简单的五子棋
- TP4056 充电电路学习借鉴
- gulp minify-css 压缩之后删除calc所在行解决
- Right-BICEP单元测试
- python构建配对t检验(Paired Student’s t-test)
- 知识图谱与KBQA——槽填充
- 微信公众号内测开放个人订阅号认证!
- amd k14主板参数_看U选主板:AMD A8-5600K主板怎么选
热门文章
- 网络语音软件UUCall
- 【附源码】Java计算机毕业设计安卓基于Android健康饮食搭配的设计与实现(程序+LW+部署)
- 做户外直播都会用到哪些设备
- Ubuntu18.04环境下使用python包管理工具pipenv
- php基础教程读后感,读后感 · PHP开发笔记解决方案 · 看云
- HDU 4553 约会安排
- 不平衡数据集处理办法
- JavaDoc生成文档
- 云计算与超级计算机的关系,超级计算机和普通用户到底有何关系?
- SpringBoot——整合数据库,springSecurity,shiro、整合thymeleaf