0

연락처 이름을 프로그래밍 방식으로 변경하려고합니다 (contactId 기준). 나는 여기에 비슷한 질문 &로보고 다음과 같은 노력했습니다 : 그것은 작동하지 않습니다 일부 장치 만 (이러한 LG의 G3 등의) 다른에서 일하고연락처 이름을 프로그래밍 방식으로 변경하십시오.

public static boolean updateContactName(Context context, long contactId, String newName) { 
    try { 
     ContentResolver contentResolver = context.getContentResolver(); 

     ArrayList<android.content.ContentProviderOperation> ops = new ArrayList<>(); 
     ops.add(android.content.ContentProviderOperation.newUpdate(android.provider.ContactsContract.Data.CONTENT_URI) 
       .withSelection(ContactsContract.CommonDataKinds.Phone._ID + "=? AND " + 
           Data.MIMETYPE + "='" + 
           ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE + "'", 
         new String[]{Long.toString(contactId)}) 
       .withValue(CommonDataKinds.StructuredName.DISPLAY_NAME, newName) 
       .build()); 

     contentResolver.applyBatch(ContactsContract.AUTHORITY, ops); 
     return true; 
    } catch (Exception e) { 
     CLog.d(ContactUtils.class, e); 
     return false; 
    } 
} 

, 아무것도 존재하지 않습니다 업데이 트를.

도움 주셔서 감사합니다.

답변

0

을 확인하시기 바랍니다 :

try { 
    String newName = txtName.getText(); 
    ArrayList<ContentProviderOperation> cpoList = new ArrayList<ContentProviderOperation>(); 

    cpoList.add(ContentProviderOperation.newUpdate(Data.CONTENT_URI) 
    .withSelection(ContactsContract.CommonDataKinds.Phone._ID + "=? AND " + 
      Data.MIMETYPE + "='" + ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE + "'", new String[]{contact_id}) 
    .withValue(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, newName) 
    .build()); 
    ContentProviderResult[] result = getContentResolver().applyBatch(ContactsContract.AUTHORITY, cpoList); 
} catch (Exception e) { 
    // Do Any thing 
} 
+0

은 동일한 코드이다. – motis10

+0

같은 코드입니다. lg g3에서 작업하지 않음 –

+0

오류 로그를 확인 했습니까? – AndroSco

관련 문제