【问题标题】:Custom title for links on contacts联系人链接的自定义标题
【发布时间】:2021-08-01 11:30:01
【问题描述】:
  • 我正在开发一个应用程序,它将用户社交网络链接保存在Android OS 提供的默认contacts 应用程序中。
  • 我可以在应用程序中保存链接,但我无法自定义标题,您可以查看默认联系人应用程序的下图:

  • 我现在使用下面的代码来保存linkedin url 作为示例,但我想将它保存为linkedin 标题而不是网站 和linkedin 图标。

当前代码块:

    if (loginResponseData.getLinkedin() != null) {
         ContentValues values = new ContentValues();
         values.put(ContactsContract.Data.RAW_CONTACT_ID, contactid);
         values.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Website.CONTENT_ITEM_TYPE);
         values.put(ContactsContract.CommonDataKinds.Website.DATA, loginResponseData.getLinkedin()); 
            fragmentActivity.getContentResolver().insert(android.provider.ContactsContract.Data.CONTENT_URI, values);
}

【问题讨论】:

    标签: java android android-contacts


    【解决方案1】:

    对于您要持久保存到数据库中的每种数据类型,您应该进入文档并检查它支持哪些字段,您可能希望在插入调用中填写它们。

    您可以在这里查看:https://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.Website

    CommonDataKinds.Website 支持 URL、TYPE 和 LABEL 字段。 在联系人应用程序中显示在 url 下方的文本是标签字段。

    所以你的代码看起来像这样:

    ContentValues values = new ContentValues();
    values.put(Data.RAW_CONTACT_ID, contactid);
    values.put(Data.MIMETYPE, Website.CONTENT_ITEM_TYPE);
    values.put(Website.URL, loginResponseData.getLinkedin()); 
    values.put(Website.TYPE, Website.TYPE_CUSTOM); // when this is set to CUSTOM, the contacts app will display the label field
    values.put(Website.LABEL, "Linkedin"); 
    
    contentResolver.insert(android.provider.ContactsContract.Data.CONTENT_URI, values);
    

    【讨论】:

    • 我试过你的代码,但它仍然显示 网站
    • 如果您已经在该原始联系人中拥有该链接,则需要先将其删除,然后再插入。该代码不会更新现有网站,只会插入新行。
    • 是的。我在删除联系人后尝试过,但没有成功。
    • 当您通过更新“标签”字段从联系人应用手动编辑该联系人时,您是否能够更改该文本?
    • 我可以更新 workhome 标签名称,从联系人应用程序设置任何自定义标签。但是对于网站,没有可用的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-18
    • 2016-09-05
    • 2015-08-01
    • 2016-06-06
    相关资源
    最近更新 更多