1

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 が本当に必要です。

4

1 に答える 1

2

私が学んだことから、連絡先を保存または使用するときに LOOKUP_KEY を使用する方が良いです。連絡先 ID を使用すると、集約のために静的なままにはなりません。

于 2012-04-12T12:56:10.983 に答える