¿Cómo obtienes una foto de contacto a través del proveedor de contactos en android 2.3.6?

Tengo esta versión que trabaja para android 4 ( String email es una dirección de Gmail):

 private Uri getPhotoUriFromEmail(String email) { Uri u = null; String[] projection = { ContactsContract.CommonDataKinds.Email.PHOTO_URI }; String photoUri; ContentResolver cr = context.getContentResolver(); Cursor emailCur = cr.query(ContactsContract.CommonDataKinds.Email.CONTENT_URI, projection, ContactsContract.CommonDataKinds.Email.ADDRESS + " = ?", new String[]{email}, null); if (emailCur.moveToNext()) { photoUri = emailCur.getString( emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.PHOTO_URI)); u = Uri.parse(photoUri); } return u; } 

¿Cuál es su versión 2.3.6? (¿También no debería el androide SDK avisarme sobre el uso de la API 11 cuando establecí API 8 como mi soporte mínimo de API? Porque no …)

Puede obtener la foto de contacto uri sin utilizar ContactsContract.CommonDataKinds.Email.PHOTO_URI esta manera:

 private Uri getPhotoUriFromEmail(String email) { Uri u = null; String[] projection = { ContactsContract.CommonDataKinds.Photo.CONTACT_ID }; String photoUri; ContentResolver cr = getContentResolver(); Cursor emailCur = cr.query(ContactsContract.CommonDataKinds.Email.CONTENT_URI, projection, ContactsContract.CommonDataKinds.Email.ADDRESS + " = ?", new String[]{email}, null); if (emailCur.moveToNext()) { int columnIndex = emailCur.getColumnIndex( ContactsContract.CommonDataKinds.Photo.CONTACT_ID); long contactId = emailCur.getLong(columnIndex); u = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, contactId); u = Uri.withAppendedPath(u, ContactsContract.Contacts.Photo.CONTENT_DIRECTORY); } return u; } 

Alternativamente, puede obtener el flujo de fotos utilizando el método ContactsContract.Contacts .openContactPhotoInputStream(ContentResolver, Uri) esta manera:

 private InputStream getPhotoInputStreamFromEmail(String email) { Uri u = null; String[] projection = { ContactsContract.CommonDataKinds.Photo.CONTACT_ID }; String photoUri; ContentResolver cr = getContentResolver(); Cursor emailCur = cr.query(ContactsContract.CommonDataKinds.Email.CONTENT_URI, projection, ContactsContract.CommonDataKinds.Email.ADDRESS + " = ?", new String[]{email}, null); if (emailCur.moveToNext()) { int columnIndex = emailCur.getColumnIndex( ContactsContract.CommonDataKinds.Photo.CONTACT_ID); long contactId = emailCur.getLong(columnIndex); u = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, contactId); return ContactsContract.Contacts.openContactPhotoInputStream(cr, u); } return null; } 
  • Reducción inicial de zoom de Webview de Android
  • Android WebView - Fuga de memoria de JavaScript
  • Android - Administrador de etiquetas de Google con Google Analytics y Firebase Analytics
  • El geocodificador no siempre devuelve un valor
  • SQLite de Android CursorIndexOutOfBounds
  • Excepción en el daemon del finalizador
  • Diseño de cuadrícula de botones 2x2
  • ¿Cómo puedo implementar Google Play Licensing para una aplicación de Android?
  • Android.app.Application no se puede convertir en android.app.Activity
  • NumberFormatException en las versiones europeas de Android?
  • ¿Cómo pasar de managedQuery a LoaderManager / CursorLoader?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.