首先添加与姓氏联系

时间:2017-01-05 18:22:07

标签: android android-contacts

请考虑以下代码。例如,如果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上)

ħ
兰斯顿休斯郎 Ť
利奥托尔斯泰

因此,不仅显示器似乎依赖于设备而且令人困惑,它似乎无法以编程方式进行控制。

1 个答案:

答案 0 :(得分:1)

当您添加联系人(以编程方式或通过联系人编辑屏幕)时,Contacts内容提供程序会解析插入的名称,并尝试将其拆分为名称字段:prefixfirstmiddlelastsuffixnickname

之后,Contacts / People应用中的名称可以显示为" First Last"或" Last, First ",取决于设置。

如果要切换名称显示选项:

  

在库存Contacts应用中,点击菜单> settings> Name Format>选择Last name first

<强>更新

系统联系人应用可能会在设备之间略有不同,但大多数设置在上述设置页面中至少显示两个选项:Sort byName format

根据您上面提供的示例,我们认为您希望将这两个设置更改为Last Name

关于以编程方式更改这些值,这可能是可能的,具体取决于您的应用的权限,如下所示:

Settings.system.putInt(getContentResolver(),"android.contacts.SORT_ORDER", value);

其中value12。 阅读本文以了解所需的权限:https://developer.android.com/reference/android/provider/Settings.System.html#canWrite(android.content.Context)