2012-06-15 37 views
0

我有一個應用程序,我想顯示的聯繫人按受歡迎程度排序,例如調用該聯繫人的次數。另一種選擇:按照任何人的照片排序。我希望在沒有用戶選擇的情況下自動完成!我將不勝感激任何幫助!即使在部分答案!得到的聯繫人按熱門程度排序

謝謝!

+3

請提供一些自己的代碼,以便我們提供幫助。 – mariomario

+0

android聯繫人數據庫有一個列作爲times_contacted,它保存有關多少個電話已與特定聯繫人進行了.. – Anu

回答

2

使用此查詢

ContentResolver cr = getContentResolver(); 
    Cursor cur2 = cr.query(ContactsContract.Contacts.CONTENT_URI, 
      null, null, null, "times_contacted desc"); 
    cur2.moveToFirst(); 

    int name=cur2.getColumnIndex("display_name"); 
    for(int i=0;i<cur2.getCount();i++){ 
    Log.v("name",""+cur2.getString(name)); 
    Log.v("times",""+cur2.getString(0)); 
    cur2.moveToNext(); 
    } 
+0

謝謝 它真的幫了大忙! 我如何根據誰有圖片來排序 - 即:放在頂部,那些有圖片的人 – user1458530

0

如果聯繫人存儲在您需要添加額外的列,你會把在次接觸被稱爲號碼的數據庫。

當用戶撥打電話時,您需要添加一些代碼以將「聯繫人被呼叫次數」中存儲的值遞增+1。

當您列出聯繫人時,只需按「聯繫人被呼叫的次數」列對其進行排序。

0

我們DONOT有任何這樣的列,檢查接觸是否有照片或不... BT就可以獲取聯繫人照片EACT接觸,如果它exsists然後將其放置在頂部,否則不..

使用本代碼來獲取照片:(只傳遞內容分解器和每個聯繫人的ID)

public static Bitmap loadContactPhoto(ContentResolver cr, long id) { 
    Uri uri = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, id); 
    InputStream input = ContactsContract.Contacts.openContactPhotoInputStream(cr, uri); 
    // InputStream input = ContactsContract.Contacts.Photo 
    if (input == null) { 
     return null; 
    } 
    return BitmapFactory.decodeStream(input);