2016-10-01 39 views
3

我想通過編程方式將具有不同聯繫人信息的同名聯繫人合併到一個聯繫人中。如何以編程方式合併兩個不同的聯繫人?(Android)

我也檢查了this link並看到這個answer

我用下面的代碼:

ContentValues cv = new ContentValues(); 
cv.put(AggregationExceptions.TYPE, AggregationExceptions.TYPE_KEEP_TOGETHER); 
cv.put(AggregationExceptions.RAW_CONTACT_ID1, 1); 
cv.put(AggregationExceptions.RAW_CONTACT_ID2, 2); 
getContentResolver().update(AggregationExceptions.CONTENT_URI, cv, null, null); 

我也曾嘗試的方式,首先獲取列表中的聯繫人的所有信息,並刪除所有聯繫人。之後,用預定義的contactId添加一個新的聯繫人,包含我所擁有的所有信息。這會刪除所有聯繫人,但新聯繫人不會與預定義的聯繫人ID一起添加。您可以看到here

+1

@Kroltan同意,投票關閉+香港專業教育學院邊裁主持人。 –

+1

@Kroltan它在標題中已經有了問題:聯繫人本身的合併。假設你有2個聯繫人,並且你想鏈接他們,就像在很多聯繫人應用上一樣,如何去做。他已經有2個聯繫人作爲輸入(標記爲「1」和「2」)。由於他沒有使用正常的API,他試圖通過自己修改聯繫人進行合併。它爲什麼關閉? –

+0

@androiddeveloper看看我的評論的日期。看看編輯歷史。所有的細節都是在之後添加的。當我評論時,問題變得更糟。此時,您應該將我的評論標記爲過時。 – Kroltan

回答

0

如果你在SQLite數據庫中插入所有聯繫人,那麼你可以使用SQLite查詢來獲取同名聯繫人。

獲取同名聯繫人後,從聯繫人列表中刪除舊聯繫人,並從您的應用添加具有合併詳細信息的新聯繫人。

+0

我有這個想法,但它不工作我@Pawneshwer –

+0

你在哪裏堅持這個想法? – LearnPainLess

+0

@pawneshwar同時將聯繫人的詳細信息合併到一個聯繫人中並添加新的聯繫人。 –

2

我假設你已經提取了聯繫人並構建了合併兩個聯繫人的邏輯。

假設您想要手動合併兩個聯繫人,其中ContactsContract.RawContacts._IDmasterContactIdcontactId

現在,你可以通過下面的代碼合併:

ArrayList <ContentProviderOperation> ops = new ArrayList <ContentProviderOperation>(); 

ops.add(ContentProviderOperation.newUpdate(ContactsContract.AggregationExceptions.CONTENT_URI) 
    .withValue(ContactsContract.AggregationExceptions.TYPE, ContactsContract.AggregationExceptions.TYPE_KEEP_TOGETHER) 
    .withValue(ContactsContract.AggregationExceptions.RAW_CONTACT_ID1, masterContactId) 
    .withValue(ContactsContract.AggregationExceptions.RAW_CONTACT_ID2, contactId).build()); 

try { 
    getApplicationContext().getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops); 
} catch (RemoteException e) { 
    e.printStackTrace(); 
} catch (OperationApplicationException e) { 
    e.printStackTrace(); 
} 
+0

我試過這段代碼@Shaishav,但沒有得到任何輸出。手機中存在重複的聯繫人。 –

+0

發佈您的代碼。你如何獲得聯繫人列表和其他東西? –

+0

通過「masterContactId」,你的意思是它的查找鍵?你可以請張貼一些額外的代碼?你如何將多個聯繫人鏈接在一起? –

相關問題