package com.roboo.like.google.async; import java.io.FileNotFoundException; import java.io.IOException; import java.util.LinkedList; import android.content.ContentResolver; import android.content.Context; import android.database.Cursor; import android.graphics.Bitmap; import android.net.Uri; import android.provider.ContactsContract.CommonDataKinds.Phone; import android.provider.ContactsContract.CommonDataKinds.Photo; import android.provider.MediaStore.Images.Media; import android.text.TextUtils; import com.roboo.like.google.models.ContacterItem; public class ContacterAsyncTaskLoader extends BaseAsyncTaskLoader<LinkedList<ContacterItem>> { private Context mContext; public ContacterAsyncTaskLoader(Context context) { super(context); mContext = context; } @Override public LinkedList<ContacterItem> loadInBackground() { LinkedList<ContacterItem> data = null; ContentResolver resolver = mContext.getContentResolver(); String[] strings = new String[] { Phone.DISPLAY_NAME, Phone.NUMBER, Photo.PHOTO_URI }; Cursor phoneCursor = resolver.query(Phone.CONTENT_URI, strings, null, null, null);// 获取手机联系人 if (phoneCursor != null && phoneCursor.getCount() > 0) { data = new LinkedList<ContacterItem>(); while (phoneCursor.moveToNext()) { ContacterItem item = new ContacterItem(); String contactName = phoneCursor.getString(0); // 得到联系人名称 String phoneNumber = phoneCursor.getString(1);// 得到手机号码 String contactIcon = phoneCursor.getString(2);// 得到联系人头像Uri // 当手机号码为空的或者为空字段 跳过当前循环 if (TextUtils.isEmpty(phoneNumber)) { continue; } item.name = contactName; item.phone = phoneNumber; item.icon = contactIcon; if (!TextUtils.isEmpty(item.icon)) { try { Bitmap bitmap = Media.getBitmap(mContext.getContentResolver(), Uri.parse(item.icon)); if (null != bitmap) { item.bitmap = bitmap; } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } if (!data.contains(item)) { data.add(item); } } phoneCursor.close(); } return data; } }