2010-09-03 91 views
1

唉,我的電話簿中有大約500個聯繫人,並且由於某些原因,他們與雷鳥同步後,顯示名稱是隨機最後一個,第一個......第一個最後一個。所以我想我會把一個快速的小部件放在一起,只是重新做我的顯示名稱,以便第一。我使用的代碼如下,但我沒有得到最後/第一個值。遊標中的鍵存在(data1,data2),但值分別爲「1」和null。有任何想法嗎?訪問聯繫人數據

Cursor cursor = getContentResolver().query(ContactsContract.Data.CONTENT_URI, null, null, null, null); 

     while (cursor.moveToNext() != false) { 

     String id = cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.Contacts._ID)); 

     String fname = cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME)); 

     String lname = cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME)); 

     if (lname != null && lname.length() > 0) { 

       String sDName = lname + "," + fname; 

       ContentValues values = new ContentValues(); 

       values.put(ContactsContract.Contacts.DISPLAY_NAME, sDName); 

       getContentResolver().update(ContactsContract.Data.CONTENT_URI, values, ContactsContract.Contacts._ID+"=", new String[] {id}); 

     } 

     } 

回答

0

ContactsContract.Data包含了所有不同類型的等在共享的表像郵政地址,電話號碼,電子郵件,網站,信息歷年展覽。

你必須過濾掉包含您感興趣的信息的行

在查詢中,添加一個WHERE子句:

query(ContactsContract.Data.CONTENT_URI, Data.MIMETYPE + "=?", 
    new String[]{StructuredName.CONTENT_ITEM_TYPE}, null, null); 

查看文檔ContactsContract.Data

+0

外觀極好這把我帶到了我需要去的地方。 – user438431 2010-09-19 15:04:15