programacion - manual de android en pdf
¿Cómo obtener la ruta del archivo desde URI? (2)
Aquí está la respuesta a la pregunta aquí
En realidad, debemos obtenerlo del ContentProvider de aplicación de cámara compartible.
EDITAR Copiando la respuesta que funcionó para mí
private String getRealPathFromURI(Uri contentUri) {
String[] proj = { MediaStore.Images.Media.DATA };
CursorLoader loader = new CursorLoader(mContext, contentUri, proj, null, null, null);
Cursor cursor = loader.loadInBackground();
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
String result = cursor.getString(column_index);
cursor.close();
return result;
}
Esta pregunta ya tiene una respuesta aquí:
Por favor encuentra mi código a continuación. Necesito obtener la ruta del archivo del documento pdf, seleccionado por el usuario desde la tarjeta SD. El problema es que el URI.getPath () devuelve:
/file:///mnt/sdcard/my%20Report.pdf/my Report.pdf
La ruta correcta es :
/sdcard/my Report.pdf
Tenga en cuenta que busqué en stackoverflow pero encontré el ejemplo de cómo obtener el filePath de imagen o video, ¿ no hay un ejemplo de cómo obtener el archivo en el caso de PDF ?
Mi código, NO todo el código, pero solo la parte en 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");
}
}
}
}
¿Pueden algunos por favor ayudarme a obtener la ruta correcta de URI?
File myFile = new File(uri.toString());
myFile.getAbsolutePath()
debe devolverle el camino correcto
EDITAR
Como @Tron sugirió que el código de trabajo es
File myFile = new File(uri.getPath());
myFile.getAbsolutePath()