Android使用系统分享,分享不成功,提示多图只支持照片格式
Posted 汤米粥
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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使用系统分享,分享不成功,提示多图只支持照片格式的主要内容,如果未能解决你的问题,请参考以下文章
Android Share 方法不分享文字和图片,只分享图片 - Android
或第三方网站分享转发后,打开提示 “无法打开该页面,不支持打开” 或 “页面不存在”(IOS 苹果系统打开是空白页,安卓系统会有提示)超详细排查