拨号盘搜索联系人之新建联系人等功能

拨号盘搜索到联系人后,会有三个选项:新建联系人、添加到联系人、发送短信。
其UI显示是通过packages/apps/Dialer/SearchActionViewHolder.java中的setAction()方法实现的:
拨号盘搜索联系人之新建联系人等功能_第1张图片

点击事件如下:
拨号盘搜索联系人之新建联系人等功能_第2张图片

添加到联系人:
(1)Intent的传递
添加到联系人首先调用IntentUtil.java中的getAddToExistingContactIntent()方法:
在这里插入图片描述

这个方法又返回了IntentUtil.java中另一个intent类型的包含电话号码的getAddToExistingContactIntent()方法:
在这里插入图片描述

getAddToExistingContactIntent()方法同样也是返回IntentUtil.java中intent类型的getAddToExistingContactIntent()方法:
在这里插入图片描述

public static final String ACTION_INSERT_OR_EDIT = “android.intent.action.INSERT_OR_EDIT”;
最终将intent.class中的这一Intent传回给添加到联系人点击事件中。
(2)如何通过intent启动联系人APP
在这里插入图片描述
获取Intent后,接着调用DialerUtils.java中的startActivityWithErrorToast()方法:
拨号盘搜索联系人之新建联系人等功能_第3张图片
拨号盘搜索联系人之新建联系人等功能_第4张图片
由于不满足IF条件,最终走的是context.startActivity(intent)这一步,可以看到,这里启动了一个Activity。接着再看packages/apps/Contacts/AndroidManifest.xml文件,搜索android.intent.action.INSERT_OR_EDIT这一intent,结果如下:
拨号盘搜索联系人之新建联系人等功能_第5张图片
可以看到通过这一intent启动了ContactSelectionActivity这一Activity,之后走的就是Contact中的流程。
新建联系人与发送短信走的都是同样的流程,在这里不再细说。

你可能感兴趣的:(拨号盘搜索联系人之新建联系人等功能)