从代码中添加联系人后,phoneBook 在 android 中的句点 (.) 之后附加 space
After adding contacts from code, phoneBook appends the space after period(.) in android
我不知道我在将联系人插入电话簿时做错了什么。
这是要插入的代码。
public static void AddMultipleContact(Context context, String name , String numbers, String Data4){
ContentResolver resolver = context.getContentResolver();
ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
int rawContactInsertIndex = ops.size();
ops.add(ContentProviderOperation.newInsert(addCallerIsSyncAdapterParameter(ContactsContract.RawContacts.CONTENT_URI, true))
.withValue(ContactsContract.RawContacts.ACCOUNT_NAME, AccountGeneral.ACCOUNT_NAME)
.withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, AccountGeneral.ACCOUNT_TYPE)
.withValue(ContactsContract.RawContacts.AGGREGATION_MODE, ContactsContract.RawContacts.AGGREGATION_MODE_DEFAULT)
.withValue(ContactsContract.RawContacts.SOURCE_ID, sourceId)
.build());
ops.add(ContentProviderOperation.newInsert(addCallerIsSyncAdapterParameter(ContactsContract.Data.CONTENT_URI, true))
.withValueBackReference(Data.RAW_CONTACT_ID, rawContactInsertIndex)
.withValue(RawContacts.Data.MIMETYPE, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE)
.withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, numbers) // Number of the person
.withValue(ContactsContract.CommonDataKinds.Phone.TYPE, ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE)
.build()); // Type of mobile number
android.util.Log.e(TAG, "AddMultipleContact:-------------- NAME = " + name);
ops.add(ContentProviderOperation.newInsert(addCallerIsSyncAdapterParameter(ContactsContract.Data.CONTENT_URI, true))
.withValueBackReference(ContactsContract.RawContacts.Data.RAW_CONTACT_ID, rawContactInsertIndex)
.withValue(ContactsContract.RawContacts.Data.MIMETYPE, ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE)
.withValue(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, name)
.build());
ops.add(ContentProviderOperation.newInsert(addCallerIsSyncAdapterParameter(ContactsContract.Data.CONTENT_URI, true))
.withValueBackReference(ContactsContract.RawContacts.Data.RAW_CONTACT_ID, rawContactInsertIndex)
.withValue(ContactsContract.RawContacts.Data.MIMETYPE,MIMETYPE)
.withValue(Data.DATA1, sourceId)
.withValue(Data.DATA3, Data4)
.build());
try {
ContentProviderResult[] results = resolver.applyBatch(ContactsContract.AUTHORITY, ops);
}
catch (Exception e) {
e.printStackTrace();
}
}
如您所见,我也在打印 name 的日志。
android.util.Log.e(TAG, "AddMultipleContact:-------------- NAME = " + name);
这里我将 contactName 和 contactNumber 发送到此方法。
我传递的名字假设是:"A.Bcdef"
但是我在电话簿中看到的名字是 "A. Bcdef"
它在句点 (.).
之后添加了额外的 space
请帮助我。我在 google 上没有得到任何解决方案,或者无法准确搜索我想要搜索的内容。
提前致谢。
我通过更改此行解决了这个问题
.withValue(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, name)
至
.withValue(ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME, name)
GIVEN_NAME 与我们作为值
传递的名称相同
还有其他参数比如
DISPLAY_NAME、GIVEN_NAME、FAMILY_NAME、前缀、MIDDLE_NAME、后缀、PHONETIC_GIVEN_NAME、PHONETIC_MIDDLE_NAME、PHONETIC_FAMILY_NAME、FULL_NAME_STYLE, PHONETIC_NAME_STYLE
我真的不知道这些到底是什么意思。
但是当我在创建联系人时将名称添加为 'Testing,123' 时,名称看起来像“123 测试”。
所以我认为它会根据 SpecialCharacters 自动思考 'middleName' 和 'lastName'。
我不知道我在将联系人插入电话簿时做错了什么。
这是要插入的代码。
public static void AddMultipleContact(Context context, String name , String numbers, String Data4){
ContentResolver resolver = context.getContentResolver();
ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
int rawContactInsertIndex = ops.size();
ops.add(ContentProviderOperation.newInsert(addCallerIsSyncAdapterParameter(ContactsContract.RawContacts.CONTENT_URI, true))
.withValue(ContactsContract.RawContacts.ACCOUNT_NAME, AccountGeneral.ACCOUNT_NAME)
.withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, AccountGeneral.ACCOUNT_TYPE)
.withValue(ContactsContract.RawContacts.AGGREGATION_MODE, ContactsContract.RawContacts.AGGREGATION_MODE_DEFAULT)
.withValue(ContactsContract.RawContacts.SOURCE_ID, sourceId)
.build());
ops.add(ContentProviderOperation.newInsert(addCallerIsSyncAdapterParameter(ContactsContract.Data.CONTENT_URI, true))
.withValueBackReference(Data.RAW_CONTACT_ID, rawContactInsertIndex)
.withValue(RawContacts.Data.MIMETYPE, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE)
.withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, numbers) // Number of the person
.withValue(ContactsContract.CommonDataKinds.Phone.TYPE, ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE)
.build()); // Type of mobile number
android.util.Log.e(TAG, "AddMultipleContact:-------------- NAME = " + name);
ops.add(ContentProviderOperation.newInsert(addCallerIsSyncAdapterParameter(ContactsContract.Data.CONTENT_URI, true))
.withValueBackReference(ContactsContract.RawContacts.Data.RAW_CONTACT_ID, rawContactInsertIndex)
.withValue(ContactsContract.RawContacts.Data.MIMETYPE, ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE)
.withValue(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, name)
.build());
ops.add(ContentProviderOperation.newInsert(addCallerIsSyncAdapterParameter(ContactsContract.Data.CONTENT_URI, true))
.withValueBackReference(ContactsContract.RawContacts.Data.RAW_CONTACT_ID, rawContactInsertIndex)
.withValue(ContactsContract.RawContacts.Data.MIMETYPE,MIMETYPE)
.withValue(Data.DATA1, sourceId)
.withValue(Data.DATA3, Data4)
.build());
try {
ContentProviderResult[] results = resolver.applyBatch(ContactsContract.AUTHORITY, ops);
}
catch (Exception e) {
e.printStackTrace();
}
}
如您所见,我也在打印 name 的日志。
android.util.Log.e(TAG, "AddMultipleContact:-------------- NAME = " + name);
这里我将 contactName 和 contactNumber 发送到此方法。
我传递的名字假设是:"A.Bcdef" 但是我在电话簿中看到的名字是 "A. Bcdef" 它在句点 (.).
之后添加了额外的 space请帮助我。我在 google 上没有得到任何解决方案,或者无法准确搜索我想要搜索的内容。
提前致谢。
我通过更改此行解决了这个问题
.withValue(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, name)
至
.withValue(ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME, name)
GIVEN_NAME 与我们作为值
传递的名称相同还有其他参数比如 DISPLAY_NAME、GIVEN_NAME、FAMILY_NAME、前缀、MIDDLE_NAME、后缀、PHONETIC_GIVEN_NAME、PHONETIC_MIDDLE_NAME、PHONETIC_FAMILY_NAME、FULL_NAME_STYLE, PHONETIC_NAME_STYLE
我真的不知道这些到底是什么意思。
但是当我在创建联系人时将名称添加为 'Testing,123' 时,名称看起来像“123 测试”。
所以我认为它会根据 SpecialCharacters 自动思考 'middleName' 和 'lastName'。