如何从URI获取文件path?

请在下面find我的代码。 我需要得到由SDcard用户select的PDF文档的文件path。 问题是URI.getPath()返回:

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

正确的path是

 /sdcard/my Report.pdf 

请注意 ,我在stackoverflow上search,但find了获取图像或video的filePath的例子,没有例如如何得到PDF的情况下的文件path

我的代码,不是所有的代码,但只有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获得正确的path?

Solutions Collecting From Web of "如何从URI获取文件path?"

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

应该返回你正确的path

编辑

正如@Tronbuild议的工作代码是

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

这里是对这个问题的答案

其实我们必须从Camera Application的可共享ContentProvider中获取它