2012-01-29 122 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"); 
    } 
} 
相关问题