Я пытался написать программу для Android, которая синхронизирует контакты по серверу. Я получил часть синхронизации. Теперь я хочу сохранить часть diff, такую как только те контакты, которые были обновлены, так как последнее нажатие на сервер может быть нажато в следующем вызове сервера. Я использую ContactsContract.Contacts.CONTACT_LAST_UPDATED_TIMESTAMP, чтобы следить за последней обновленной меткой контактов. Он также работает правильно, поскольку он сообщает мне, когда контакт был обновлен. Но возникает проблема, когда я обращаюсь к любому контакту, это CONTACT_LAST_UPDATED_TIMESTAMP также обновляется, как если бы контакт был изменен. Я не хочу, чтобы это произошло. Я хочу точно обновить время контактов только или любыми другими способами, чтобы подойти к вышеуказанной ситуации. Предложения приветствуются. Вот мой кодПоследнее обновление Время контактов в Android программно
String phoneNumber = null;
String _ID = ContactsContract.Contacts._ID;
String DISPLAY_NAME = ContactsContract.Contacts.DISPLAY_NAME;
String Phone_CONTACT_ID = ContactsContract.CommonDataKinds.Phone.CONTACT_ID;
String CONTACT_LAST_UPDATED_TIMESTAMP = ContactsContract.Contacts.CONTACT_LAST_UPDATED_TIMESTAMP;
String Contact_last = ContactsContract.CommonDataKinds.Phone.CONTACT_LAST_UPDATED_TIMESTAMP;
String NUMBER = ContactsContract.CommonDataKinds.Phone.NUMBER;
ContentResolver contentResolver = appContext.getContentResolver();
Cursor cursor = contentResolver.query(CONTENT_URI, null, null, null, null);
ArrayList<Contact> contacts = new ArrayList<>();
if (cursor!= null && cursor.moveToFirst() && cursor.getCount() > 0) {
do {
long activity_at = cursor.getLong(cursor.getColumnIndex(CONTACT_LAST_UPDATED_TIMESTAMP));
if(activity_at <= prevActivityTime) {
continue;
}
// Create a contact object
Contact contact = new Contact();
// Fetch contact id and contact name
String contact_id = cursor.getString(cursor.getColumnIndex(_ID));
String contactName = cursor.getString(cursor.getColumnIndex(DISPLAY_NAME));
} while (cursor.moveToNext());
cursor.close();
}
здесь preActivityAt это переменная, которая имеет метку времени предыдущего дня т.е. контактов обновляется со вчерашнего дня до сегодняшнего дня должны получить толкнул на сервер
для этого я должен был поддерживать новую базу данных в моем андроида, который хранит все контакты и с тех пор я использую код в качестве фонового сервиса в моем приложении, я думаю, что это будет довольно неэффективно. –
все, что вам нужно сохранить, это хешированное значение. я добавлю его в свой ответ – marmor