2012-01-16 199 views
34

請在下面找到我的代碼。我需要獲得用戶從SDcard中選擇的pdf文檔的文件路徑。問題是,URI.getPath()返回:如何從URI獲取文件路徑?

/file:///mnt/sdcard/my%20Report.pdf/my Report.pdf 

正確的路徑是

/sdcard/my Report.pdf 

請注意,我搜索了計算器,但發現得到的文件路徑的例子圖像或視頻的,沒有如何得到的文件路徑在PDF的案例?

我的代碼,而不是所有的代碼,但只有部分PDF

public void openPDF(View v) 
{ 
    Intent intent = new Intent(); 
    //intent.setType("pdf/*"); 
    intent.setType("application/pdf"); 
    intent.setAction(Intent.ACTION_GET_CONTENT); 
    startActivityForResult(Intent.createChooser(intent, "Select Pdf"), SELECT_PDF_DIALOG); 
} 
public void onActivityResult(int requestCode, int resultCode, Intent result) 
{ 
    if (resultCode == RESULT_OK) 
    { 
     if (requestCode == SELECT_PDF_DIALOG) 
     { 
      Uri data = result.getData(); 
      if(data.getLastPathSegment().endsWith("pdf")) 
      { 
       String pdfPath = data.getPath(); 
      } 
      else 
      { 
       CommonMethods.ShowMessageBox(CraneTrackActivity.this, "Invalid file type"); 
      }    
      } 
     } 
} 

一些可以幫我如何從URI的正確路徑?

+0

這裏的可共享的ContentProvider得到它是正確答案的問題 [看看] [1] [1]:HTTP:/ /stackoverflow.com/questions/3401579/get-filename-and-path-from-uri-from-mediastore – sheetal 2013-02-20 07:59:16

回答

21
File myFile = new File(uri.toString()); 
myFile.getAbsolutePath() 

應該返回u對應的正確路徑

編輯

由於@Tron建議的工作代碼爲

File myFile = new File(uri.getPath()); 
myFile.getAbsolutePath() 
+3

我沒有FILE這裏,我需要從烏里得到它。 – 2012-01-17 09:48:43

+0

看到編輯答案 – 2012-01-17 09:50:33

+0

它的返回: /content:/com.quickoffice.mx.samsung/file%3A%2F%2F%2Fmnt%2Fsdcard%2FMy%2520Report.pdf/My%20Report.pdf?MIME-TYPE=申請%2Fpdf – 2012-01-17 10:31:10

4

這裏是問題的答案 here

實際上,我們必須從攝像機應用