2012-02-15 106 views
1

我想知道是否有一個屬性在Android聯繫人聲明聯繫人是否已被修改。如何獲取聯繫人的版本或修改時間?

我讀到可以通過字段ContactsContract.Contacts.Entity.VERSION讀取聯繫人的版本,但我無法檢索其值。我總是得到一個IllegalArgumentException。

是否有人知道如何獲取聯繫人的版本,或者如果有其他方法可以查找自上次掃描地址簿以來是否修改了聯繫人?

回答

3

繼承人的代碼,我沒有測試過,因爲我忙於工作。

public void getVersion() { 
    //specify which fields of RawContacts table to be retrieved. 
    String[] projection = new String[] {RawContacts.VERSION}; 

    //query the RawContacts.CONTENT_URI 
    Cursor cur = mContext.getContentResolver().query(RawContacts.CONTENT_URI, projection,null,null,null); 

    while(cur.moveToNext()){ 
    String version = cur.getString(cur.getColumnIndex(RawContacts.VERSION));  
    Log.i("VersionRetriever", version); 
    } 

    //Always remember to close the cursor. Otherwise it leads to side-effects. 
    cur.close(); 

}

+0

謝謝,我編輯了您的代碼,執行了RawContacts版本的總和。 – Xabaras 2012-11-26 13:46:41

+0

如果你可以在這裏添加你的代碼,我會非常喜歡,所以它很容易讓人們理解並減少錯誤(如果有的話)。 – JaydeepW 2014-05-26 08:56:39

+0

@jaydeepw ...我在尋找更新時間的聯繫,迫使我看到這篇文章,我得到了所有帳戶的版本。當我嘗試更改任何聯繫人中的任何信息時,版本號確實不會更改,所以我的問題是如何從VERSION獲取修改時間? – Saty 2014-09-26 06:46:37

0

嘗試RawContacts.CONTACT_STATUS_TIMESTAMP代替RawContacts.VERSION。

+0

它不提供聯繫人的修改時間,而是提供通常爲空/未分配的狀態更新時間戳。 – 2015-04-27 12:11:29

0

如果您想知道某個特定的數據類型(如電話號碼或姓名)是否已更改,您可以檢查Data.DATA_VERSION(但在Data.CONTENT_URI上)。