【发布时间】:2013-05-29 01:02:12
【问题描述】:
我正在尝试以编程方式修改联系人的显示名称:
try {
ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
ops.add(ContentProviderOperation.newUpdate(Data.CONTENT_URI)
.withSelection(ContactsContract.CommonDataKinds.Phone._ID + " = ?", new String[] {contact_id})
.withValue(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, "anything")
.build());
ContentProviderResult[] result = getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
} catch (Exception e) {
Log.w("UpdateContact", e.getMessage()+"");
for(StackTraceElement ste : e.getStackTrace()) {
Log.w("UpdateContact", "\t" + ste.toString());
}
Context ctx = getApplicationContext();
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(ctx, "Update failed", duration);
toast.show();
}
contact_id 是ContactsContract.CommonDataKinds.Phone._ID 在之前的活动中收集的
代码执行得很好,但是:
-
ContentProviderResult[]结果为空 - 联系人姓名保持不变
我也尝试过Data.DISPLAY_NAME,但效果相同。
我阅读了手册:http://developer.android.com/guide/topics/providers/contacts-provider.html,但我不想调用原生意图。
谢谢。
【问题讨论】:
-
真的吗?没人能帮忙吗?
标签: android android-contacts contactscontract android-contentresolver