Tengo un problema al analizar una uri de foto tomada para la actividad de cultivo. En mi aplicación, los usuarios pueden tomar una foto o seleccionar una de la galería y luego recortarla y subirla. Todo suena sencillo.Android: Llamar a la actividad de cultivo después de tomar la foto
Cuando Seleccionar de la galería, Galería aplicación devuelve un URI para la foto seleccionada como esto:
content://media/external/images/media/20
comienzo a la actividad de los cultivos con este URI siguiente código, todo parece bien:
Intent intent = new Intent("com.android.camera.action.CROP");
intent.setData(uri);
intent.putExtra("outputX", 96);
intent.putExtra("outputY", 96);
intent.putExtra("aspectX", 1);
intent.putExtra("aspectY", 1);
intent.putExtra("scale", true);
intent.putExtra("return-data", true);
startActivityForResult(intent, REQUEST_CODE_CROP);
Pero cuando tomo una foto, solo puedo conocer el camino de la foto como este:
file:///mnt/sdcard/iBet88.us/IMAGE_20120517_151606.jpg
y Cosecha La actividad no aceptará este uri. he intentado otra manera con el Proveedor de Contenido: añadir foto recién capturado a ContentProvider, y luego obtener nueva uri en Sheme "contenido: // ..." de código siguiente:
// TODO insert to Content Provider
ContentResolver cr = getContentResolver();
ContentValues contentValues = new ContentValues();
contentValues.put(MediaStore.Images.Media.DATA, avatarFilePathTmp.getPath());
contentValues.put(MediaStore.Images.Media.IS_PRIVATE, 0);
cr.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, contentValues);
// TODO get id from Content Provider
String[] projection = {
MediaStore.Images.Media._ID,
MediaStore.Images.Media.DATA
};
String selectionClause = "" + MediaStore.Images.Media.DATA + " = ?";
String[] selectionArgs = {avatarFilePathTmp.getPath()};
Cursor mCursor = getContentResolver().query(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
projection,
selectionClause,
selectionArgs,
"");
Uri uri = null;
if (null == mCursor) {
} else if (mCursor.getCount() < 1) {
} else {
mCursor.moveToFirst();
int id = mCursor.getInt(mCursor.getColumnIndex(MediaStore.Images.Media._ID));
String u = "content://media/external/images/media/" + id;
// create new Uri
uri = Uri.parse(u);
}
Mi nuevo Uri es similar a uri Galería de aplicación, pero cuando comienzo a la actividad de cultivos con nuevo Uri, consigo este Excepción:
android.content.ActivityNotFoundException: No Activity found to handle Intent { act=com.android.camera.action.CROP dat=content://media/external/images/media/20 (has extras) }
Mis preguntas:
Actividad 1. ¿Por qué cultivos se niega a trabajar con mi nuevo Uri, a pesar de mi nuevo Uri y uri de la aplicación de la Galería son el mismo "contenido: // ..."
2. ¿Cómo puedo llamar a Crop Activity para recortar una foto en una tarjeta SD, que solo conozco su ruta?
Intenté google pero todavía no tuve suerte.
Lo siento por mi mal inglés. Gracias.
¿Te funcionó entonces? – Darpan