为什么Update联系方法在android中没有任何作用

时间:2014-02-17 17:51:59

标签: android

我写了一个Update方法来更新联系人,但是在我的手机上运行后没有任何反应 没有联系人获得更新原因?

这是我的方法:

public Boolean UpdateContacts(ArrayList<ContactInfo> encryptedContactsInfoList) {
    ArrayList<ContentProviderOperation> ops = new   ArrayList<ContentProviderOperation>();
    ContentResolver cr = null;
    for (ContactInfo contactInfo : encryptedContactsInfoList) {

        try {


            String contactId = contactInfo.getContactID();
            String contactName = contactInfo.getContactName();
            String contactNumber = contactInfo.getContactNumber();


            ops.add(ContentProviderOperation
                    .newUpdate(Data.CONTENT_URI)
                    .withSelection(
                             ContactsContract.CommonDataKinds.Phone._ID
                                    + " = ?",  new String[] { contactId })
                     .withValue(ContactsContract.Data.DISPLAY_NAME,
                            "asdffgh").build());

               cr.applyBatch(ContactsContract.AUTHORITY, ops);



        } catch (Exception e) {

            Log.d("exception", e.getMessage());
        }

    }
    return true;
 }

这是执行代码后的操作:

 [{"mSelection":"_id \u003d ?","mSelectionArgs":["2302"],"mUri":{"authority":    


{"decoded":"com.android.contacts","encoded":"com.android.contacts"},"fragment":{},"path":  


{"decoded":"NOT CACHED","encoded":"/data"},"query":{},"scheme":"content","uriString":"NOT   


CACHED","host":"NOT CACHED","port":-2},"mValues":{"mValues":      


{"display_name":"asdffgh"}},"mType":2,"mYieldAllowed":false}]

任何帮助都非常感激,

最好的问候。

1 个答案:

答案 0 :(得分:1)

由于ContentResolver为空,因此没有任何结果,因此每次迭代都会出现异常。

您的应用不会崩溃,因为您有catch (Exception e)捕获每个例外。

尝试:

 ContentResolver cr = getContentResolver();

此外,applyBatch调用应该在for循环之后,否则您每个项目都要处理多次,并将ContactsContract.CommonDataKinds.Phone._ID更改为ContactsContract.Data._ID

 try {


  for (ContactInfo contactInfo : encryptedContactsInfoList) {

         String contactId = contactInfo.getContactID();
        String contactName = contactInfo.getContactName();
        String contactNumber = contactInfo.getContactNumber();


        ops.add(ContentProviderOperation
                .newUpdate(Data.CONTENT_URI)
                .withSelection(
                         ContactsContract.Data._ID
                                + " = ?",  new String[] { contactId })
                 .withValue(ContactsContract.Data.DISPLAY_NAME,
                        "asdffgh").build());
    }

     cr.applyBatch(ContactsContract.AUTHORITY, ops);


    } catch (Exception e) {

        Log.d("exception", e.getMessage());
    }
相关问题