Android の連絡先情報をサーバー情報と同期するアプリケーションを作成しています。サーバー情報が変更された後、私はすべての未加工の連絡先を更新しています。しかし、いくつかの生の連絡先で連絡先を更新した後、連絡先 ID の値が 1 つ増えていることがわかりました。デバイスの連絡先 ID から連絡先を更新しても、同じままです。
次のデータとの連絡先があるとします。
contact_id : 42
raw_contact_ids : { 43, 44, 45 }
(1) 更新後、次のようになります。
contact_id : 43
raw_contact_ids : { 43, 44, 45 }
(2) しかし、ユーザー インターフェイスを備えたデバイスを使用して同じ連絡先を更新すると、次のようになります。
contact_id : 42
raw_contact_ids : { 43, 44, 45 }
私はそのような行動を理解していません。連絡先の集計が原因かもしれないと思いますが、(2) の結果が (1) と同じではない理由がわかりません。生の連絡先の電話番号データを更新するために、次のコードを使用しています。
文字列 selectPhone = Data.RAW_CONTACT_ID + "=? AND " + Data.MIMETYPE + "='" + Phone.CONTENT_ITEM_TYPE + "'" + "AND " + Phone.TYPE + "=? AND " + Phone._ID + "=?"; String[] selectArgs = new String[] { String.valueOf(rawContactId), String.valueOf(from.getType()), String.valueOf(id) }; ops.add(ContentProviderOperation.newUpdate(Data.CONTENT_URI) .withSelection(selectPhone, selectArgs) .withValue(Phone.NUMBER, newNumber) 。建てる());
誰かが私が間違っていることを説明できますか? それらの連絡先 ID が本当に必要です。