分享失败,多文件分享仅支持照片格式 Android7.0分享朋友圈FileProvider生成的Uri无法被识别

分享失败,多文件分享仅支持照片格式

使用原生的分享代码分享图片

//分享到微信好友列表

Intent intent =new Intent();

ComponentName componentName =new ComponentName("com.tencent.mm", "com.tencent.mm.ui.tools.ShareImgUI");

if (imageUris.size() ==0)return;

intent.setComponent(componentName);

intent.setAction(Intent.ACTION_SEND_MULTIPLE);

intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);

intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, imageUris);

intent.setType("image/*");

//这个是单张图片分享到微信好友列表

//  intent.setAction(Intent.ACTION_SEND);

//  intent.putExtra(Intent.EXTRA_STREAM, imageUris.get(0));

startActivity(intent);

Android7.0分享朋友圈FileProvider生成的Uri无法被识别

https://www.jianshu.com/p/796c28011dc2

https://www.jianshu.com/p/796c28011dc2

一切都正常,但是为什么会有这样的提示,百般无奈只能上谷歌,一查,原来有些应用对于FileProvider生成的Uri无法识别,需要转化成MediaStore 的 content://。

public static UrigetImageContentUri(Context context, File imageFile) {

String filePath = imageFile.getAbsolutePath();

    Cursor cursor = context.getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,

            new String[]{MediaStore.Images.Media._ID}, MediaStore.Images.Media.DATA +"=? ",

            new String[]{filePath}, null);

    Uri uri =null;

    if (cursor !=null) {

if (cursor.moveToFirst()) {

int id = cursor.getInt(cursor.getColumnIndex(MediaStore.MediaColumns._ID));

            Uri baseUri = Uri.parse("content://media/external/images/media");

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

        }

cursor.close();

    }

if (uri ==null) {

ContentValues values =new ContentValues();

        values.put(MediaStore.Images.Media.DATA, filePath);

        uri = context.getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);

    }

return uri;

}

这样就不是 分享失败,多文件分享仅支持照片格式


另外微信分享到 朋友圈应该是这个。。

Intent intent = new Intent();

        ComponentName componentName = new ComponentName("com.tencent.mm", "com.tencent.mm.ui.tools.ShareToTimeLineUI"); 

        intent.setComponent(componentName); 

        intent.setAction(Intent.ACTION_SEND); 

        intent.setType("image/*"); 

        intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file)); 

        startActivity(intent); 

————————————————

版权声明:本文为CSDN博主「起猿」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/gaoshouxiaodi/article/details/40589903

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。