【问题标题】:Add contact with Family name first首先添加姓氏的联系人
【发布时间】:2017-01-10 00:05:50
【问题描述】:

考虑下面的代码。例如,如果displayName = "松鼠,洛基 J."然后它在联系人中显示为“Rocky J. Squirrel”。我想按原样输入,即“松鼠,洛基 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
休斯,兰斯顿
托尔斯泰,里奥

(在像素 C 上)

H
兰斯顿休斯
T
托尔斯泰

因此,显示不仅看起来与设备相关且令人困惑,而且似乎无法以编程方式控制。

【问题讨论】:

标签: android android-contacts


【解决方案1】:

当您添加联系人(以编程方式或通过联系人编辑屏幕)时,Contacts content-provider 会解析插入的姓名,并尝试将其拆分为姓名字段: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)

【讨论】:

    猜你喜欢
    • 2012-10-11
    • 2011-11-24
    • 1970-01-01
    • 2017-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-31
    相关资源
    最近更新 更多