为什么更新联系人方法在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());
}