私は、連絡先をサーバーに同期させるアンドロイドプログラムを作成しようとしていました。私は同期部分を達成しました。最後のサーバープッシュが次のサーバーコールでプッシュされる可能性があるため、更新された連絡先などの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は、今日は、サーバー
:
は、Javaオブジェクトに優れたハッシュ値を計算する方法でこれを参照してください。私のアプリケーションでは、それは非常に非効率的だと思う。 –
保存する必要があるのはハッシュ値です。私は私の答えにそれを追加します – marmor