2016-10-13 2 views
0

Я пытаюсь изменить отображаемое имя конкретного контакта, но независимо от того, что я делаю, отображаемое имя не редактируется. Я просмотрел все связанные вопросы, но я не нашел решения по этой проблеме.Отображаемое имя контакта не отредактировано в Android

ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>(); 
ops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI) 
    .withSelection(ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "=? AND " + 
        ContactsContract.CommonDataKinds.Phone.MIMETYPE + "='" + 
        ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE + "' AND "+ContactsContract.CommonDataKinds.Phone.RAW_CONTACT_ID +"=?", 
      new String[]{id,raw}) 
    //.withValue(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, "B "+name) 
    //.withValue(ContactsContract.CommonDataKinds.Phone.PHONETIC_NAME, "B "+name) 
    //.withValue(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME_PRIMARY, "B "+name) 
    //.withValue(ContactsContract.Data.DISPLAY_NAME, "B "+name) 
    .withValue(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, "B "+name) 
    .build()); 
try { 
    ContentProviderResult[] result =HomeActivity.this.getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops); 
    Log.e("Edit Result",result.toString()); 
} catch (RemoteException e) { 
    e.printStackTrace(); 
} catch (Exception e) { 
    e.printStackTrace(); 
} 

Я пробовал все опции, которые написаны в комментариях, но с ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME. Он изменяет контактный номер вместо имени контакта. Я пытаюсь сделать это в течение последних 3 дней, но не добился успеха. Скажите, пожалуйста, что я делаю неправильно или покажу мне правильный способ редактирования имени контакта.

ответ

0

Имя хранится в базе данных контактов с типом типа STRUCTURED_NAME. More information here

Вы должны изменить свой код, как этого

ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>(); 
ops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI) 
    .withSelection(ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "=? AND " + 
        ContactsContract.CommonDataKinds.Phone.MIMETYPE + "='" + 
        ContactsContract.CommonDataKinds.StructuredName + "' AND "+ContactsContract.CommonDataKinds.Phone.RAW_CONTACT_ID +"=?", 
      new String[]{id,raw}) 
    .withValue(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, "B "+name) 
    .build()); 
try { 
    ContentProviderResult[] result =HomeActivity.this.getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops); 
    Log.e("Edit Result",result.toString()); 
} catch (RemoteException e) { 
    e.printStackTrace(); 
} catch (Exception e) { 
    e.printStackTrace(); 
} 

Я хотел бы предложить, что вы вытащите базу данных контактов с эмулятора или корневым телефона, чтобы получить лучшее понимание.

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