Viendo la foto del contacto por photo_ID

Permito que el usuario seleccione un contacto en mi aplicación y lo muestro en el widget de la pantalla de inicio, pero la foto no se muestra y no sé qué está mal.

Así es como obtengo la referencia a la foto:

...
Cursor c = null;
try {
    c = getContentResolver().query(uri, new String[] {
            ContactsContract.CommonDataKinds.Phone.NUMBER,
            ContactsContract.CommonDataKinds.Phone.TYPE,
            ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,
            ContactsContract.CommonDataKinds.Phone.PHOTO_ID },
            null, null, null);

    if (c != null && c.moveToFirst()) {
        String number = c.getString(0);
        int type = c.getInt(1);
        String name = c.getString(2);
        int photo = c.getInt(3);
        showSelectedNumber(type, number, name, photo);
    }
}

Así es como lo muestro:

public void showSelectedNumber(int type, String number, String name, int photo) {
    mAppWidgetPrefix.setText(name);
    pickedNumber.setText(number);
    pickedPhoto.setImageResource(photo);
}

¿Por qué no funciona?

Respuestas a la pregunta(1)

Su respuesta a la pregunta