Я занимаюсь деятельностью, где я показываю список контактов телефона по их именам и их фотографиям. Я использую курсор и Managedquery с ListAdapter, чтобы адаптировать все к макету.Как контролировать BitmapFactory FileNotFoundException с помощью ListAdapter
Это работает хорошо, но я вижу в Logcat ошибку, связанную с теми, у кого нет изображения, и я бы хотел их контролировать, показывая значок андроида по умолчанию, но я не нашел способ сделай это.
Вот пример:
Example of the contact list generated
Синий размытие имена. Hidden сохранить свою идентичность: P
Вот код:
Contactos.java
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_contactos);
//Llamamos función para conseguir todos los contactos.
Cursor cursor = getContacts();
startManagingCursor(cursor);
// Llenamos la ListView con los contactos del teléfono
try {
ListAdapter infoContacto = new SimpleCursorAdapter(this,R.layout.contacto,
cursor,new String[] {ContactsContract.Contacts.PHOTO_THUMBNAIL_URI,ContactsContract.Contacts.DISPLAY_NAME},
new int[] {R.id.foto, R.id.nombreContacto}, 0);
setListAdapter(infoContacto);
}catch(Exception e){
Log.d("Excepcion",e.toString());
}
}
private Cursor getContacts() {
Uri contacto = ContactsContract.Contacts.CONTENT_URI;
/* Seleccionamos la información que necesitamos. ID SIEMPRE NECESARIO. */
String[] projection = new String[] {ContactsContract.Contacts._ID,ContactsContract.Contacts.PHOTO_THUMBNAIL_URI,ContactsContract.Contacts.DISPLAY_NAME};
/* Los ordenamos por nombre */
String selection = ContactsContract.Contacts.IN_VISIBLE_GROUP;
String[] selectionArgs = null;
String ordenarPorNombre = ContactsContract.Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC";
/* Devolvemos los contactos */
return managedQuery(contacto, projection, selection, selectionArgs,
ordenarPorNombre);
}
Logcat
06-08 23:50:41.429: E/BitmapFactory(20808): Unable to decode stream: java.io.FileNotFoundException: /: open failed: EISDIR (Is a directory)
06-08 23:50:41.429: I/System.out(20808): resolveUri failed on bad bitmap uri:
06-08 23:50:41.439: E/BitmapFactory(20808): Unable to decode stream: java.io.FileNotFoundException: /: open failed: EISDIR (Is a directory)
06-08 23:50:41.439: I/System.out(20808): resolveUri failed on bad bitmap uri:
06-08 23:50:41.469: E/BitmapFactory(20808): Unable to decode stream: java.io.FileNotFoundException: /: open failed: EISDIR (Is a directory)
06-08 23:50:41.469: I/System.out(20808): resolveUri failed on bad bitmap uri:
06-08 23:50:41.479: E/BitmapFactory(20808): Unable to decode stream: java.io.FileNotFoundException: /: open failed: EISDIR (Is a directory)
Я предполагаю, что я должна положить, если утверждение где-то до проекции defi чтобы проверить, является ли допустимым URI или файлом, а не каталогом, но как и где?
И последний вопрос, следует ли использовать текущий метод или лучше изменить его на getContentResolver(). Query (blablabla ...) ??
Спасибо за ваше время.
Большое спасибо помощнику! Это то, что я искал для управления контактными изображениями. – arkanos
Вы больше всего приветствуетесь –