gpt4 book ai didi

java - 更新时乘以联系人姓名 (ContentProviderOperation)

转载 作者:太空狗 更新时间:2023-10-29 14:42:15 25 4
gpt4 key购买 nike

一个非常奇怪的问题。我正在尝试通过此规则更新联系人姓名:- 如果联系人姓名以“位”+空格(“位”)开头,那么 -> 将联系人姓名更新为 name.substring(4, name.length()),这意味着联系人姓名将在没有“少量 ”。

当我使用数字中的 name.substring 将它们降低 4 时(我认为直到联系人姓名中的空格)它的工作完美。当我从 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();}}

谢谢!

最佳答案

不是一个确定的答案,但它应该可以解决你遇到的问题是

.withValue(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME //This specific part has a problem with the new update function
,name.substring(4,name.length()))

因此,我的修复建议是将其更改为姓氏和名字,根据您想要删除给定名称的问题,根据需要更改这些,因此这是一个解决方案

 public static boolean updateContactName(@NonNull Context context, @NonNull String name) {
if (name.length() < 4) return true;
String givenNameKey = ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME;
String familyNameKey = ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME;
String changedName = name.substring(4, name.length());
ArrayList<ContentProviderOperation> ops = new ArrayList<>();

String where = ContactsContract.Data.DISPLAY_NAME + " = ?";
String[] params = new String[]{name};

ops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI)
.withSelection(where, params)
.withValue(givenNameKey, changedName)
.withValue(familyNameKey, "")
.build());
try {
context.getContentResolver()
.applyBatch(ContactsContract.AUTHORITY, ops);
} catch (Exception e) {
e.printStackTrace();
return false;
}
return true;
}

关于java - 更新时乘以联系人姓名 (ContentProviderOperation),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46083336/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com