2012-02-17 266 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

相關問題