在Android开发中,我经常会遇到需要获取手机通讯录联系人信息,Android手机的通讯录联系人全部都存在系统的数据库中,如果须要获得通讯里联系人的信息就须要访问系统的数据库,才能将信息获取出来。
下面直接贴出代码供大家参考:
程序文件java代码:
import javaioInputStream;
import javautilArrayList;
import androidappListActivity;
import androidcontentContentResolver;
import androidcontentContentUris;
import androidcontentContext;
import androidcontentIntent;
import androiddatabaseCursor;
import androidgraphicsBitmap;
import androidgraphicsBitmapFactory;
import androidnetUri;
import androidosBundle;
import androidproviderContactsContract;
import androidproviderContactsContractCommonDataKindsPhone;
import androidproviderContactsContractCommonDataKindsPhoto;
import androidtextTextUtils;
import androidviewLayoutInflater;
import androidviewView;
import androidviewViewGroup;
import androidwidgetAdapterView;
import androidwidgetBaseAdapter;
import androidwidgetImageView;
import androidwidgetListView;
import androidwidgetTextView;
import androidwidgetAdapterViewOnItemClickListener;
public class ContactsActivity extends ListActivity {
Context mContext = null;
/获取库Phon表字段/
private static final String[] PHONES_PROJECTION = new String[] {
PhoneDISPLAY_NAME, PhoneNUMBER, PhotoPHOTO_ID,PhoneCONTACT_ID };
/联系人显示名称/
private static final int PHONES_DISPLAY_NAME_INDEX = 0;
/电话号码/
private static final int PHONES_NUMBER_INDEX = 1;
/头像ID/
private static final int PHONES_PHOTO_ID_INDEX = 2;
/联系人的ID/
private static final int PHONES_CONTACT_ID_INDEX = 3;
/联系人名称/
private ArrayList<String> mContactsName = new ArrayList<String>();
/联系人头像/
private ArrayList<String> mContactsNumber = new ArrayList<String>();
/联系人头像/
private ArrayList<Bitmap> mContactsPhonto = new ArrayList<Bitmap>();
ListView mListView = null;
MyListAdapter myAdapter = null;
@Override
public void onCreate(Bundle savedInstanceState) {
mContext = this;
mListView = thisgetListView();
/得到手机通讯录联系人信息/
getPhoneContacts();
myAdapter = new MyListAdapter(this);
setListAdapter(myAdapter);
mListViewsetOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<> adapterView, View view,
int position, long id) {
//调用系统方法拨打电话
Intent dialIntent = new Intent(IntentACTION_CALL, Uri
parse("tel:" + mContactsNumberget(position)));
startActivity(dialIntent);
}
});
superonCreate(savedInstanceState);
}
/得到手机通讯录联系人信息/
private void getPhoneContacts() {
ContentResolver resolver = mContextgetContentResolver();
// 获取手机联系人
Cursor phoneCursor = resolverquery(PhoneCONTENT_URI,PHONES_PROJECTION, null, null, null);
if (phoneCursor != null) {
while (phoneCursormoveToNext()) {
//得到手机号码
String phoneNumber = phoneCursorgetString(PHONES_NUMBER_INDEX);
//当手机号码为空的或者为空字段 跳过当前循环
if (TextUtilsisEmpty(phoneNumber))
continue;
//得到联系人名称
String contactName = phoneCursorgetString(PHONES_DISPLAY_NAME_INDEX);
//得到联系人ID
Long contactid = phoneCursorgetLong(PHONES_CONTACT_ID_INDEX);
//得到联系人头像ID
Long photoid = phoneCursorgetLong(PHONES_PHOTO_ID_INDEX);
//得到联系人头像Bitamp
Bitmap contactPhoto = null;
//photoid 大于0 表示联系人有头像 如果没有给此人设置头像则给他一个默认的
if(photoid > 0 ) {
Uri uri =ContentUriswithAppendedId(ContactsContractContactsCONTENT_URI,contactid);
InputStream input = ContactsContractContactsopenContactPhotoInputStream(resolver, uri);
contactPhoto = BitmapFactorydecodeStream(input);
}else {
contactPhoto = BitmapFactorydecodeResource(getResources(), Rdrawablecontact_photo);
}
mContactsNameadd(contactName);
mContactsNumberadd(phoneNumber);
mContactsPhontoadd(contactPhoto);
}
phoneCursorclose();
}
}
/得到手机SIM卡联系人人信息/
private void getSIMContacts() {
ContentResolver resolver = mContextgetContentResolver();
// 获取Sims卡联系人
Uri uri = Uriparse("content://icc/adn");
Cursor phoneCursor = resolverquery(uri, PHONES_PROJECTION, null, null,
null);
if (phoneCursor != null) {
while (phoneCursormoveToNext()) {
// 得到手机号码
String phoneNumber = phoneCursorgetString(PHONES_NUMBER_INDEX);
// 当手机号码为空的或者为空字段 跳过当前循环
if (TextUtilsisEmpty(phoneNumber))
continue;
// 得到联系人名称
String contactName = phoneCursor
getString(PHONES_DISPLAY_NAME_INDEX);
//Sim卡中没有联系人头像
mContactsNameadd(contactName);
mContactsNumberadd(phoneNumber);
}
phoneCursorclose();
}
}
class MyListAdapter extends BaseAdapter {
public MyListAdapter(Context context) {
mContext = context;
}
public int getCount() {
//设置绘制数量
return mContactsNamesize();
}
@Override
public boolean areAllItemsEnabled() {
return false;
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
ImageView iamge = null;
TextView title = null;
TextView text = null;
if (convertView == null) {
convertView = LayoutInflaterfrom(mContext)inflate(
Rlayoutcolorlist, null);
iamge = (ImageView) convertViewfindViewById(Ridcolor_image);
title = (TextView) convertViewfindViewById(Ridcolor_title);
text = (TextView) convertViewfindViewById(Ridcolor_text);
}
//绘制联系人名称
titlesetText(mContactsNameget(position));
//绘制联系人号码
textsetText(mContactsNumberget(position));
//绘制联系人头像
iamgesetImageBitmap(mContactsPhontoget(position));
return convertView;
}
}
}
以上就是关于android开发怎样获取通讯录联系人信息全部的内容,包括:android开发怎样获取通讯录联系人信息、、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)