2012-02-17 142 views
0

我正在处理一个应用程序,在该应用程序中我想更新特定人员的联系人。当我只更新联系人的姓氏和名字,那么它工作正常,但我想更新如电子邮件地址,电话,邮政等ADDRES接触的全部细节更新联系人详细信息android

请给我提供了一些有用的链接。提前致谢。

回答

3

每个字段(电子邮件,姓名,ADRESS)对MIME类型,你应该以更新的字段使用 它。

可以尝试更新,例如电子邮件。

首先,你应该找到您要更新的细节。 我们将使用数据表,其中每个Data.RAW_CONTACT_ID代表关于某个联系人的详细信息 。

因此,我们需要找到Data.RAW_CONTACT_ID,其中的id是您想要编辑的联系人的ID。

现在我们需要找到 电子邮件(Email.CONTENT_ITEM_TYPE)的mimetype(表示详细信息的特定行)。

电子邮件的数据被存储在列Email.DATA - 还有我们把新的电子邮件。

如果您想要特定的电子邮件类型,则应将其添加到查询中:例如,如果您想添加家庭电子邮件,则应该向查询添加Email.TYPE_HOME 。

然后我们建立了一个查询,并最终应用更改。

下面是一个examle:

ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>(); 

    String emailParams = Data.RAW_CONTACT_ID + " = ? AND " + Data.MIMETYPE + " = ?"; 
    String[] emailParamsWhere = new String[] { "contact_id", Email.CONTENT_ITEM_TYPE }; 

    ops.add(ContentProviderOperation.newUpdate(Data.CONTENT_URI).withSelection(emailParams, emailParamsWhere).withValue(Email.DATA, "new email").withValue(Email.TYPE, Email.TYPE_HOME) 
      .build()); 

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

     if (res != null) 
     { 
      return true; 
     } 

     return false; 
    } 

    catch (RemoteException e) 
    { 
     Log.d(TAG, e.getMessage()); 
     e.printStackTrace(); 
    } 

    catch (OperationApplicationException e) 
    { 
     Log.d(TAG, e.getMessage()); 
     e.printStackTrace(); 
    } 

对于更新的手机,使用此查询:

 String phoneParams = Data.RAW_CONTACT_ID + " = ? AND " + Data.MIMETYPE + " = ? AND " + Phone.TYPE + " = " + Phone.TYPE_MOBILE; 
     String[] phoneParamsWhere = new String[] { "contact_id", Phone.CONTENT_ITEM_TYPE }; 

     ops.add(ContentProviderOperation.newUpdate(Data.CONTENT_URI).withSelection(phoneParams, phoneParamsWhere).withValue(Phone.NUMBER, "mobile_number") 
       .withValue(Phone.TYPE, Phone.TYPE_MOBILE).build()); 

希望我帮助

+0

感谢您分享自己的代码,但是当我用这个接触第一和姓氏更新比电子邮件类型更改为未知类型。我想更新整个联系人详细信息相同的android联系人api的作品。 – Jitendra 2012-02-17 10:46:20

+0

只需在查询结尾添加withValue(Email.TYPE,Email.TYPE_HOME)(或任意类型),就像我发布的手机号码示例一样。我更新了答案。 – dor506 2012-02-17 10:56:30

+0

谢谢,它的工作。你能告诉我一件事吗?假设用户没有插入电子邮件地址,但在更新时他想插入或更新电子邮件地址,那么它如何处理? plz帮助... – Jitendra 2012-02-17 11:19:51

相关问题