请考虑以下代码。例如,如果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"和"兰斯顿休斯"
我希望将联系人列表视为:
ħ
休斯,兰斯顿
Ť
托尔斯泰,狮子座
相反,我看到(在三星SM-T530上)
→
休斯,兰斯顿
托尔斯泰,狮子座
(在Pixel C上)
ħ
兰斯顿休斯郎
Ť
利奥托尔斯泰
因此,不仅显示器似乎依赖于设备而且令人困惑,它似乎无法以编程方式进行控制。
答案 0 :(得分:1)
当您添加联系人(以编程方式或通过联系人编辑屏幕)时,Contacts
内容提供程序会解析插入的名称,并尝试将其拆分为名称字段:prefix
, first
,middle
,last
,suffix
,nickname
。
之后,Contacts
/ People
应用中的名称可以显示为" First Last
"或" Last, First
",取决于设置。
如果要切换名称显示选项:
在库存
Contacts
应用中,点击菜单>settings
>Name Format
>选择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)