3
ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>(); 
    ops.clear(); 

    ops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI) 
      .withSelection(Data._ID + "=?", new String[]{String.valueOf(id)}) 
      .withValue(Email.DATA, "[email protected]") 
      .build()); 

    try 
    { 
     context.getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops); 
    } 

로그에 아무것도 표시되지 않습니다. 그러나 이메일은 업데이트되지 않습니다. 아무도 이유를 아나요? 다음과 같이 문자열로 변환안드로이드에서 이메일 주소를 업데이트 할 수없는 이유는 무엇입니까?

작전은 다음과 같습니다

[mType: 2, mUri: content://com.android.contacts/data, mSelection: _id=?, mExpectedCount: null, mYieldAllowed: false, mValues: [email protected], mValuesBackReferences: null, mSelectionArgsBackReferences: null] 
+0

.withValue(ContactsContract.CommonDataKinds.Email.DATA, emails) 

은 (VALUEasSTRING를 '태그') Log.d를 사용하여 시도있다; 당신의 가치를 확인 하시겠습니까? – daniel

+0

어떤 가치가 있니? 이드? 그렇다면 –

+0

실제로 모든 값을 가지고 있지만 이미 시도한 것처럼 들린다. – daniel

답변

0

첫째, 당신이 로그에 오류가 표시되지 않는 이유를 설명 할 수있다 catch,없는 try 있습니다. 나는이 문서에서 볼 수있는 것과

둘째, 난 당신이 더 나은 이런 식으로 작성해야 생각 :

ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>(); 
ops.clear(); 

ops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI) 
     .withSelection(ContactsContract.Data.CONTACT_ID + "=?", 
         new String[] {String.valueOf(id)}) 
     .withValue(ContactsContract.CommonDataKinds.Email.DATA, "[email protected]") 
     .build()); 

try { 
    context.getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops); 
} catch (Exception e) { 
    e.printStackTrace(); 
} 
-1

해보십시오 withValue하지 문자열 내부 사용하지만, 문자열의 배열입니다.

String[] emails = {"Email Name<[email protected]>"}; 
+0

방금 ​​오류가 발생했습니다. 슬프게도. – Jonah