联系人信息显示在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. 通过linux的iso镜像安装(RPM)扩展工具包

    通过linux的iso镜像安装(RPM)扩展工具包 在linux安装软件时,现在越来越流行通过rpm指令安装完成,原因是:采用RPM安装简单方便:越来越多的软件提供RPM安装包:linux的IOS镜像 ...

  2. hdu1035

    #include<stdio.h>#include<string.h>int step,n,m;int a[1010][1010];char map[11][11];void ...

  3. Makfile文件编写

    一.make是什么 GNU make是一个工程管理器,专门负责管理.维护较多文件的处理,实现自动化编译.如果一个工程项目中,有成百上千个代码源文件,若其中一个或多个文件进过修改,make就需要能够自动 ...

  4. HashMap按键排序和按值排序

    对map集合进行排序   今天做统计时需要对X轴的地区按照地区代码(areaCode)进行排序,由于在构建XMLData使用的map来进行数据统计的,所以在统计过程中就需要对map进行排序. 一.简单 ...

  5. 搭建git代码服务器

    在代码管理中,通常需要使用版本管理工具,git就是一个不错的选择,这里简单罗列一下git服务器的搭建过程. 1. 安装git工具包 2. 初始化git库:在代码服务器上,通常只需要创建一个不含有工作目 ...

  6. 2015 asia xian regional F Color (容斥 + 组合数学)

    2015 asia xian regional F Color (容斥 + 组合数学) 题目链接http://codeforces.com/gym/100548/attachments Descrip ...

  7. maven 3.3.9-bin 和 maven 3.3.9-src 的区别 以及 maven安装包的 .tar.gz后缀与.zip 后缀的区别

    (maven 3.3.9-bin)一个是class的文件包,由java文件编译成的,(maven 3.3.9-src )一个是java文件包即是源码(.tar.gz后缀)是linux的压缩包,(.zi ...

  8. C# 委托的三种调用示例(同步调用 异步调用 异步回调)

    首先,通过代码定义一个委托和下面三个示例将要调用的方法: 复制代码 代码如下: public delegate int AddHandler(int a,int b);    public class ...

  9. mysql for windows zip版安装

    1.将mysql_5.6.24_winx64.zip 解压到文件夹 2.增加环境变量 3.修改mysql配置文件 将mysql根目录下的my-default.ini 复制一份更名为 my.ini.修改 ...

  10. proc中tran的一般处理

    存储过程事物的处理 一般情况在proc中判断的处理我们都采用 ) begin select '错误' return end 而在tran中我们最好用抛异常的方式 begin try begin SET ...