【发布时间】:2017-08-09 08:02:19
【问题描述】:
private void displayAllContactsByType(String accountName) {
Cursor rawCursor = null;
try {
rawCursor = mCProviderClient.query(
ContactsContract.RawContacts.CONTENT_URI,
null,
ContactsContract.RawContacts.ACCOUNT_NAME + "= ?",
new String[]{accountName},
null);
} catch (RemoteException e) {
e.printStackTrace();
}
int contactIdColumn = rawCursor.getColumnIndex(ContactsContract.RawContacts.CONTACT_ID);
Utils.Log("Raw Size", " " + rawCursor.getCount());
while (rawCursor.moveToNext()) {
String contactId = rawCursor.getString(contactIdColumn);
// Utils.Log("contactId ",contactId);
storeContactDetails(contactId);
}
if (contactList != null) {
contactListener = (ContactListener) context;
contactListener.updateView(contactList);
}
}
我正在获取原始联系人包含的所有帐户名称。我想让所有联系人都属于特定的帐户名,但我得到的联系人 ID 为空。如何获取特定帐户名称的所有联系人 ID,然后获取该联系人 ID 的相应数据?
【问题讨论】:
-
你的
contactList在哪里初始化? -
它已正确初始化。我的意思是全局,我在这里得到 null String contactId = rawCursor.getString(contactIdColumn);
-
我很少使用游标,所以我可能错了,但这不是因为你在没有检查下一个东西的情况下移动下一步吗?尝试
while (rawCursor.isAfterLast() == false)而不是while (rawCursor.moveToNext())建议here -
@Eselfar 不,moveToNext 将返回 true,如果它能够移动到下一个项目,while 循环就可以了