public static ArrayList<DetailItem> getContactDetailsById(Context context, long id) {
Cursor cursor = null;
ArrayList<DetailItem> details = new ArrayList<DetailItem>();
try {
Uri uri = Uri.withAppendedPath(Contacts.CONTENT_URI, String.valueOf(id) + "/data");
cursor = context.getContentResolver().query(uri, null, null, null, null);
if (cursor != null) {
final int columnIndexId = cursor.getColumnIndex(Data._ID);
final int columnIndexMimeType = cursor.getColumnIndex(Data.MIMETYPE);
final int columnIndexData1 = cursor.getColumnIndex(Data.DATA1);
final int columnIndexData2 = cursor.getColumnIndex(Data.DATA2);
final int columnIndexData9 = cursor.getColumnIndex(Data.DATA9);
final int columnIndexData4 = cursor.getColumnIndex(Data.DATA4);
final int columnIndexData5 = cursor.getColumnIndex(Data.DATA5);
final int columnIndexData3 = cursor.getColumnIndex(Data.DATA3);
final int columnIndexData14 = cursor.getColumnIndex(Data.DATA14);
cursor.moveToPosition(-1);
while (cursor.moveToNext()) {
long dataId = cursor.getLong(columnIndexId);
String mimeType = cursor.getString(columnIndexMimeType);
if (TextUtils.equals(mimeType, Phone.CONTENT_ITEM_TYPE)) {
String number = cursor.getString(columnIndexData1);
int type = cursor.getInt(columnIndexData2);
DetailItem item = new DetailItem(DetailItem.TYPE_PHONENUMBER, dataId);
item.setStrData1(number);
item.setIntData1(type);
details.add(item);
} else if (TextUtils.equals(mimeType, Email.CONTENT_ITEM_TYPE)) {
String address = cursor.getString(columnIndexData1);
int type = cursor.getInt(columnIndexData2);
DetailItem item = new DetailItem(DetailItem.TYPE_EMAIL, dataId);
item.setStrData1(address);
item.setIntData1(type);
details.add(item);
} else if (TextUtils.equals(mimeType, StructuredName.CONTENT_ITEM_TYPE)) {
String name = cursor.getString(columnIndexData1);
String pinYinName = cursor.getString(columnIndexData9);
DetailItem item = new DetailItem(DetailItem.TYPE_NAME, dataId);
item.setStrData1(name);
item.setStrData2(pinYinName);
details.add(item);
} else if (TextUtils.equals(mimeType, Im.CONTENT_ITEM_TYPE)) {
String imNumber = cursor.getString(columnIndexData1);
int protocol = cursor.getInt(columnIndexData5);
DetailItem item = new DetailItem(DetailItem.TYPE_IM, dataId);
item.setStrData1(imNumber);
item.setIntData1(protocol);
details.add(item);
} else if (TextUtils.equals(mimeType, Nickname.CONTENT_ITEM_TYPE)) {
String nickName = cursor.getString(columnIndexData1);
int type = cursor.getInt(columnIndexData2);
DetailItem item = new DetailItem(DetailItem.TYPE_NICKNAME, dataId);
item.setStrData1(nickName);
item.setIntData1(type);
details.add(item);
} else if (TextUtils.equals(mimeType, Website.CONTENT_ITEM_TYPE)) {
String website = cursor.getString(columnIndexData1);
int type = cursor.getInt(columnIndexData2);
DetailItem item = new DetailItem(DetailItem.TYPE_WEBSITE, dataId);
item.setStrData1(website);
item.setIntData1(type);
details.add(item);
} else if (TextUtils.equals(mimeType, StructuredPostal.CONTENT_ITEM_TYPE)) {
String address = cursor.getString(columnIndexData1);
int type = cursor.getInt(columnIndexData2);
DetailItem item = new DetailItem(DetailItem.TYPE_ADDRESS, dataId);
item.setStrData1(address);
item.setIntData1(type);
details.add(item);
} else if (TextUtils.equals(mimeType, Note.CONTENT_ITEM_TYPE)) {
String note = cursor.getString(columnIndexData1);
DetailItem item = new DetailItem(DetailItem.TYPE_NOTE, dataId);
item.setStrData1(note);
details.add(item);
} else if (TextUtils.equals(mimeType, Organization.CONTENT_ITEM_TYPE)) {
String organization = cursor.getString(columnIndexData1);
String jobName = cursor.getString(columnIndexData4);
DetailItem item = new DetailItem(DetailItem.TYPE_ORGANIZATION, dataId);
item.setStrData1(organization);
item.setStrData2(jobName);
details.add(item);
} else if (TextUtils.equals(mimeType, Event.CONTENT_ITEM_TYPE)) {
String event = cursor.getString(columnIndexData1);
int type = cursor.getInt(columnIndexData2);
DetailItem item = new DetailItem(DetailItem.TYPE_EVENT, dataId);
item.setStrData1(event);
item.setIntData1(type);
details.add(item);
} else if (TextUtils.equals(mimeType, GroupMembership.CONTENT_ITEM_TYPE)) {
long groupRowId = cursor.getLong(columnIndexData1);
DetailItem item = new DetailItem(DetailItem.TYPE_GROUP, dataId);
item.setLongData1(groupRowId);
details.add(item);
} else if (TextUtils.equals(mimeType, Identity.CONTENT_ITEM_TYPE)) {
String identity = cursor.getString(columnIndexData1);
String namespace = cursor.getString(columnIndexData2);
DetailItem item = new DetailItem(DetailItem.TYPE_IDENTITY, dataId);
item.setStrData1(identity);
item.setStrData2(namespace);
details.add(item);
} else if (TextUtils.equals(mimeType, Photo.CONTENT_ITEM_TYPE)) {
long photoId = cursor.getLong(columnIndexData14);
DetailItem item = new DetailItem(DetailItem.TYPE_PHOTO, dataId);
item.setLongData1(photoId);
details.add(item);
} else if (TextUtils.equals(mimeType, SipAddress.CONTENT_ITEM_TYPE)) {
String sipAddress = cursor.getString(columnIndexData1);
int type = cursor.getInt(columnIndexData2);
String label = cursor.getString(columnIndexData3);
DetailItem item = new DetailItem(DetailItem.TYPE_SIPADDRESS, dataId);
item.setStrData1(sipAddress);
item.setStrData2(label);
item.setIntData1(type);
details.add(item);
}
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (cursor != null) {
cursor.close();
}
}
if (details.size() > 0) {
Collections.sort(details, new Comparator<DetailItem>() {
@Override
public int compare(DetailItem lhs, DetailItem rhs) {
return lhs.getType() - rhs.getType();
}
});
return details;
}
return null;
}
android中读取联系人的所有信息
最新推荐文章于 2024-05-09 02:16:26 发布