2012-02-23 105 views

回答

0

我不相信你可以用一个查询获得所有的照片。这将是一个非常大的光标对象,再加上我已经读过的关于将照片实际存储在数据库中的一切都很麻烦。

相反,你可以很容易地在只查询所有联系人的ID,并通过

public static Bitmap loadContactPhoto(ContentResolver cr, long id) { 
Uri uri = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, id); 
InputStream input = ContactsContract.Contacts.openContactPhotoInputStream(cr, uri); 
if (input == null) { 
    return null; 
} 
return BitmapFactory.decodeStream(input);} 
+0

抢照片我做同样的事情......但它正在采取的很长一段时间的地狱来获取数据...我在我的手机中有大约1200个联系人......而且它正在谈论15-20秒以获取所有数据。如果我只是删除负载图片调用...所有的联系人都在1秒内加载。请让我知道是否有其他方式。 – rahul 2012-02-23 20:32:25

+0

所以这听起来像你将不得不做混合调节你的通话和图像缓存。我不知道你的应用程序,但是你没有任何可能的方式一次显示1200个联系人。你只需要打电话给你需要显示的照片(可能是接下来的几个),而不是一次性完成所有的事情 – 2012-02-23 20:51:04