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

为什么更新联系人方法在android中没有任何作用,android,Android,我写了一个更新方法来更新联系人,但在我的手机上运行后,什么都没有发生 而且没有联系人得到更新为什么 这是我的方法: public Boolean UpdateContacts(ArrayList<ContactInfo> encryptedContactsInfoList) { ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();

我写了一个更新方法来更新联系人,但在我的手机上运行后,什么都没有发生 而且没有联系人得到更新为什么

这是我的方法:

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;
 }
任何帮助都非常感谢


致以最诚挚的问候。

您什么也得不到,因为您的
ContentResolver
为空,所以每次迭代都会出现异常

您的应用程序不会崩溃,因为您有捕获每个异常的
catch(Exception e)

尝试:

 ContentResolver cr = getContentResolver();
此外,applyBatch调用应该在for循环之后进行,否则您会对每个项目进行多次处理,并将
contacts contract.commondatatypes.Phone.\u ID
更改为
contacts contract.Data.\u 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());
    }

谢谢你的回复。但是我怎么处理呢?那我该怎么办?我照你说的做了。但是什么也没发生。@user3026622打开日志猫,查找异常文本。您将获得错误的信息。如果您不理解,请在问题中粘贴logcat文本我记录了所有异常,但没有异常。我在扩展服务的类中编写此方法,是否应在活动类中编写此方法?
 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());
    }