今天早上看到一个通讯录的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通讯录等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)