2016-10-01 3 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. Это удаление всех контактов, но новый контакт не добавляется с предопределенным contactId.

Вы можете увидеть 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._ID: masterContactId и contactId.

Теперь вы можете объединить с помощью следующего кода:

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» вы имеете в виду его ключ поиска? Не могли бы вы разместить дополнительный код? Как бы вы связали несколько контактов вместе? –

Смежные вопросы