2012-01-29 68 views
0

我想向聯繫人添加自定義字段,這些聯繫人會告訴我聯繫人是否在我的應用程序中進行了標記。 首先,我想創建一個函數,將設置我的自定義數據與給定的ID聯繫,但我嘗試使用的代碼無法正常工作。將自定義數據添加到Android中的聯繫人

public static final String    MIMETYPE_EMPLOYEE = "vnd.android.cursor.item/employee"; 
public void addEmployee(String id){ 
      ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>(); 
      Uri newContactUri = null; 
      ops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI) 
         .withSelection(ContactsContract.Data._ID + "=?", new String[]{id}) 
         .withValue(ContactsContract.Data.MIMETYPE, MIMETYPE_EMPLOYEE) 
         .withValue(ContactsContract.Data.DATA1, "yes") 
         .build()); 

      try{ 
       ContentProviderResult[] res = act.getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops); 

       if (res!=null && res[0]!=null) { 

        newContactUri = res[0].uri; 
        Log.d(LOG_TAG, "URI added contact:"+ newContactUri); //here it says that it's null :(
       } 
       else Log.e(LOG_TAG, "Contact not added."); 
      } catch (RemoteException e) { 
       // error 
       Log.e(LOG_TAG, "Error (1) adding contact."); 
       newContactUri = null; 
      } catch (OperationApplicationException e) { 
       // error 
       Log.e(LOG_TAG, "Error (2) adding contact."); 
       newContactUri = null; 
      } 
      Log.d(LOG_TAG, "Contact added to system contacts."); 

      if (newContactUri == null) { 
       Log.e(LOG_TAG, "Error creating contact"); 
      } 
     } 

我還試圖用的,而不是更新插入但插入時,我試圖找回我的應用程序崩潰「newContactUri = RES [0] .uri;」 我已經搜索了類似的解決方案,但沒有爲我工作:/

+0

plz試試這個自定義聯繫人: 例如, :[\ [CLICK \]] [1] [1]:http://stackoverflow.com/questions/6853799/add-a-custom-field-to-a-phone-number/7332858 #7332858 – 2012-01-29 13:13:04

回答

1

主題鏈接從MAYUR BHOLA幫助,thx。 我發佈了我的問題的工作版本,也許有人會需要這個。

public static final String    MIMETYPE_EMPLOYEE = "vnd.android.cursor.item/employee"; 
    private void updateEmployee(String id, String value){ 
    try { 
     ContentValues values = new ContentValues(); 
     values.put(Data.DATA1, value); 
     int mod = act.getContentResolver().update(
       Data.CONTENT_URI, 
       values, 
       Data.RAW_CONTACT_ID + "=" + id + " AND " 
         + Data.MIMETYPE + "= '" 
         + MIMETYPE_EMPLOYEE + "'", null); 

     if (mod == 0) { 
      values.put(Data.RAW_CONTACT_ID, id); 
      values.put(Data.MIMETYPE, MIMETYPE_EMPLOYEE); 
      act.getContentResolver().insert(Data.CONTENT_URI, values); 
      Log.v(LOG_TAG, "data inserted"); 
     } else { 
      Log.v(LOG_TAG, "data updated"); 
     } 
    } catch (Exception e) { 
     Log.v(LOG_TAG, "failed"); 
    } 
} 
相關問題