Изменить SipAddress программно

Я знаю, как добавить/редактировать адрес электронной почты в контакте программно, но я не знаю, как получить/изменить SIP_адрес/Интернет_вызов в контакте, я прочитал много документации, основанной на этом, включая Изменение контактной информации. Пожалуйста, помогите мне реализовать это


person Harsh Vardhan    schedule 20.11.2013    source источник


Ответы (1)


Изменение Sip-адреса точно такое же, как изменение адреса электронной почты контакта. Просто используйте ContactsContract.CommonDataKinds.SipAddress вместо ContactsContract.CommonDataKinds.Email.

Небольшой пример перед кофе:

import java.util.ArrayList;
import android.content.ContentProviderOperation;
import android.provider.ContactsContract;
import android.provider.ContactsContract.Data;
import android.provider.ContactsContract.CommonDataKinds.SipAddress;
//[...]
private String mSipAddress = "cecin\'estpasunesipaddress";
//[...]
    try {
        ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();

        ops.add(ContentProviderOperation.newUpdate(Data.CONTENT_URI)
           .withSelection(Data.RAW_CONTACT_ID + " = ?", new String[] {mRawContactId})
           .withSelection(Data._ID + " = ?", new String[] {mDataId})
           .withValue(Data.MIMETYPE, SipAddress.CONTENT_ITEM_TYPE)
           .withValue(Data.DATA1, mSipAddress)
           .withValue(SipAddress.TYPE, SipAddress.TYPE_HOME)
           .build());
        getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
}
//[...]

См. это Репозиторий GitHub для примера того, как получить поля, которые здесь не объявлены. Я получил его из этого ответа. Соответствующая документация.

person Sietse van der Molen    schedule 04.12.2013
comment
Эй, извините за опоздание. Я добавил ваш код во вставку (отредактировано несколько строк) и обновил часть кода, и это то, что получается, когда я его отлаживаю. Полученные контакты перестали предупреждать, когда я проверяю обновленный контакт. Он вставляет блок кода sip-адреса, даже если у контакта уже есть sip-адрес. Я считаю, что selectioArgs не подходит для обновления SIP-адреса в данном проекте. - person Harsh Vardhan; 05.12.2013
comment
Ах, теперь я вижу, что вы проверили тот ответ, о котором я упоминал ранее, хорошо. Я не могу проверить код сейчас, потому что у меня ОС без Android SDK, но он должен работать. Вы сказали, что можете изменить некоторые другие данные, такие как адрес электронной почты, с тем же кодом? - person Sietse van der Molen; 05.12.2013
comment
Да... Я просто заменил Email.something на SIpAddress.something. - person Harsh Vardhan; 07.12.2013