以编程方式编辑联系人的姓名/电话号码
Posted
技术标签:
【中文标题】以编程方式编辑联系人的姓名/电话号码【英文标题】:Edit name/phone number of contact programmatically 【发布时间】: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,但我不想调用原生意图。
谢谢。
【问题讨论】:
真的吗?没人能帮忙吗? 【参考方案1】:您应该在选择中指定 mimetype。
.withSelection(ContactsContract.CommonDataKinds.Phone._ID + "=? AND " +
Data.MIMETYPE + "='" +
ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE + "'",
new String[]contact_id)
如果您还没有弄清楚这一点,请尝试一下。我发现更新联系人在正确选择参数方面非常棘手。
【讨论】:
前段时间我已经想通了,这就是线索。无论如何,谢谢;)。 @androfan 如果您找到了答案,请发布完整代码。谢谢:)以上是关于以编程方式编辑联系人的姓名/电话号码的主要内容,如果未能解决你的问题,请参考以下文章