失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Android 使用ContentProvider(内容提供者)查询手机联系

Android 使用ContentProvider(内容提供者)查询手机联系

时间:2023-04-12 15:16:23

相关推荐

Android 使用ContentProvider(内容提供者)查询手机联系

在开发应用程序过程中有时候会关联到用户的手机联系人,在Android的为开发者提供了ContentProvider内容提供者来获取手机的联系人,首先我在模拟器中保存了两个联系人如下所示:

lisi:电话:1201zhangsan:电话:1110

通过Eclipse导出电话本的数据库使用SQLite EXpert打开得到数据库,可以看到里面有很多表格。

在这些表格中保存联系认的表格是raw_contact和data表格,分别打开这两个表格,可以看到,保存在手机里面的两个联系人

所以只需要在程序中查找这两张表就可以获得联系人的姓名了电话。

在程序中:

1、首先得到ContentProvider提供的内容提供器

2、获得需要查询的表的URI

// 1 得到一个内容解析器ContentResolver resolver = getContentResolver();// 2 获得要查询的表的uri// 只需要这两张表Uri uri = Uri.parse("content://com.android.contacts/raw_contacts");Uri dataUri = Uri.parse("content://com.android.contacts/data

查询raw_contacts表格中联系人的contact_id

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

然后再通过得到的contact_id查询data表格中的data1和mimetype的信息,

<span style="white-space:pre"></span>while (cursor.moveToNext()) {String contact_id = cursor.getString(0);if (contact_id != null) {Cursor dataCursor = resolver.query(dataUri, new String[]{"data1","mimetype"}, "contact_id=?", new String[]{contact_id}, null);while(dataCursor.moveToNext()){String data1 = dataCursor.getString(0);String mimetype = dataCursor.getString(1);System.out.println("data1----" + data1 + "---mimetype---" + mimetype);

打印出得到的data1和mimetype信息,

data1----1110---mimetype---vnd.android.cursor.item/phone_v2data1----Zhangsan---mimetype---vnd.android.cursor.item/namedata1----1 201---mimetype---vnd.android.cursor.item/phone_v2data1----Lisi---mimetype---vnd.android.cursor.item/name

通过上面的信息可知。当mimetype为vnd.android.cursor.item/phone_v2时,data1的值就是电话号码。当mimetype为vnd.android.cursor.item/name时,data1的值就是联系人姓名。并存在map中。

<span style="white-space:pre"></span>if ("vnd.android.cursor.item/phone_v2".equals(mimetype)) {map.put("phone", data1);}else if ("vnd.android.cursor.item/name".equals(mimetype)) {map.put("name", data1);}

最后将数据显示在Listview中

List<Map<String, String>> data = getSystemContact();SimpleAdapter adapter = new SimpleAdapter(this, data, R.layout.item_contact, new String[]{"name","phone"}, new int[]{R.id.name,R.id.phone});select_contact.setAdapter(adapter);

最后的结果如下图:源代码下载:查询联系人

如果觉得《Android 使用ContentProvider(内容提供者)查询手机联系》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。