Android: Llamando a la actividad del cultivo después de tomar la foto.

Estoy enfrentando un problema al analizar un uri de la foto tomada para recortar la actividad. En mi aplicación, los usuarios pueden tomar una foto o seleccionar una de la galería y luego recortarla y cargarla. Todo suena sencillo.

Cuando seleccione Galería, la aplicación Galería devolverá un uri para la foto seleccionada como esta:

content://media/external/images/media/20

Comienzo la actividad de recorte con este uri siguiendo el código, todo parece estar 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 de esta manera:

file:///mnt/sdcard/iBet88.us/IMAGE_20120517_151606.jpg

y la Actividad de Cultivo no aceptará este uri. Probé de otra manera con el proveedor de contenido: agregar una foto recién capturada a ContentProvider y luego obtener un nuevo uri en el contenido "contenido: // ..." del siguiente código:

// 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 al uri de la aplicación Gallery, pero cuando comienzo la actividad de recorte con el nuevo Uri, obtengo esta 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:
1. ¿Por qué Crop Activity se niega a trabajar con mi nuevo Uri, a pesar de que mi nuevo Uri y uri de la aplicación Gallery tienen el mismo "contenido: // ..."
2. ¿Cómo puedo llamar a la Actividad de recorte para recortar una foto en sdcard que solo conozco su ruta?

Intenté google pero todavía no tengo suerte.
Perdón por mi mal ingles. Gracias.

Respuestas a la pregunta(1)

Su respuesta a la pregunta