我已经搜索了互联网和 SO,找不到合适的答案,因此发布以下内容。
我想将我手机中的联系人加载到我的应用程序中,以便我可以导入电话号码。我想做的事。
- “Stacy C”的名字有两个手机号码
- “Stacy Jacob”有一个手机号码
现在,当我列出联系人时,我想要三行名称和下面列出的号码。我可以导入联系人,但不知道如何检查联系人是否有多个与其姓名相反的号码。
它类似于 WhatsApp 应用程序。我正在使用易于加载的光标来列出联系人。
我已经搜索了互联网和 SO,找不到合适的答案,因此发布以下内容。
我想将我手机中的联系人加载到我的应用程序中,以便我可以导入电话号码。我想做的事。
现在,当我列出联系人时,我想要三行名称和下面列出的号码。我可以导入联系人,但不知道如何检查联系人是否有多个与其姓名相反的号码。
它类似于 WhatsApp 应用程序。我正在使用易于加载的光标来列出联系人。
您需要为所有数字查询另一个 uri。我给你一个例子..你可以看看
private static final String[] CONTACTS_PROJECTION = new String[] {
Contacts._ID,
Contacts.HAS_PHONE_NUMBER
};
private static final String[] PHONES_PROJECTION = new String[] {
Phone.TYPE,
Phone.NUMBER
};
private void readAllContact() {
Cursor mCursor = mResolver.query(Contacts.CONTENT_URI, CONTACTS_PROJECTION, null, null, null);
while (mCursor.moveToNext()) {
String id = mCursor.getString(mCursor.getColumnIndex(Contacts._ID));
// Query phone numbers for this contact.
if (Integer.parseInt(mCursor.getString(mCursor.getColumnIndex(Contacts.HAS_PHONE_NUMBER))) > 0) {
ArrayList<String> numbers = getPhoneNumbers(id);
} else {
Log.d(TAG, "No phones associated with this Contact");
}
}
}
private ArrayList<String> getPhoneNumbers(String id) {
ArrayList<String> result = new ArrayList<String>();
Cursor mCursorPhones = mResolver.query(Phone.CONTENT_URI,
PHONES_PROJECTION,
Phone.CONTACT_ID + " = ?",
new String[]{id},
null);
while (mCursorPhones.moveToNext()) {
//Read type of phone
//mCursorPhones.getString(mCursorPhones.getColumnIndex(Phone.TYPE));
//Read Phone
result.add(mCursorPhones.getString(mCursorPhones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)));
}
mCursorPhones.close();
return result;
}
为了显示尽可能多的数字行,您必须实现自己的逻辑。您可以根据数量创建条目。