2016-11-18 5 views
0

私のアプリは連絡先を編集できます。このシナリオでは、1つのアカウントにのみ存在する連絡先を選択し、3つのアカウントに関連付けるように変更しました。しかし、以下のContactsContractダンプに示すように、私は2つの連絡先(1つではなく)で終わった。プロバイダがそれらを集約しなかったのはなぜですか?なぜ連絡先に集約しないのですか?

agg 1821, display "A Z1", key 770i236434918d3893ea.2709i79dde86f8c1565d3.2709i506dc01a0d43d677.2709i4707c358f8fb503 
    raw 1821, acct type com.google, acct name [email protected] 
    data 10338, display "A Z1" 
    data 10343, phone 123456, Pager 
    data 10349, phone 545, Fax Work 

agg 1861, display "A Z1", key 1780r1860-q29pq04pq5Bpq16p.2709r1861-q29pq04pq5Bpq16p 
    raw 1860, acct type com.fusionone.account, acct name Backup Assistant 
    data 10580, display "A Z1" 
    data 10582, phone 123456, Pager 
    data 10584, phone 545, Fax Work 

    raw 1861, acct type com.google, acct name [email protected] 
    data 10581, display "A Z1" 
    data 10583, phone 123456, Pager 
    data 10585, phone 545, Fax Work 

このダンプでは、3つの層は、連絡先の集約行、未処理の連絡先行、および連絡先データ行を表します。先頭の単語の横にある数字(例:agg 1821)は、_ID列の値です。 「表示」はDISPLAY_NAMEを表します。

具体的には、私はアカウント[email protected](難読化されたもの)に由来する1821年代に開始しました。次に、2つの新しい生の連絡先(1860年と1861年)を別の2つのアカウントに作成し、1821年と同じ表示名を使用しました。結果が表示されます:2つの新しい生の連絡先がまとめて集計されましたが、 (1821)接触。

Builder builder = ContentProviderOperation.newUpdate(AggregationExceptions.CONTENT_URI); 
builder.withValue(AggregationExceptions.TYPE, AggregationExceptions.TYPE_KEEP_TOGETHER); 
builder.withValue(AggregationExceptions.RAW_CONTACT_ID1, raw1); 
builder.withValue(AggregationExceptions.RAW_CONTACT_ID2, raw2); 
ContentProviderOperation op = builder.build(); 

が次に実行:ペアごとに

、操作を作成します。あなたはAggregationExceptionsに書き込むことによって力の集約に参加するRawContactsをしたい場合は

答えて

3

は、同様の連絡先を集約するシステムを負いません。

ContentProviderResult[] res = resolver.applyBatch(ContactsContract.AUTHORITY, operationList); 

resは、成功/ Fについての情報が含まれています:すべての操作のArrayListすべての操作の不具合

+0

このテクニックが動作するので、私はあなたに+1を与えます、私が使用しているものです。しかし、それは質問に答えません。私の例で集計アルゴリズムがうまくいっていない人がいない限り、かなり役に立たないようです。 –

+0

自動集計の決定コードは非常に複雑です。連絡先の作成日を使用して決定を行う可能性もあるため、同時に2つの同一の連絡先を作成すると、それらはすぐに集計されますが、古いものは集計されません。数日後、連絡先が同期プロバイダを介して更新されたときに集計が行われたケースがありました。 – marmor

関連する問題