Tengo una ruta real de un archivo como "file: ///mnt/sdcard/3dphoto/temp19.jps" , ¿cómo puedo obtener el uri como "contenido: // media/external/images/media/1 "?Obtener Uri desde la ruta real
Respuesta
Transforme su "archivo: // ..." en una ruta de archivo, busque la identificación del artículo con el siguiente código y luego añádalo al URI del proveedor. Además, sobre la base de las extensiones de archivo, utilice el proveedor adecuado (por ejemplo MediaStore.Video.Media.EXTERNAL_CONTENT_URI o MediaStore.Image.Media.EXTERNAL_CONTENT_URI)
/**
* Given a media filename, returns it's id in the media content provider
*
* @param providerUri
* @param appContext
* @param fileName
* @return
*/
public long getMediaItemIdFromProvider(Uri providerUri, Context appContext, String fileName) {
//find id of the media provider item based on filename
String[] projection = { MediaColumns._ID, MediaColumns.DATA };
Cursor cursor = appContext.getContentResolver().query(
providerUri, projection,
MediaColumns.DATA + "=?", new String[] { fileName },
null);
if (null == cursor) {
Log.d(TAG_LOG, "Null cursor for file " + fileName);
return ITEMID_NOT_FOUND;
}
long id = ITEMID_NOT_FOUND;
if (cursor.getCount() > 0) {
cursor.moveToFirst();
id = cursor.getLong(cursor.getColumnIndexOrThrow(BaseColumns._ID));
}
cursor.close();
return id;
}
veces Mediaprovider no se actualiza inmediatamente después de un archivo multimedia agregado al almacenamiento del dispositivo. Puede forzar a actualizar sus registros usando este método:
/**
* Force a refresh of media content provider for specific item
*
* @param fileName
*/
private void refreshMediaProvider(Context appContext, String fileName) {
MediaScannerConnection scanner = null;
try {
scanner = new MediaScannerConnection(appContext, null);
scanner.connect();
try {
Thread.sleep(200);
} catch (Exception e) {
}
if (scanner.isConnected()) {
Log.d(TAG_LOG, "Requesting scan for file " + fileName);
scanner.scanFile(fileName, null);
}
} catch (Exception e) {
Log.e(TAG_LOG, "Cannot to scan file", e);
} finally {
if (scanner != null) {
scanner.disconnect();
}
}
}
Entonces, ¿qué debería pasar al contexto? – newstartgirls
el contexto de la aplicación, la actividad de llamada, cualquier tipo de Contexto que pueda obtener del código de llamada ... – Rainbowbreeze
¿Alguien sabe cómo es posible lo contrario? En realidad, quiero crear un archivo de "contenido: //" –
tuve misma pregunta para mi actividad de exploración de archivos ... pero u debería knw THT la contenturi de archivos sólo admite los datos Mediastore como imagen, audio y vídeo .... te estoy dando para conseguir uri contenido de la imagen desde la selección de una imagen de sdcard .... probar este código ... puede ser que va a trabajar para usted ...
public static Uri getImageContentUri(Context context, File imageFile) {
String filePath = imageFile.getAbsolutePath();
Cursor cursor = context.getContentResolver().query(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
new String[] { MediaStore.Images.Media._ID },
MediaStore.Images.Media.DATA + "=? ",
new String[] { filePath }, null);
if (cursor != null && cursor.moveToFirst()) {
int id = cursor.getInt(cursor
.getColumnIndex(MediaStore.MediaColumns._ID));
Uri baseUri = Uri.parse("content://media/external/images/media");
return Uri.withAppendedPath(baseUri, "" + id);
} else {
if (imageFile.exists()) {
ContentValues values = new ContentValues();
values.put(MediaStore.Images.Media.DATA, filePath);
return context.getContentResolver().insert(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
} else {
return null;
}
}
}
¿Y si no es una imagen o video? ¿Qué debemos hacer entonces? – soshial
Otra manera fácil:
File file = new File(Path);
Uri uri = Uri.fromFile(file);
Éste no se puede resolver en el caso: carácter especial de la carpeta. No está bien. –
- 1. ¿Cómo obtener la ruta del archivo desde el URI?
- 2. obtener ruta desde la url
- 3. Java: Obtener URI desde FilePath
- 4. Convertir formato de ruta real a Uri en Android
- 5. Obtener la variable en la ruta de un URI
- 6. Android obtener imagen de la galería Uri ruta
- 7. Cómo obtener un objeto URI desde Bitmap
- 8. Ruta relativa utilizando Uri
- 9. ¿Cómo obtener la solicitud uri desde location.href en javascript?
- 10. ¿Cómo obtener URI de solicitud sin ruta de contexto?
- 11. Obtener móvil no desde el dispositivo real
- 12. Obtener ruta real de un archivo en una clase Java
- 13. ¿Convertir la ruta del archivo a un archivo URI?
- 14. ¿Cómo obtener el Uri de MediaStore a través de la ruta del archivo?
- 15. Validación de Uri desde la Cadena
- 16. obtener la ruta de función de importación
- 17. ¿Cómo recuperar la ruta de un archivo de audio o uri desde el dispositivo en Android?
- 18. ¿Cómo obtener la ruta del PHP BIN desde PHP?
- 19. Ruta del matraz con componente codificado URI
- 20. ¿Cómo obtener la ruta absoluta del archivo desde la ruta base y relativa que contiene ".."?
- 21. cómo obtener Eclipse Workspace URI de ubicación
- 22. ¿Cómo obtener la ruta real de la aplicación Java en tiempo de ejecución?
- 23. Cómo obtener el archivo real desde S3 usando CarrierWave
- 24. Obtención de una ruta virtual relativa desde la ruta física
- 25. Drive de ruta del archivo tipo de URI en C#
- 26. Java EE: ¿la mejor manera de obtener una ruta real para los archivos cargados?
- 27. Obtener ruta absoluta con boost :: filesystem :: ruta
- 28. jquery - obtener la ruta url?
- 29. WIN32_FIND_DATA - Obtener la ruta absoluta
- 30. ¿Obtiene la función de vista desde la solicitud uri?
Seems relacionado con http://stackoverflow.com/questions/5657411/android-getting-a-file-uri-from-a-content-uri ¿Podría proporcionar el contexto? – Renaud