3
非常に奇妙な問題です。 - 連絡先の名前が "bit" +スペース( "ビット")で始まる場合 - 連絡先の名前をname.substring(4、name.length())に更新する場合は、これは、連絡先の名前が「ビット」なしで更新されることを意味します。連絡先の名前を更新すると更新されます(ContentProviderOperation)
私はそれらを下げる番号からname.substringを使用すると4(私は連絡先の名前のスペースまで)と思っています。私が4文字以上使用すると、連絡先の名前が掛けられます。例として、私がname = name.substring(4、name.length())を使用しているときに、 "bit Lili"と同じ名前を使用しているときに、その更新を: Lili 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();}}
ありがとうございます!