簡體   English   中英

如何在聯系人數據庫中偵聽和獲取有關更改的數據

[英]How to listen and get data for changes in Contact Database

我試圖在聯系人數據庫中偵聽任何更改(添加/更新)。 而且我還想獲​​取發生更改時的聯系人數據(ContactID,displayName,phoneNumber)。

我創建了一個類,用於偵聽TestContentObserver對聯系人數據庫的任何更改。 但是它僅在聯系人數據庫發生更改時通知我,而沒有通知我數據已更改嗎?

import android.app.Activity;
import android.database.ContentObserver;
import android.os.Bundle;
import android.provider.Contacts.People;

public class TestContentObserver extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        this.getApplicationContext().getContentResolver().registerContentObserver (People.CONTENT_URI, true, contentObserver);
    }

    private class MyContentObserver extends ContentObserver {

        public MyContentObserver() {
            super(null);
        }

        @Override
        public void onChange(boolean selfChange) {
            super.onChange(selfChange);
        }

    }

    MyContentObserver contentObserver = new MyContentObserver();

}

當聯系人已更新或添加時,我想獲取聯系人的數據信息(contactId,)。 你能給我個建議嗎?

您可以在onChange()方法中添加類似的內容以獲取contactId:

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

if (!cursor.moveToFirst())
            return;

cursor.moveToLast();
do{
String id = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
String name = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
}while (cursor.moveToPrevious()) ;

希望它能提供一些想法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM