首先添加姓名为 Family name 的联系人
Add contact with Family name first
考虑下面的代码。例如,如果 displayName
= "Squirrel, Rocky J." 那么它在联系人中显示为 "Rocky J. Squirrel"。我想按原样输入,即 "Squirrel, Rocky J." 但是在 docs 中,我不认为这是一个选项。
我该怎么做?
if (displayName != null) {
contentProviderOperationArrayList.add(ContentProviderOperation.newInsert(
ContactsContract.Data.CONTENT_URI)
.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
.withValue(ContactsContract.Data.MIMETYPE,
ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE)
.withValue(
ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME,
displayName)
.build());
}
编辑:
按照 marmor 的建议更改设置后......如果我有 "Leo Tolstoy" 和 "Langston Hughes"
我希望联系人列表显示为:
H
休斯·兰斯顿
T
托尔斯泰,里奥
相反,我看到了(在三星 SM-T530 上)
L
休斯·兰斯顿
托尔斯泰,里奥
(在 Pixel C 上)
H
兰斯顿休斯
T
列夫·托尔斯泰
因此,显示不仅看起来依赖于设备且令人困惑,而且似乎无法通过编程方式控制。
当您添加联系人时(以编程方式或通过联系人编辑屏幕),Contacts
内容提供程序解析插入的姓名,并尝试将其拆分为姓名字段:prefix
, first
, middle
, last
, suffix
, nickname
.
之后,名称可以在 Contacts
/People
应用程序中显示为“First Last
”或“Last, First
”,具体取决于设置。
如果要切换名称显示选项:
In the stock Contacts
app, click on menu > settings
> Name
Format
> select Last name first
.
更新
系统联系人应用程序在设备之间可能略有不同,但大多数在上述设置页面中至少显示两个选项:Sort by
和 Name format
。
根据您在上面给出的示例,我认为您希望将两个设置都更改为 Last Name
。
关于以编程方式更改这些值,这可能是可行的,具体取决于您的应用具有的权限,如下所示:
Settings.system.putInt(getContentResolver(),"android.contacts.SORT_ORDER", value);
其中 value
是 1
或 2
。
阅读此内容以了解所需的权限:https://developer.android.com/reference/android/provider/Settings.System.html#canWrite(android.content.Context)
考虑下面的代码。例如,如果 displayName
= "Squirrel, Rocky J." 那么它在联系人中显示为 "Rocky J. Squirrel"。我想按原样输入,即 "Squirrel, Rocky J." 但是在 docs 中,我不认为这是一个选项。
我该怎么做?
if (displayName != null) {
contentProviderOperationArrayList.add(ContentProviderOperation.newInsert(
ContactsContract.Data.CONTENT_URI)
.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
.withValue(ContactsContract.Data.MIMETYPE,
ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE)
.withValue(
ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME,
displayName)
.build());
}
编辑:
按照 marmor 的建议更改设置后......如果我有 "Leo Tolstoy" 和 "Langston Hughes"
我希望联系人列表显示为:
H
休斯·兰斯顿
T
托尔斯泰,里奥
相反,我看到了(在三星 SM-T530 上)
L
休斯·兰斯顿
托尔斯泰,里奥
(在 Pixel C 上)
H
兰斯顿休斯
T
列夫·托尔斯泰
因此,显示不仅看起来依赖于设备且令人困惑,而且似乎无法通过编程方式控制。
当您添加联系人时(以编程方式或通过联系人编辑屏幕),Contacts
内容提供程序解析插入的姓名,并尝试将其拆分为姓名字段:prefix
, first
, middle
, last
, suffix
, nickname
.
之后,名称可以在 Contacts
/People
应用程序中显示为“First Last
”或“Last, First
”,具体取决于设置。
如果要切换名称显示选项:
In the stock
Contacts
app, click on menu >settings
>Name Format
> selectLast name first
.
更新
系统联系人应用程序在设备之间可能略有不同,但大多数在上述设置页面中至少显示两个选项:Sort by
和 Name format
。
根据您在上面给出的示例,我认为您希望将两个设置都更改为 Last Name
。
关于以编程方式更改这些值,这可能是可行的,具体取决于您的应用具有的权限,如下所示:
Settings.system.putInt(getContentResolver(),"android.contacts.SORT_ORDER", value);
其中 value
是 1
或 2
。
阅读此内容以了解所需的权限:https://developer.android.com/reference/android/provider/Settings.System.html#canWrite(android.content.Context)