Android 使用ContentProvider(内容提供者)查询手机联系
生活随笔
收集整理的這篇文章主要介紹了
Android 使用ContentProvider(内容提供者)查询手机联系
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
? ? ?在開發應用程序過程中有時候會關聯到用戶的手機聯系人,在Android的為開發者提供了ContentProvider內容提供者來獲取手機的聯系人,首先我在模擬器中保存了兩個聯系人如下所示:
lisi:電話:1201 zhangsan:電話: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_idCursor 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_v2 data1----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(内容提供者)查询手机联系的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 魅族18系列什么时候上市发布 Flyme
- 下一篇: 系统u盘怎么还原u盘启动盘 系统U盘如何