日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

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

發布時間:2024/10/8 Android 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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_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_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(内容提供者)查询手机联系的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。