【发布时间】:2018-02-15 10:10:21
【问题描述】:
一个非常奇怪的问题。我正在尝试通过此规则更新联系人姓名: - 如果联系人姓名以“bit”+空格(“bit”)开头,那么 -> 将联系人姓名更新为 name.substring(4, name.length()),这意味着联系人姓名将在没有“”的情况下更新少量 ”。
当我使用将它们降低 4 的数字中的 name.substring 时(我认为直到联系人姓名中的空格)它工作得很好。当我从 4 个字符开始使用时,联系人的姓名会相乘。例如,当我使用 name = name.substring(4, name.length()) 而 name 等于“bit Lili”时,它的更新为: 莉莉莉莉。
private void updateContact(String name) {
ContentResolver cr = getContentResolver();
String where = ContactsContract.Data.DISPLAY_NAME + " = ?";
String[] params = new String[] {name};
Cursor phoneCur = managedQuery(ContactsContract.Data.CONTENT_URI,null,where,params,null);
ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
if ((null == phoneCur)) {//createContact(name, phone);
Toast.makeText(this, "no contact with this name", Toast.LENGTH_SHORT).show();
return;} else {ops.add(ContentProviderOperation.newUpdate(android.provider.ContactsContract.Data.CONTENT_URI)
.withSelection(where, params)
.withValue(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, name.substring(4,name.length()))
.build());
}
phoneCur.close();
try {cr.applyBatch(ContactsContract.AUTHORITY, ops);}
catch (RemoteException e) {e.printStackTrace();}
catch (OperationApplicationException e) {e.printStackTrace();}}
谢谢!
【问题讨论】:
标签: java android list contact android-contentresolver