【问题标题】:Update contact with multiple phone numbers使用多个电话号码更新联系人
【发布时间】:2013-05-08 11:45:56
【问题描述】:

我有这个代码

public void updateContact (String contactId, String newNumber) {ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>(); 

    String selectPhone = Data.CONTACT_ID + "=? AND " + Data.MIMETYPE + "='"  + 
                     Phone.CONTENT_ITEM_TYPE + "'"; 

    String[] phoneArgs = new String[]{contactId};
    ops.add(ContentProviderOperation.newUpdate(Data.CONTENT_URI)
                    .withSelection(selectPhone, phoneArgs)
                    .withValue(Phone.NUMBER, newNumber)
                    .build()); 
            try { getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
            } catch (RemoteException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (OperationApplicationException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }       
    }

我从这里获取How to update contact number using Android 并对其进行了更改,以便通过我的所有联系人并向每个联系人添加我自己的前缀。

我浏览了所有联系人,并提供了这个 String id = phones.getString(phones.getColumnIndex(ContactsContract.Contacts._ID));

上面函数的联系人ID。但是有些联系人,尤其是有多个号码和一些只有一个号码的联系人,即使给定的 id 是正确的,也不要更改以获取新的前缀?! . 我在这里想念什么我不知道要改变什么。我认为它可能是 mime 类型,但我可以想象有人可能没有使用 Android 预装类型的手机并使用自定义类型。 我没有收到任何错误。谢谢大家的时间!!!

【问题讨论】:

    标签: android android-contentprovider android-contacts


    【解决方案1】:

    我终于更改了我的代码以正常工作,我传递了联系人 ID,但我需要电话 ID ...这是正确的代码。

    public void updateContact (String contactId,  String newNumber) {        
    
    
        ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>(); 
        String selectPhone = Data._ID + "=? AND " + Data.MIMETYPE + "='"  + 
                             Phone.CONTENT_ITEM_TYPE + "'"; 
    
                String[] phoneArgs = new String[]{contactId};
                ops.add(ContentProviderOperation.newUpdate(Data.CONTENT_URI)
                        .withSelection(selectPhone, phoneArgs)
                        .withValue(Phone.NUMBER, newNumber)
                        .build()); 
                try {
                    getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
                } catch (RemoteException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (OperationApplicationException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }       
        }   
    

    不要忘记在 android manifest 上设置适当的权限(写联系人)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-26
      • 1970-01-01
      • 1970-01-01
      • 2012-04-26
      • 2017-10-06
      • 2015-05-18
      • 1970-01-01
      相关资源
      最近更新 更多