1
我想從手機的聯繫人列表中隨機接觸,但沒有明顯減慢的手機。這意味着我不能只抓住所有的聯繫人並將它們粘貼到一個數組中,並從該數組中隨機選取一個。我希望能夠獲得一個隨機的聯繫人,而不必首先獲得所有的聯繫人。 這是可能的,如果是這樣,我該如何去做呢?Android開隨機聯繫
我想從手機的聯繫人列表中隨機接觸,但沒有明顯減慢的手機。這意味着我不能只抓住所有的聯繫人並將它們粘貼到一個數組中,並從該數組中隨機選取一個。我希望能夠獲得一個隨機的聯繫人,而不必首先獲得所有的聯繫人。 這是可能的,如果是這樣,我該如何去做呢?Android開隨機聯繫
更新使用非棄用代碼。基於這個答案查詢:How to read contacts on Android 2.0
Cursor managedCursor = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI,null, null, null, null);
然後,它只是一個讓光標的大小事:
int size = managedCursor.getCount();
得到一個隨機,讀它,並檢查是否有電話號碼。如果沒有,請選擇另一個:
boolean found = false;
Random rnd = new Random();
while(!found) {
int index = rnd.nextInt(size);
managedCursor.moveToPosition(index);
String name = managedCursor.getString(people.getColumnIndex(PhoneLookup.DISPLAY_NAME));
found = Boolean.parseBoolean(managedCursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER)));
if (found) {
Cursor phones = getContentResolver().query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ contactId, null, null);
while (phones.moveToNext()) {
String phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
Log.d("Phone found:", phoneNumber);
}
phones.close();
}
}
我不明白你怎麼可以選擇一個隨機的否則。這不應該減慢電話,除非它是一個非常大的聯繫人列表。
現在它會檢查電話號碼的存在,如果找到讀取所有的人。如果不是,則選擇另一個條目。
這可能會工作,但Contact.People是貶值的,我寧可不使用折舊代碼。 – Elec0 2011-04-22 21:26:50
@ Elec0非常真實。查看更新的回覆。主要部分(選擇一個隨機的聯繫人而沒有實際閱讀全部)仍然有效。 – Aleadam 2011-04-22 21:45:02
非常真實,謝謝。 :) – Elec0 2011-04-22 23:12:00