2011-09-04 6 views
3

SEND_TO_VOICEMAIL의 값을 0에서 1로 수정하려고합니다. 그 반대의 경우도 마찬가지입니다. 이름, 번호, 닉네임, 이메일, ecc와 같은 다른 연락처의 세부 정보를 수정하는 데 성공했지만 SEND_TO_VOICEMAIL을 (를) 변경해야합니다. 내가 2 일 동안 열심히 미쳤어 !! 그게 가능한가? 그것은해야한다!Android 연락처에서 SEND_TO_VOICEMAIL 설정

 String rawContactId = "1"; 

     ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>(); 
     ops.add(
      ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI) 
      .withSelection(Data.RAW_CONTACT_ID + "=?" , new String[] { rawContactId }) 
      .withValue(ContactsContract.RawContacts.SEND_TO_VOICEMAIL , 1) 
      .build() 
     ); 

     try { 
      getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops); 
     } catch (RemoteException e) { 
      e.printStackTrace(); 
     } catch (OperationApplicationException e) { 
      e.printStackTrace(); 
     } 

하지만 로그 캣는 말한다 :

나는 많은 가능성을 시도

하지만,이 일을해야 ... 내가 생각하지 ERROR/AndroidRuntime (822) : android.database.sqlite.SQLiteException를 : 그런 열을 : send_to_voicemail :, 컴파일하는 동안 : UPDATE 데이터 SET send_to_voicemail =? 어디서 _id =?

나는 이제 더 이상 무엇을 시도해야할지 모르겠다. 어떤 도움이라도 대단히 감사 할 것입니다. 감사합니다. .

P. 나는 자바에 대한 전문가가 아니다.

답변

2

[매뉴얼에 따르면, 찾고있는 SEND_TO_VOICEMAIL 필드는 ContactsContract.Data 테이블이 아니라 ContactsContract.Contacts 테이블에있다. 잘못된 테이블을 수정하려고하는 것 같습니다.

각 테이블의 필드에 대해 ContactsContract.DataContactsContract.Contacts을 참조하십시오.

+0

감사합니다, 그 답이다! "ContactsContract.Data"를 "ContactsContract.Contacts"로 변경했습니다. – Nifhel

+0

삼성 S3에 문제가 있습니까? – powder366

+0

들어오는 호출에'SEND_TO_VOICEMAIL' 플래그가 작동합니까? 또는 전화가 걸리기 전에 설정을 적용합니까? –

2

그것은 더 나은 ContentProviderContacts.CONTENT_URI을 통해 수정된다

ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>(); 
ops.add(ContentProviderOperation.newUpdate(Contacts.CONTENT_URI) 
    .withSelection(Contacts._ID + "=?", new String[]{hmout.get("cid").toString()}) 
    .withValue(Contacts.SEND_TO_VOICEMAIL, 1) 
    .build()); 

try { 
    getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops); 
} catch (Exception e) { 
    Log.e("Exception: ", e.getMessage()); 
}