2016-06-16 126 views
0

在我的應用程序中,我處理來自其他應用程序的圖像/視頻共享。從其他應用程序獲取文件的路徑

的問題是,如果我要處理來自畫廊它的偉大工程的圖像具有以下內容:

Uri fileUri = (Uri) data.getParcelableExtra(Intent.EXTRA_STREAM); 


    String[] projection = {MediaStore.MediaColumns.DATA}; 
    CursorLoader cursorLoader = new CursorLoader(mChatView.returnContext(), fileUri, projection, null, null, null); 
    Cursor cursor = cursorLoader.loadInBackground(); 
    cursor.moveToFirst(); 
    int column_index = cursor.getColumnIndexOrThrow(MediaStore.MediaColumns.DATA); 
    File selectedImage = new File(cursor.getString(column_index)); 

我得到我想要的所需文件。

的問題是,在圖像是通過其它應用程序(WHATSAPP/Fb的信使)我正在共享:WHATSAPP URI

cursor == null 

實施例:

fileUri = file:///storage/emulated/0/WhatsApp/Media/WhatsApp%20Images/Sent/IMG-20160616-WA0000.jpg 

我怎樣才能訪問文件?

-Tested在Nexus 5 - 安卓6.0.1 v

回答

0

做這樣的:

String uri = data.getParcelableExtra(Intent.EXTRA_STREAM).toString(); 

    Uri fileUri = (Uri) data.getParcelableExtra(Intent.EXTRA_STREAM); 

    File selectedImage; 

    if (uri.startsWith("file://")) { 
     selectedImage = new File(fileUri.getPath()); 
    } 
    else 
    { 
     String[] projection = {MediaStore.MediaColumns.DATA}; 
     CursorLoader cursorLoader = new CursorLoader(mChatView.returnContext(), fileUri, projection, null, null, null); 
     Cursor cursor = cursorLoader.loadInBackground(); 
     cursor.moveToFirst(); 
     int column_index = cursor.getColumnIndexOrThrow(MediaStore.MediaColumns.DATA); 
     selectedImage = new File(cursor.getString(column_index)); 
    } 
+0

我在這裏有同樣的問題,而是從我的URI看起來像林T.我uri看起來像這樣:content://com.whatsapp.provider.media/item/16348。我能做些什麼的想法? –

+0

@EduardoBonfa您可以使用我在上面的代碼片段中提供的相同功能。 else部分會照顧你的URI。 –

+1

這不是在這裏工作,請檢查我的問題在這裏https://stackoverflow.com/questions/44465601/get-path-from-another-app-whatsapp –

相關問題