淺析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)和上面一樣
姓名對應的類型是vnd.android.cursor.item/name
電話對應的類型是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)文章
Intent傳遞對象之Serializable和Parcelable的區(qū)別
Intent在不同的組件中傳遞對象數(shù)據(jù)的應用非常普遍,大家都知道在intent傳遞對象的方法有兩種:1、實現(xiàn)Serializable接口、2、實現(xiàn)Parcelable接口,接下來通過本文給大家介紹Intent傳遞對象之Serializable和Parcelable的區(qū)別,感興趣的朋友一起學習吧2016-01-01
Android ListView彈性效果的實現(xiàn)方法
這篇文章主要為大家詳細介紹了Android ListView彈性效果的實現(xiàn)方法,感興趣的小伙伴們可以參考一下2016-05-05
詳解android 中animation-list 動畫的應用
本篇文章主要介紹了詳解android 中animation-list 動畫的應用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-12-12
如何調(diào)用百度地圖API實現(xiàn)手機自動定位
api手機自動定位,通過聲明地址解析器,獲取當前坐標,如何調(diào)用百度地圖api實現(xiàn)手機自動定位呢?接下來,一起跟小編來學習吧。2015-09-09
Android中使用socket使底層和framework通信的實現(xiàn)方法
native和framework的通信是通過jni,但是這一般只是framework調(diào)用native,native如果有消息要怎樣通知上層 呢?android中GSP模塊提供一種解決思路,但是實現(xiàn)有些復雜,這里介紹一種使用socket通信的方法可以使native和framework自由通信,感興趣的朋友一起看看吧2016-11-11

