2012-01-16 26 views
34

Si prega di trovare il mio codice qui sotto. Ho bisogno di ottenere il percorso del file del documento pdf, selezionato dall'utente da SDcard. Il problema è che l'URI.getPath() restituisce:Come ottenere il percorso del file dall'URI?

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

Il percorso corretto è:

/sdcard/my Report.pdf 

Si prega di notare che ho cercato su StackOverflow ma ho trovato l'esempio di ottenere il filePath di immagine o video, non c'è un esempio di come ottenere il percorso file in caso di PDF?

Il mio codice, non tutto il codice, ma solo la parte 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"); 
      }    
      } 
     } 
} 

Qualcuno può per favore mi aiuti come ottenere il percorso corretto da URI?

+0

Ecco la risposta corretta alla domanda [avere uno sguardo] [1] [1]: http://stackoverflow.com/questions/3401579/get-filename-and-path-from-uri-from-mediastore – sheetal

risposta

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

dovrebbe restituire u il percorso corretto

EDIT

Come @Tron suggerito il codice di lavoro è

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

Non ho il FILE qui, ho bisogno di ottenerlo dall'URI. –

+0

vedere la risposta modificata –

+0

Il suo ritorno: /content:/com.quickoffice.mx.samsung/file%3A%2F%2F%2Fmnt%2Fsdcard%2FMy%2520Report.pdf/My%20Report.pdf?MIME-TYPE= application% 2Fpdf –

4

Ecco la risposta alla domanda here

In realtà dobbiamo ottenere dalla ContentProvider condivisibile della Camera Application

Problemi correlati