2014-02-12 92 views
4

所選文件的文件擴展名,我發起的意圖啓動的文件選擇器,用戶可以在選擇PDF文件時,他們選擇一個文件,它使用和上傳到服務器獲得來自意圖

Intent intent = new Intent(Intent.ACTION_GET_CONTENT); 
intent.setType("file/*"); 
startActivityForResult(intent,1); 

返回onActivityResult,我看一下這個文件的Uri,看它是否包含.pdf

if(requestCode == 1 && resultCode == RESULT_OK){ 
    Uri filePath = data.getData(); 
    File file = new File(filePath.getPath()); 
    if(filePath.toString().contains(".pdf")){ 
     if(file.length() <= 1048576){ 
      de.setPDFUri(filePath.toString()); 
     }else{ 
      Toast.makeText(this,"PDF cannot be more than 1 MB, please select another", Toast.LENGTH_SHORT).show(); 
     } 
    }else{ 
     Toast.makeText(this,"Can only upload PDF files", Toast.LENGTH_SHORT).show(); 
    } 
} 

但是一些文件管理器應用程序(天文,資源管理器)這隻作品中,大部分的時間,我得到這樣的回報

file:///storage/sdcard0/Download/20131231103232738561744.pdf 

和其他程序(內置的應用程序製造商是唯一的,到目前爲止我所看到的),我得到這樣

content://media/external/file/109 

這顯然是一個回報率並沒有告訴我有關文件的任何事情,它的類型,並返回該文件的ContentProvider信息。

有沒有辦法讓用戶選擇.pdf文件通過發送意向或檢查uri並確保它是.pdf文件的方式?

+0

此問題提供了一些關於如何從內容URI獲取文件路徑的想法:http://stackoverflow.com/questions/20067508 – NigelK

回答

0

您可以通過在setType函數中指定文件MIME類型來限制可從意圖中選擇的文件的類型。從只選擇PDF文件限制用戶可以指定:

intent.setType("application/pdf");

0

intent.setType( 「應用程序/ PDF格式」);