美文网首页
Android7.0分享朋友圈FileProvider生成的Ur

Android7.0分享朋友圈FileProvider生成的Ur

作者: JFang | 来源:发表于2018-08-27 12:03 被阅读0次

    最近在做一个分享功能,直接调用的是系统的分享,实际测试在Android6.0及以下版本,都是可以测试正常的。我们都知道,在android7.0中,无法通过Uri.fromFile(file);直接来获取Uri,替换他的是通过FileProvider,通过下面这种方式来获取文件的Uri,

    imageUri = FileProvider.getUriForFile(mContext, 包名.fileProvider",new File(imgCache.get(i) ));
    

    一切想的很美好,但是运行调用分享的时候,提示:“获取资源失败,仅支持分享图片”,
    既然是获取资源失败,那就debug一下看看是哪里没有获取到资源,结果Uri是能正常获取到的,所有并不是资源的问题,那么就从文件类型检查一下,发现我设置的intent的type也是图片类型的。如:
    shareIntent.setType("image/jpeg");,
    一切都正常,但是为什么会有这样的提示,百般无奈只能上谷歌,一查,原来有些应用对于FileProvider生成的Uri无法识别,需要转化成MediaStore 的 content://。

    public static Uri getImageContentUri(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;
        }
    

    将上面获取到的imageUri再一次进行转化, 把他变成系统可以识别的Uri
    imageUri = ImgFileUtils.getImageContentUri(mContext, new File(imgCache.get(i)));
    到这里就能成功调起微信朋友圈的页面了

    相关文章

      网友评论

          本文标题:Android7.0分享朋友圈FileProvider生成的Ur

          本文链接:https://www.haomeiwen.com/subject/rnpziftx.html