2010-02-04 5 views
-3

안드로이드 연락처 북 연락처 세부 사항 (이름, 전화 번호, 이메일, 조직 세부 정보 등)을 업데이트하고 싶습니다. 나는 몇몇을 (이름, 전화 번호 및 전자 우편이 특정한 것이기 위하여) 그러나 전부에서 아닙니다 변경하는 성공적이었다. 내가 연락처를 조직 세부 사항 (Contacts.Organizations.COMPANY 및 Contacts.Organizations.TITLE)를 업데이트 할 때마다업데이트 연락처 세부 정보

내 응용 프로그램이 예외를 발생

java.lang.UnsupportedOperationException: Cannot update URL: content://contacts/people/69/organizations/69 

코드 조각은 다음과 같다 :

Uri baseUri = ContentUris.withAppendedId(People.CONTENT_URI, 69); 
Uri uri = Uri.withAppendedPath(baseUri, People.Phones.CONTENT_DIRECTORY); 
Cursor c = this.getContentResolver().query(uri, 
       new String[] { Contacts.Organizations._ID, Contacts.Organizations.COMPANY,Contacts.Organizations.TITLE}, 
       null, null, null); 
if(c.getCount() > 0) { 
     uri = ContentUris.withAppendedId(uri, c.getString(0)); 
ContentValues val1 = new ContentValues(); 
val1.put(Contacts.Organizations.COMPANY, "arw"); 
val1.put(Contacts.Organizations.TYPE, Contacts.Organizations.TYPE_WORK); 
val1.put(Contacts.Organizations.TITLE, "abcdef"); 
this.getContentResolver().insert(uri, val1); 
+5

를 사용하도록 빌더 클래스를 사용했다. 누구든지 도울 수 있기 전에 문제가 무엇이라고 생각하는지 설명하고 더 많은 정보를 제공해야합니다. –

+0

연락처에 대한 조직 세부 정보 (Contacts.Organizations.COMPANY 및 Contacts.Organizations.TITLE)를 업데이트하려고 할 때마다 내 앱에서 예외가 발생합니다. java.lang.UnsupportedOperationException : URL을 업데이트 할 수 없습니다. content : // contacts/people/69/조직/69 – pankajagarwal

답변

2

연락처의 데이터를 업데이트하려면 해당 필드의 기존 ID를 알아야합니다. 그럼, 내가 업데이트 할 원하는 다양한 분야에 대한 별도의 ContentProviderOperation 객체를 얻기 ArrayList에에 추가하고이 질문하지 않은 ContentProvider.applyBatch() 메소드

+0

그리고 특정 담당자의 ID는 어떻게 찾았습니까? – powder366

1

회사 및 타이틀 정보를 업데이트하는 데 많은 시간을 보냈습니다. 다음은 이제 나를 위해 작동합니다.

Uri workUri = Uri.withAppendedPath(contactUri, android.provider.Contacts.Organizations.CONTENT_DIRECTORY); 
      values.clear(); 
      values.put(android.provider.Contacts.Organizations.COMPANY, "company"); 
      values.put(android.provider.Contacts.Organizations.TYPE, android.provider.Contacts.Organizations.TYPE_WORK); 
      values.put(android.provider.Contacts.Organizations.TITLE, "job title"); 
      values.put(android.provider.Contacts.Organizations.ISPRIMARY, 1); 
      getContentResolver().insert(workUri, values); 
+0

이것은 새로운 회사를 삽입합니다. 내가 찾고있는 것은 exustung compnay 세부 사항을 업데이트하는 것입니다. – pankajagarwal

+0

어쨌든 제가 직접 대답을 찾았습니다. 모든 도움을 주셔서 감사합니다 – pankajagarwal

+3

frieza 어떻게이 문제를 해결 했습니까? 동일한 문제가 있습니까? – Mikey

1
String[] projection = new String[] { ContactsContract.RawContacts._ID }; 
     String where = ContactsContract.RawContacts.CONTACT_ID + " = ?"; 
     String[] selection = new String[] { String.valueOf(1) }; 
     Cursor c = getContentResolver().query(ContactsContract.RawContacts.CONTENT_URI, projection, where, selection, null); 
     c.moveToFirst(); 
     for(int i=0;i<c.getCount();i++) 
     { 
      Log.e("id",""+c.getString(0)); 
      c.moveToNext(); 
     } 



     ContentValues values = new ContentValues(); 
     values.clear(); 
     values.put(ContactsContract.RawContacts._ID , 0); 
     getContentResolver().update(ContactsContract.RawContacts.CONTENT_URI, values,ContactsContract.RawContacts._ID + "+ ?",new String[] { String.valueOf(1) });