2011-11-23 32 views
2

在我的應用程序中,我想出了一個必須將聯繫人添加到收藏夾列表的東西。我用這段代碼更新了聯繫人表的星號列,但都是徒勞的。據我所知,我通過null內容值在我的查詢,但我無法找出可能的更正。如何在android中更新sql lite數據庫中的聯繫人?

try{ 
     ContentResolver cr = getContentResolver(); 

     String[] projection={ContactsContract.Contacts.STARRED}; 
     Cursor cur = cr.query(CallLog.Calls.CONTENT_URI,projection, null, null, null); 

     cur.moveToPosition(Integer.parseInt(idholder)); //idholder holds unique row id 
     cr.update(ContactsContract.Contacts.CONTENT_URI, null, Contacts.STARRED+"="+1, null); 
} 
catch(SQLiteException sqle){ 
     sqle.printStackTrace(); 
} 

回答

0

ContactsContract.ContactOptionsColumns你有一個叫STARRED列,它是布爾值。所以你所要做的就是update所選聯繫人

+0

請問你可以給我看一個代碼片段,如果我有一個行唯一的ID,我必須更新該行中的每個相應的列或只是星號列。 –

0

我知道爲時已晚,無法給出答案。但是如果找到答案的人可以使用這個。

private int updateContact(int val,String lookupKey) { 
    // val = 0/1 
    // you can also use _ID instead of lookupKey 
    try { 
     ContentResolver cr = getContentResolver(); 
     ContentValues values = new ContentValues(); 
     values.put(ContactsContract.Contacts.STARRED, val); 
     return cr.update(ContactsContract.Contacts.CONTENT_URI, values, 
       ContactsContract.CommonDataKinds.Phone.LOOKUP_KEY+ " = ?", 
       new String[] {lookupKey}); 
    } catch (Exception e) { 
     Log.e("TAG", e.toString()); 
    } 
    return 0; 
} 
相關問題