2015-06-16 30 views
-1

接收ACTION_SEND時,我可以在ACTION_VIEW收到FileInfo的是這樣的:提取文件數據的Android

String[] dataFileds = new String[]{ 
      MediaStore.MediaColumns.DATA, 
      OpenableColumns.DISPLAY_NAME, 
      OpenableColumns.SIZE}; 

    Cursor cursor = context.getContentResolver().query(uri, dataFileds, null, null, null); 
    cursor.moveToFirst(); 

    fileLocation = cursor.getString(cursor.getColumnIndex(MediaStore.MediaColumns.DATA)); 
    title = cursor.getString(cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME)); 
    size = cursor.getInt(cursor.getColumnIndex(OpenableColumns.SIZE)); 

    cursor.close(); 

它有一個URI可能看起來像這樣的:內容://下載/ all_downloads/387

我的問題是通過ACTION_SEND接收文件時。在這裏,我得到一個URI看起來像這樣的:文件:///storage/emulated/0/Download/Arkitekturvalg.pdf

當我使用相同的代碼來獲取文件數據,我得到一個空指針錯誤在cursor

當用戶想要將文件共享到我的應用程序時,我將如何能夠接收文件信息?

請注意,URIs是針對同一個文件。

+2

您具有文件系統上文件的路徑。你想要什麼樣的信息?你已經有了'顯示名稱'(Arkitekturvalg.pdf)。您可以使用File類檢索文件大小。 – greenapps

回答

3

如果Uri的方案是file,然後使用getLastPathSegment()獲得「顯示名稱」(文件名)。然後,使用new File(uri.getPath()).length()來獲取文件的長度。