каждое поле (адрес электронной почты, имя, адрес) имеет свой тип mime, который вы должны использовать , чтобы обновить поле.
позволяет попытаться обновить электронную почту, например.
Сначала вы должны найти детали, которые хотите обновить. мы будем работать с таблицей данных, где каждый Data.RAW_CONTACT_ID представляет детальную информацию о некотором контакте.
Итак, нам нужно найти Data.RAW_CONTACT_ID, где id - это идентификатор контакта, который вы хотите изменить .
Теперь нам нужно найти mimetype (конкретная строка, представляющая деталь) электронной почты (Email.CONTENT_ITEM_TYPE).
Данные электронной почты хранятся в столбце Email.DATA - там мы помещаем новое электронное письмо.
если вы хотите конкретный тип электронной почты, вы должны добавить его в запросе: , например, если вы хотите добавить домашний адрес электронной почты, то вы должны добавить Email.TYPE_HOME к запросу.
затем мы создаем запрос и, наконец, применяем изменение.
Вот нелогич-:
ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
String emailParams = Data.RAW_CONTACT_ID + " = ? AND " + Data.MIMETYPE + " = ?";
String[] emailParamsWhere = new String[] { "contact_id", Email.CONTENT_ITEM_TYPE };
ops.add(ContentProviderOperation.newUpdate(Data.CONTENT_URI).withSelection(emailParams, emailParamsWhere).withValue(Email.DATA, "new email").withValue(Email.TYPE, Email.TYPE_HOME)
.build());
try
{
ContentProviderResult[] res = getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
if (res != null)
{
return true;
}
return false;
}
catch (RemoteException e)
{
Log.d(TAG, e.getMessage());
e.printStackTrace();
}
catch (OperationApplicationException e)
{
Log.d(TAG, e.getMessage());
e.printStackTrace();
}
Для обновления мобильного телефона, использовать этот запрос:
String phoneParams = Data.RAW_CONTACT_ID + " = ? AND " + Data.MIMETYPE + " = ? AND " + Phone.TYPE + " = " + Phone.TYPE_MOBILE;
String[] phoneParamsWhere = new String[] { "contact_id", Phone.CONTENT_ITEM_TYPE };
ops.add(ContentProviderOperation.newUpdate(Data.CONTENT_URI).withSelection(phoneParams, phoneParamsWhere).withValue(Phone.NUMBER, "mobile_number")
.withValue(Phone.TYPE, Phone.TYPE_MOBILE).build());
Надежда Я помог
Спасибо за ваш обмен кода, но когда я использовал это с контактом первым и обновление имени, чем тип электронной почты, измененный с неизвестным типом. Я хочу обновить полную контактную информацию, такую же, как android contact api works. – Jitendra
просто добавьте withValue (Email.TYPE, Email.TYPE_HOME) (или любой тип, который вам нравится) в конец запроса, например, в примере мобильного номера, который я разместил. Я обновил ответ. – dor506
Спасибо, его работа. вы можете сказать мне одну вещь? предположим, что пользователь не вставлял адрес электронной почты, но во время обновления он хочет вставить или обновить адрес электронной почты, а затем как он обрабатывается? plz help ... – Jitendra