联系人信息显示在CallCard中,提示当前正在通话的联系人号码、姓名、头像、号码类型等信息;

  • 代码中在两个地方发起对当前联系人的查询,

Init():startContactInfoSearch(call, true, call.getState() == Call.State.INCOMING); // 界面第一次启动

onStateChange():maybeStartSearch(mPrimary, true); // call状态改变,primary call has changed

图表 callerinfo查询流程

  • 查询结束后对UI的刷新过程,

ContactInfoCache中申明了这个接口:

public interface ContactInfoCacheCallback {

public void onContactInfoComplete(String callId, ContactCacheEntry entry);

public void onImageLoadComplete(String callId, ContactCacheEntry entry);

}

分别用于联系人信息,头像查询结束后的回调操作,在CallCardPresenter中实现。

CallCardPresenter中查询联系人信息时传入参数new ContactLookupCallback(this, isPrimary)到ContactInfoCache中保存下来mCallBacks,用作回调;

CallerInfoAsyncQuery中申明了这个接口:

public
interface OnQueryCompleteListener {

public void
onQueryComplete(int token, Object cookie, CallerInfo ci);

}

ContactInfoCache中对其进行实现,并将实现类传递到CallerInfoAsyncQuery中,用作查询完成之后的回调方法。完成查询后,onQueryComplete()方法中取得mCallBacks,并将结果应用到CallCard中对应的view上显示出来。

  • 头像的查询与加载,

联系人信息查询完成之后,如果phoneUri不为空,需要通过ContactsAsyncHelper.startObtainPhotoAsync(TOKEN_UPDATE_PHOTO_FOR_CALL_STATE,
mContext, cacheEntry.displayPhotoUri, ContactInfoCache.this,
callId);来加载联系人头像。

类ContactsAsyncHelper也是通过start一个新线程执行加载操作,加载完成用回调方式显示在CallCard界面。

incallui中如何查询联系人数据的更多相关文章

  1. SQL Server中时间段查询和数据类型转换

    不知道什么时候对数据独有情种,也许是因为所学专业的缘故,也许是在多年的工作中的亲身经历,无数据,很多事情干不了,数据精度不够,也很多事情干不了,有一次跟一个朋友开玩笑说,如果在写论文的时候,能有一份独 ...

  2. pb中遍历查询数据库数据问题(数据库为 sql server)

    指针可以实现但是不推荐 例如:(部分代码) for ll_a = 1 to ll_count    ll_b = ll_i +  ll_a  //插入行行号先下移一位    dw_main.inser ...

  3. wcf+linq to sql中关联查询返回数据问题

    前段时间准备采用wcf+nh框架开发sl程序,发现采用nh开发不适合我的中型.并且快速开发项目,所以综合考量了下,决定采用wcf+linq to sql . 但是此模式也有缺点,也是linq to s ...

  4. ORACLE 查询一个数据表后通过遍历再插入另一个表中的两种写法

    ORACLE 查询一个数据表后通过遍历再插入另一个表中的两种写法 语法 第一种: 通过使用Oracle语句块  --指定文档所有部门都能查看 declare cursor TABLE_DEPT and ...

  5. 如何从SharePoint Content DB中查询List数据

    SharePoint用来维护基础数据非常方便,只需要建立自定义列表,然后使用InfoPath自定义一下维护界面,就可以实现在线的增删改查,开发效率很高.如果维护的数据需要进行审批,还可以加入工作流功能 ...

  6. 方法:查询MongoDB数据库中最新一条数据(JAVA)

    使用JAVA语言查询MongoDB中某个数据库某个集合的最新一条数据: MongoCollection<Document> cpu = MongoClient.getDatabase(&q ...

  7. MySQL将表a中查询的数据插入到表b中

    MySQL将表a中查询的数据插入到表b中 假设表b存在 insert into b select * from a; 假设表b不存在 create table b as select * from a ...

  8. C# 将Access中时间段条件查询的数据添加到ListView中

    C# 将Access中时间段条件查询的数据添加到ListView中 一.让ListView控件显示表头的方法 在窗体中添加ListView 空间,其属性中设置:View属性设置为:Detail,Col ...

  9. oracle 中对查询出来的数据进行切割、截取等操作

    oracle 中对查询出来的数据进行切割.截取等操作 最近遇到一个问题,需要把一个带有,的字符串拆分成多行.通过查询资料,这个操作需要使用以下2个关键知识: 1. REGEXP_SUBSTR函数 这个 ...

随机推荐

  1. matlab,xls转换为mat文件

    b=xlsread('iris_data.xls');save iris_data.mat b

  2. springmvc获取jar中的静态资源与jar包中的资源互相引用问题

    1.首先看jar中的文件位置 2.在web工程中引用该jar 并且在springmvc文件中配置路径 如果有多个路径可用逗号隔开 3.在web工程找jsp页面如何引用 这样就可以了 关于jar中的资源 ...

  3. CSS行高line-height的一些深入理解及应用

    一.一些字面意思. “行高”大约是指:一行文字的高度.具体来说是指两行文字间基线之间的距离.基线是在英文字母中用到的一个概念,我们刚学英语使用的那个英语本子每行有四条线,其中底部第二条线就是基线,是a ...

  4. sortable items不让他拖,也不让他放。cancel不然他拖动

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  5. chrome下li标签onclick事件无效

    //绑定事件 $(document).ready(function () { $("ul").children().click(function () { clickLi(this ...

  6. 简单的socket方法

    void sockfunc() { WSADATA Ws; WSAStartup(MAKEWORD(,), &Ws); SOCKET hs = socket(AF_INET, SOCK_STR ...

  7. TheSixthWeekJavaText

    加密文档 实验要求编写一个算法加密一串英文字串. 设计思想:对于一个字符串,我们可以用String.charAt()方法依次取出其中的字符元素,组成一个字符数组.由于字符可以转化为short类型变量进 ...

  8. jquery事件绑定

    window.onload 和 Jquery $(document).ready() 区别 * .用JavaScript的方式window.onload :必须等页面上所有的元素(css/js/图片) ...

  9. jsvc 以daemon方式运行tomcat

    原理: 使用jsvc来运行服务,没有了默认8005的shutdown端口: 主进程pid为1,fork 2个进程 运行方式参考:http://commons.apache.org/proper/com ...

  10. 绳关节(b2RopeJoint)

    package{ import Box2D.Collision.b2AABB; import Box2D.Collision.b2RayCastInput; import Box2D.Collisio ...