Android7.0分享朋友圈FileProvider生成的Uri無(wú)法被識(shí)別

最近在做一個(gè)分享功能,直接調(diào)用的是系統(tǒng)的分享,實(shí)際測(cè)試在Android6.0及以下版本,都是可以測(cè)試正常的。我們都知道,在android7.0中,無(wú)法通過(guò)Uri.fromFile(file);直接來(lái)獲取Uri,替換他的是通過(guò)FileProvider,通過(guò)下面這種方式來(lái)獲取文件的Uri,

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

一切想的很美好,但是運(yùn)行調(diào)用分享的時(shí)候,提示:“獲取資源失敗,僅支持分享圖片”,
既然是獲取資源失敗,那就debug一下看看是哪里沒(méi)有獲取到資源,結(jié)果Uri是能正常獲取到的,所有并不是資源的問(wèn)題,那么就從文件類型檢查一下,發(fā)現(xiàn)我設(shè)置的intent的type也是圖片類型的。如:
shareIntent.setType("image/jpeg");,
一切都正常,但是為什么會(huì)有這樣的提示,百般無(wú)奈只能上谷歌,一查,原來(lái)有些應(yīng)用對(duì)于FileProvider生成的Uri無(wú)法識(shí)別,需要轉(zhuǎn)化成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再一次進(jìn)行轉(zhuǎn)化, 把他變成系統(tǒng)可以識(shí)別的Uri
imageUri = ImgFileUtils.getImageContentUri(mContext, new File(imgCache.get(i)));
到這里就能成功調(diào)起微信朋友圈的頁(yè)面了

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容