and*_*fan 8 android android-contentresolver contactscontract android-contacts
我试图以编程方式修改联系人的显示名称:
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();
}
Run Code Online (Sandbox Code Playgroud)
contact_id
被ContactsContract.CommonDataKinds.Phone._ID
聚集在以前的活动
代码执行正常,但是:
ContentProviderResult[]
结果为空我也尝试了Data.DISPLAY_NAME
但效果相同.
我阅读了手册:http://developer.android.com/guide/topics/providers/contacts-provider.html但我不想调用本机意图.
谢谢.
您应该在选择中指定mimetype.
.withSelection(ContactsContract.CommonDataKinds.Phone._ID + "=? AND " +
Data.MIMETYPE + "='" +
ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE + "'",
new String[]{contact_id})
Run Code Online (Sandbox Code Playgroud)
如果你还没想到这一点,那就试试吧.我发现更新联系人在使选择参数正确时非常棘手.
归档时间: |
|
查看次数: |
7735 次 |
最近记录: |