2014-09-06 66 views
0

我有一種方法應該根據選定的文件URI返回contentResolver返回的文件名和文件大小,但有時選擇的文件沒有擴展名。我正在尋找一種方法來獲取完整的文件名及其擴展名或以某種方式確定文件類型的方法。下面是我的方法,我現在有使用擴展名獲取完整文件名

//This is the intent which triggers the file choosing 
    Intent fileIntent = new Intent(); 
    fileIntent.setType("*/*"); 
    fileIntent.setAction(Intent.ACTION_GET_CONTENT); 
    fileIntent.putExtra(Intent.EXTRA_LOCAL_ONLY, true); 
    startActivityForResult(fileIntent, REQUEST_CODE_FILE); 

    //Method in onActivityResult 
    Uri selectedFile = intent.getData(); 
    Cursor cursor = null; 
    String fileName = null; 
    int fileSize = 0; 
    try { 
     cursor = getContentResolver().query(selectedFile, null, null, null, null); 
     cursor.moveToFirst(); 
     fileName = cursor.getString(cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME)); 
     fileSize = cursor.getInt(cursor.getColumnIndex(OpenableColumns.SIZE)); 
    }catch(Exception ex){ 
     ex.printStackTrace(); 
    }finally { 
     if(cursor != null) { 
      cursor.close(); 
     } 
    } 

回答

1

我正在尋找一種方式來獲得完整的文件名,其擴展

OpenableColumns.DISPLAY_NAME不必是一個文件名。

或一種方法來確定對ContentResolver文件類型

呼叫getType(),供應Uri。這應該返回Uri的有效MIME類型。

+0

我明白了,所以要清楚,沒有真正的方法通過'ContentResolver'獲得帶擴展名的完整文件名?感謝關於'getType()'的建議。 – kabuto178 2014-09-06 15:13:38

+0

@ kabuto178:請理解'Uri'可能不是一個文件。你所問的等同於「我如何強制Web服務器給我擴展名爲URL的完整文件名?」答案是,你不能,部分原因是URL可能不指向文件。相反,它可能是動態生成的東西。 Android上的Uri值也是如此。 – CommonsWare 2014-09-06 15:48:51

+0

我明白了,在這種情況下,我必須有點創意,然後才能保留名稱和擴展名。乾杯 – kabuto178 2014-09-06 15:52:35