淺析Android手機衛(wèi)士讀取聯(lián)系人
推薦閱讀:
深入淺析Android手機衛(wèi)士保存密碼時進行md5加密
詳解Android 手機衛(wèi)士設(shè)置向?qū)ы撁?/a>
淺析Android手機衛(wèi)士關(guān)閉自動更新
獲取ContentResolver內(nèi)容解析器對象,通過getContentResolver()方法
調(diào)用ContentResolver對象的query()方法,得到raw_contacts表里面的數(shù)據(jù),得到Cursor對象
參數(shù):Uri對象,字段String數(shù)組
獲取Uri對象,通過Uri.parse(“content://com.android.contacts/raw_contacts”)方法,
while循環(huán)Cursor對象,條件是Cursor對象moveToNext()方法為真
調(diào)用Cursor對象的getString()方法,參數(shù)是索引
判斷不為null,查詢另一張表
調(diào)用ContentResolver對象的query()方法,得到data表里面的數(shù)據(jù),得到Cursor對象
參數(shù):Uri對象,字段String[]數(shù)組(data1,mimetype),條件String,條件值String[]數(shù)組(contact_id)
Uri對象是Uri.parse(“content://com.android.contacts/data”)
循環(huán)和上面一樣
姓名對應(yīng)的類型是vnd.android.cursor.item/name
電話對應(yīng)的類型是vnd.android.cursor.item/phone_v2
需要權(quán)限,android.permisssion.READ_CONTACTS
調(diào)用ListView對象的setAdapter()方法,分配數(shù)據(jù)到視圖,參數(shù)是Adapter對象
通過new SimpleAdapter()來獲得Adapter對象
參數(shù):上下文,數(shù)據(jù)集合,布局資源,字段String[]數(shù)組,控件int[] id數(shù)組
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; /** * 讀取手機聯(lián)系人 * @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>>(); //循環(huán)聯(lián)系人表 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>(); //查找數(shù)據(jù)表 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; } }
以上內(nèi)容是小編給大家介紹的android 手機衛(wèi)士讀取聯(lián)系人的相關(guān)介紹,希望對大家有所幫助!
相關(guān)文章
Android中asset文件夾與raw文件夾的區(qū)別深入解析
本篇文章是對Android中的asset文件夾與raw文件夾區(qū)別進行了詳細的分析介紹,需要的朋友參考下2013-06-06詳解Android App中的AsyncTask異步任務(wù)執(zhí)行方式
這篇文章主要介紹了Android App中的AsyncTask異步任務(wù)執(zhí)行方式,文中舉了一個打開網(wǎng)絡(luò)圖片的例子幫助大家直觀理解,需要的朋友可以參考下2016-04-04Android自定義view實現(xiàn)圓形、圓角和橢圓圖片(BitmapShader圖形渲染)
這篇文章運用實例代碼介紹如何在Android中自定義view,使用BitmapShader圖形渲染方法來實現(xiàn)圓形、圓角和橢圓的繪制,有需要的可以參考借鑒。2016-08-08Android開發(fā)之ProgressDialog進度對話框用法示例
這篇文章主要介紹了Android開發(fā)之ProgressDialog進度對話框用法,簡單介紹了ProgressDialog進度對話框常見函數(shù)功能,并結(jié)合實例形式分析了ProgressDialog組件創(chuàng)建及使用進度對話框相關(guān)操作技巧,需要的朋友可以參考下2019-03-03關(guān)于Android中點擊通知欄的通知啟動Activity問題解決
這篇文章主要介紹了關(guān)于解決Android中點擊通知欄的通知啟動Activity問題的相關(guān)資料,文中介紹的非常詳細,對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。2017-03-03Android?JetPack組件的支持庫Databinding詳解
DataBinding是Google發(fā)布的一個數(shù)據(jù)綁定框架,它能夠讓開發(fā)者減少重復(fù)性非常高的代碼,如findViewById這樣的操作。其核心優(yōu)勢是解決了數(shù)據(jù)分解映射到各個view的問題,在MVVM框架中,實現(xiàn)的View和Viewmode的雙向數(shù)據(jù)綁定2022-08-08