1,了解android 手机联系人,在那个数据库里面
联系人的数据库
需要了解的字段
data
raw_contacts
mimetypes
【1】创建一个javabean 生成set get 方法
private String id;
private String name;
private String email;
private String phone;
【2】创建一个查询联系人的工具类: 返回的是一个(ArrayList字段)
import java.util.ArrayList;
import java.util.List;
import android.content.Context;
import android.database.Cursor;
import android.net.Uri;
public class QueryContactUtils {
// 查询联系人的业务方法
public static List<Contact> queryContact(Context context) {
// [0]创建集合
List<Contact> contactLists = new ArrayList<Contact>();
// [1]由于联系人的数据库系统已经通过内容提供者暴露出来 所以我们可以直接通过内容解析者操作数据库
Uri uri = Uri.parse("content://com.android.contacts/raw_contacts");
Uri datUri = Uri.parse("content://com.android.contacts/data");
Cursor cursor = context.getContentResolver().query(uri,
new String[] { "contact_id" }, null, null, null);
while (cursor.moveToNext()) {
String contact_id = cursor.getString(0);
if (contact_id != null) {
Contact contact = new Contact();
System.out.println("contact_id:" + contact_id);
contact.setId(contact_id);
// [2]在查询data表 的data1列和mimetype_id列
Cursor dataCursor = context.getContentResolver().query(datUri,
new String[] { "data1", "mimetype" },
"raw_contact_id=?", new String[] { contact_id }, null);
while (dataCursor.moveToNext()) {
String data = dataCursor.getString(0);
String mimetype = dataCursor.getString(1);
if ("vnd.android.cursor.item/email_v2".equals(mimetype)) {
System.out.println("邮箱:" + data);
contact.setEmail(data);
} else if ("vnd.android.cursor.item/phone_v2"
.equals(mimetype)) {
System.out.println("电话:" + data);
contact.setPhone(data);
} else if ("vnd.android.cursor.item/name".equals(mimetype)) {
System.out.println("姓名:" + data);
contact.setName(data);
}
}
// 把bean对象加入到集合
contactLists.add(contact);
}
}
return contactLists;
}
}
【3】MainActivity 里面查询
List<Contact> queryContacts = QueryContactUtils.queryContact(getApplicationContext());
for (Contact contact : queryContacts) {
System.out.println("contact::::;"+contact);
}
【4】添加权限:
<uses-permission android:name="android.permission.READ_CONTACTS"/>