Android开发之获取联系人信息
2014-04-11 16:07
375 查看
对于手机来说,联系人分两类:sim卡联系人和手机内置联系人。一般来说,sim卡联系人不带有更多信息(如通讯地址、头像等),但是手机内置联系人可以获取更多信息。这些信息基本上都会绑定手机账户,方便手机用户找回丢失的数据。下面是获取联系人信息的办法:
java文件代码(部分):
/** 获取库Phon表字段 **/
private static
final String[] PHONES_PROJECTION =
new String[] {
Phone.DISPLAY_NAME, Phone.NUMBER, Photo.PHOTO_ID, Phone.CONTACT_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>();
public ArrayList<String> getmContactsName() {
return
mContactsName;
}
public void setmContactsName(ArrayList<String> mContactsName) {
this.mContactsName = mContactsName;
}
public ArrayList<String> getmContactsNumber() {
return
mContactsNumber;
}
public void setmContactsNumber(ArrayList<String> mContactsNumber) {
this.mContactsNumber = mContactsNumber;
}
/** 联系人头像 **/
private ArrayList<String>
mContactsNumber = new ArrayList<String>();
/** 联系人头像 **/
private ArrayList<Bitmap>
mContactsPhonto = new ArrayList<Bitmap>();
/** 得到手机通讯录联系人信息 **/
public void getPhoneContacts() {
ContentResolver resolver =
context.getContentResolver();
// 获取手机联系人
Cursor phoneCursor = resolver.query(Phone.CONTENT_URI,
PHONES_PROJECTION,
null, null,
null);
if (phoneCursor !=
null) {
while (phoneCursor.moveToNext()) {
// 得到手机号码
String phoneNumber = phoneCursor.getString(PHONES_NUMBER_INDEX);
// 当手机号码为空的或者为空字段 跳过当前循环
if (TextUtils.isEmpty(phoneNumber))
continue;
// 得到联系人名称
String contactName = phoneCursor
.getString(PHONES_DISPLAY_NAME_INDEX);
// // 得到联系人ID
// Long
contactid =
// phoneCursor.getLong(PHONES_CONTACT_ID_INDEX);
//
// // 得到联系人头像ID
// Long
photoid = phoneCursor.getLong(PHONES_PHOTO_ID_INDEX);
//
// // 得到联系人头像Bitamp
// Bitmap contactPhoto = null;
//
photoid 大于0 表示联系人有头像 如果没有给此人设置头像则给他一个默认的
// if (photoid > 0) {
//
Uri uri = ContentUris.withAppendedId(
// ContactsContract.Contacts.CONTENT_URI,
contactid);
// InputStream input = ContactsContract.Contacts
// .openContactPhotoInputStream(resolver,
uri);
// contactPhoto = BitmapFactory.decodeStream(input);
// } else {
// contactPhoto = BitmapFactory.decodeResource(
// m.getResources(), R.drawable.contact_photo);
// }
mContactsName.add(contactName);
mContactsNumber.add(phoneNumber);
}
phoneCursor.close();
}
}
/** 得到手机SIM卡联系人人信息 **/
public void getSIMContacts() {
ContentResolver resolver =
context.getContentResolver();
// 获取Sims卡联系人
Uri uri = Uri.parse("content://icc/adn");
Cursor phoneCursor = resolver.query(uri,
PHONES_PROJECTION, null, null,
null);
if (phoneCursor !=
null) {
while (phoneCursor.moveToNext()) {
// 得到手机号码
String phoneNumber = phoneCursor.getString(PHONES_NUMBER_INDEX);
// 当手机号码为空的或者为空字段 跳过当前循环
if (TextUtils.isEmpty(phoneNumber))
continue;
// 得到联系人名称
String contactName = phoneCursor
.getString(PHONES_DISPLAY_NAME_INDEX);
//
Sim卡中没有联系人头像
mContactsName.add(contactName);
mContactsNumber.add(phoneNumber);
}
phoneCursor.close();
}
}
需要在MainFest.xml文件中申请的权限:
<uses-permission
android:name="android.permission.READ_CONTACTS"
/> <!-- 读取联系人所需要的权限 -->
大功告成!
个人辛勤劳动成果,如有转载,请注明出处,谢谢!
java文件代码(部分):
/** 获取库Phon表字段 **/
private static
final String[] PHONES_PROJECTION =
new String[] {
Phone.DISPLAY_NAME, Phone.NUMBER, Photo.PHOTO_ID, Phone.CONTACT_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>();
public ArrayList<String> getmContactsName() {
return
mContactsName;
}
public void setmContactsName(ArrayList<String> mContactsName) {
this.mContactsName = mContactsName;
}
public ArrayList<String> getmContactsNumber() {
return
mContactsNumber;
}
public void setmContactsNumber(ArrayList<String> mContactsNumber) {
this.mContactsNumber = mContactsNumber;
}
/** 联系人头像 **/
private ArrayList<String>
mContactsNumber = new ArrayList<String>();
/** 联系人头像 **/
private ArrayList<Bitmap>
mContactsPhonto = new ArrayList<Bitmap>();
/** 得到手机通讯录联系人信息 **/
public void getPhoneContacts() {
ContentResolver resolver =
context.getContentResolver();
// 获取手机联系人
Cursor phoneCursor = resolver.query(Phone.CONTENT_URI,
PHONES_PROJECTION,
null, null,
null);
if (phoneCursor !=
null) {
while (phoneCursor.moveToNext()) {
// 得到手机号码
String phoneNumber = phoneCursor.getString(PHONES_NUMBER_INDEX);
// 当手机号码为空的或者为空字段 跳过当前循环
if (TextUtils.isEmpty(phoneNumber))
continue;
// 得到联系人名称
String contactName = phoneCursor
.getString(PHONES_DISPLAY_NAME_INDEX);
// // 得到联系人ID
// Long
contactid =
// phoneCursor.getLong(PHONES_CONTACT_ID_INDEX);
//
// // 得到联系人头像ID
// Long
photoid = phoneCursor.getLong(PHONES_PHOTO_ID_INDEX);
//
// // 得到联系人头像Bitamp
// Bitmap contactPhoto = null;
//
photoid 大于0 表示联系人有头像 如果没有给此人设置头像则给他一个默认的
// if (photoid > 0) {
//
Uri uri = ContentUris.withAppendedId(
// ContactsContract.Contacts.CONTENT_URI,
contactid);
// InputStream input = ContactsContract.Contacts
// .openContactPhotoInputStream(resolver,
uri);
// contactPhoto = BitmapFactory.decodeStream(input);
// } else {
// contactPhoto = BitmapFactory.decodeResource(
// m.getResources(), R.drawable.contact_photo);
// }
mContactsName.add(contactName);
mContactsNumber.add(phoneNumber);
}
phoneCursor.close();
}
}
/** 得到手机SIM卡联系人人信息 **/
public void getSIMContacts() {
ContentResolver resolver =
context.getContentResolver();
// 获取Sims卡联系人
Uri uri = Uri.parse("content://icc/adn");
Cursor phoneCursor = resolver.query(uri,
PHONES_PROJECTION, null, null,
null);
if (phoneCursor !=
null) {
while (phoneCursor.moveToNext()) {
// 得到手机号码
String phoneNumber = phoneCursor.getString(PHONES_NUMBER_INDEX);
// 当手机号码为空的或者为空字段 跳过当前循环
if (TextUtils.isEmpty(phoneNumber))
continue;
// 得到联系人名称
String contactName = phoneCursor
.getString(PHONES_DISPLAY_NAME_INDEX);
//
Sim卡中没有联系人头像
mContactsName.add(contactName);
mContactsNumber.add(phoneNumber);
}
phoneCursor.close();
}
}
需要在MainFest.xml文件中申请的权限:
<uses-permission
android:name="android.permission.READ_CONTACTS"
/> <!-- 读取联系人所需要的权限 -->
大功告成!
个人辛勤劳动成果,如有转载,请注明出处,谢谢!
相关文章推荐
- Android软件开发之获取通讯录联系人信息
- Android软件开发之获取通讯录联系人信息(二十九)
- Android软件开发之获取通讯录联系人信息
- (转)Android软件开发之获取通讯录联系人信息(二十九)
- Android软件开发之获取通讯录联系人信息
- Android软件开发之获取通讯录联系人信息
- Android开发获取联系人信息&根据姓名查找电话%根据电话查找姓名
- Android软件开发之获取通讯录联系人信息(二十九)
- Android软件开发之获取通讯录联系人信息 + android联系人信息的存储结构 + Android联系人读取操作笔记
- Android软件开发之获取通讯录联系人信息 + android联系人信息的存储结构 + Android联系人读取操作笔记
- Android软件开发之获取通讯录联系人信息(二十九)
- Android软件开发之获取通讯录联系人信息
- Android软件开发获取通讯录联系人信息
- Android软件开发之获取通讯录联系人信息 + android联系人信息的存储结构 + Android联系人读取操作笔记
- Android软件开发之获取通讯录联系人信息(二十九)
- Android软件开发之获取通讯录联系人信息 + android联系人信息的存储结构 + Android联系人读取操作笔记
- Android软件开发之获取通讯录联系人信息(二十九)
- Android软件开发之获取通讯录联系人信息 + android联系人信息的存储结构 + Android联系人读取操作笔记
- Android软件开发之获取通讯录联系人信息(二十九)
- Android软件开发之获取通讯录联系人信息(二十九)