浅析Android手机卫士读取联系人
推荐阅读:
获取contentresolver内容解析器对象,通过getcontentresolver()方法
调用contentresolver对象的query()方法,得到raw_contacts表里面的数据,得到cursor对象
参数:uri对象,字段string数组
获取uri对象,通过uri.parse(“content://com.android.contacts/raw_contacts”)方法,
while循环cursor对象,条件是cursor对象movetonext()方法为真
调用cursor对象的getstring()方法,参数是索引
判断不为null,查询另一张表
调用contentresolver对象的query()方法,得到data表里面的数据,得到cursor对象
参数:uri对象,字段string[]数组(data1,mimetype),条件string,条件值string[]数组(contact_id)
uri对象是uri.parse(“content://com.android.contacts/data”)
循环和上面一样
姓名对应的类型是vnd.android.cursor.item/name
电话对应的类型是vnd.android.cursor.item/phone_v2
需要权限,android.permisssion.read_contacts
调用listview对象的setadapter()方法,分配数据到视图,参数是adapter对象
通过new simpleadapter()来获得adapter对象
参数:上下文,数据集合,布局资源,字段string[]数组,控件int[] id数组
package com.qingguow.mobilesafe.utils; import java.util.arraylist; import java.util.hashmap; import java.util.list; import java.util.map; import android.content.contentresolver; import android.content.context; import android.database.cursor; import android.net.uri; /** * 读取手机联系人 * @author taoshihan * */ public class phonecontactsutil { public static list<map<string,string>> getcontacts(context context){ contentresolver resolver=context.getcontentresolver(); uri uri=uri.parse("content://com.android.contacts/raw_contacts"); uri datauri=uri.parse("content://com.android.contacts/data"); list<map<string,string>> contacts=new arraylist<map<string,string>>(); //循环联系人表 cursor cursor=resolver.query(uri, new string[]{"contact_id"}, null, null, null); while(cursor.movetonext()){ string id=cursor.getstring(cursor.getcolumnindex("contact_id")); if(id!=null){ map<string,string> contact=new hashmap<string,string>(); //查找数据表 cursor datacursor=resolver.query(datauri, new string[]{"data1","mimetype"},"raw_contact_id=?", new string[]{id}, null); while(datacursor.movetonext()){ string data1=datacursor.getstring(datacursor.getcolumnindex("data1")); string mimetype=datacursor.getstring(datacursor.getcolumnindex("mimetype")); system.out.println("data1:"+data1+",mimetype:"+mimetype); if(mimetype.equals("vnd.android.cursor.item/name")){ contact.put("name", data1); }else if(mimetype.equals("vnd.android.cursor.item/phone_v2")){ contact.put("phone", data1); } } contacts.add(contact); datacursor.close(); } } cursor.close(); return contacts; } }
以上内容是小编给大家介绍的android 手机卫士读取联系人的相关介绍,希望对大家有所帮助!