来电呼入时的各种信息显示都是在CallCard.java中实现的,其中的updateDisplayForPerson是主角。updateDisplayForPerson会根据电话的当前状态来更改名字号码等信息的显示。图片的替换代码如下:
ContactsAsyncHelper.updateImageViewWithContactPhotoAsync(
info, 0, this, call, getContext(), mPhoto, personUri, R.drawable.picture_unknown);
该方法可以传入CallerInfo信息以及各种参数,然后根据personUri将加载后获得的大头贴图片显示在mPhoto,picture_unknown是mPhoto的默认值。personUri的获取代码如下:
personUri = ContentUris.withAppendedId(Contacts.CONTENT_URI, info.person_id);
R.drawable.picture_unknown则是系统默认的显示图片,如果查询不到相应personUri的大头贴信息,就会使用该图片。图片的加载是在ContactsAsynHelper.java中实现的。updateImageViewWithContactPhotoAsync方法的参数比较多,主要用于参数设定,消息发送:
public static final void updateImageViewWithContactPhotoAsync(CallerInfo info, int token,
OnImageLoadCompleteLi