我正在做一个活动,我通过他们的姓名和照片显示手机的联系人列表。我使用 Cursor 和带有 ListAdapter 的 Managedquery 来调整所有内容以适应布局。
它工作得很好,但我在 Logcat 中看到与那些没有图片的人相关的错误,我想控制它们,显示 android 默认的无照片图标,但我还没有找到办法。
这是一个例子:
蓝色模糊是名称。隐藏以保留他们的身份: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);
}
日志猫
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)
我想我应该在投影定义之前的某处放置一个 if 语句来检查是否是有效的 URI 或文件而不是目录,但是如何以及在哪里?
最后一个问题,我应该使用当前方法还是更好地将其更改为 getContentResolver().query(blablabla...)?
谢谢你的时间。