2010-02-04 74 views
-3

我想我的代碼更新聯繫人詳細信息(如姓名,電話號碼,電子郵件,組織的詳細信息等)在android通訊錄中。我成功修改了一些(姓名,電話號碼和電子郵件具體),但不是全部。更新Android上的聯繫信息

每當我試着聯繫人更新的組織細節(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

這不是一個問題。在任何人都可以幫忙之前,你需要解釋你認爲的問題,並給我們更多的信息。 – 2010-02-04 14:43:41

+0

無論何時我嘗試更新聯繫人的組織詳細信息(Contacts.Organizations.COMPANY和Contacts.Organizations.TITLE),我的應用程序都會拋出異常java.lang.UnsupportedOperationException:無法更新URL:content:// contacts/people/69 /組織/ 69 – pankajagarwal 2010-02-05 04:33:08

回答

2

爲了更新聯繫人中的任何數據,您需要知道該字段的現有ID。然後我用生成器類,以獲得我想要更新的各個領域單獨ContentProviderOperation對象,將它們添加到一個ArrayList,然後使用ContentProvider.applyBatch()方法

+0

你是如何找到特定聯繫人的ID的? – powder366 2014-03-12 15:26:06

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 2010-03-09 04:25:35

+0

我自己找到答案的任何方式。謝謝你的所有幫助 – pankajagarwal 2010-03-30 08:52:26

+3

frieza你是怎麼解決這個問題的,我有同樣的問題? – Mikey 2010-10-13 07:40:29

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) });