安卓手机如何获取通讯录中的姓名和电话

安卓手机如何获取通讯录中的姓名和电话,第1张

今天早上看到一个通讯录的Demo,真心觉得做的不错。

>

我不能100%的确定你的示例代码应该是做什么的,但是下边的摘要应该能够帮助你调用通讯录的功能,选择一个联系人,然后将你联系人的名字返回到你的app中。

这个过程有三步:

1) 许可

向你的应用程序的manifest中添加读取通讯录数据的许可

<uses-permission android:name="androidpermissionREAD_CONTACTS"/>

2) 调用Contact Picker

在你的activity中,创建一个Intent,用来请求系统查找一个能够执行一个从Contacts URI的项目中发出的PICK动作的activity,

Intent intent = new Intent(IntentACTION_PICK, ContactsContractContactsCONTENT_URI);

调用startActivityForResult在Intent中传递(和一个整数的请求代码,在这个例子中是PICK_CONTACT )。这将导致android启动一个已经被等级的activity,用来支持在PeopleCONTENT_URI上的ACTION_PICK ,然后当按下选择(或者取消)的时候返回到这个activity。

startActivityForResult(intent, PICK_CONTACT);

3) 仍然在你的activity中,重写onActivityResul方法来监听在你的第二个步骤中启动的activi'select a contact' activity的回调。

你应该检查反馈的请求代码是否匹配你的期望值,结果代码是否是 RESULT_OK。

通过在数据Intent参数中调用getData()你可以获得选择的联系人的URI。为了获得选择的联系人的名字你需要使用URI从返回的游标中创建一个新的查询和提取的参数。

@Override

public void onActivityResult(int reqCode, int resultCode, Intent data) {

superonActivityResult(reqCode, resultCode, data);

switch (reqCode) {

case (PICK_CONTACT) :

if (resultCode == ActivityRESULT_OK) {

Uri contactData = datagetData();

Cursor c = managedQuery(contactData, null, null, null, null);

if (cmoveToFirst()) {

String name = cgetString(cgetColumnIndex(ContactsContractContactsDISPLAY_NAME));

}

}

break;

}

}

//读取手机里面的联系人

public List<Map<String, String>> getContactInfo() {

//吧所有联系人填进去

List<Map<String, String>> list = new ArrayList<Map<String, String>>();

ContentResolver resolver = getContentResolver();

String uristring = "content://comandroidcontacts/raw_contacts";

String data = "content://comandroidcontacts/raw_contacts/data";

Uri uri = Uriparse(uristring);

Uri uridata = Uriparse(data);

Cursor cursor = resolverquery(uri, new String[]{"contact_id"}, null, null, null);

while (cursormoveToNext()) {

String contact_id = cursorgetString(0);

if (contact_id != null) {

//具体的某一个联系人

Map<String, String> map = new HashMap<String, String>();

Cursor datacursor = resolverquery(uridata, new String[]{"data1", "mimetype"}, "contact_id=", new String[]{contact_id}, null);

while (datacursormoveToNext()) {

String data1 = datacursorgetString(0);

String mimetype = datacursorgetString(1);

if ("vndandroidcursoritem/name"equals(mimetype)) {

//联系人的姓名

mapput("name", data1);

} else if ("vndandroidcursoritem/phone_v2"equals(mimetype)) {

//联系人的电话号码

mapput("phone", data1);

}

}

listadd(map);

datacursorclose();

}

}

return list;

}

以上就是关于安卓手机如何获取通讯录中的姓名和电话全部的内容,包括:安卓手机如何获取通讯录中的姓名和电话、如何调用android通讯录、如何调用android通讯录等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9335566.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存