【问题标题】:Contact custom MimeType is not shown on Android versions less than 7低于 7 的 Android 版本不显示联系人自定义 MimeType
【发布时间】:2017-06-29 09:15:07
【问题描述】:

我正在尝试修改我设备上的现有联系人。

我已经按照thisguides/examples 和this 实现了所有相关的东西(AuthenticationService、AbstractThreadedSyncAdapter、SyncService、AbstractAccountAuthenticator 等)。

在装有 Android 7 的三星 Galaxy S7 上一切正常:现在我的联系人有一个新的自定义功能,如果我选择它,我的应用程序的 Activity 就会启动。这是通过创建 contacts.xml 文件并使用自定义 MIMETYPE(如上面的链接中所述)来完成的。

不幸的是,这种方法似乎不适用于运行 Android 版本

如果有人知道这件事,那将是一个很大的帮助。

提前致谢。

【问题讨论】:

  • 尝试更具体一点,在 7 之前的 android 上,您可以将您的 mimetype 添加到 RawContact 吗?如果是这样,您是否在 Contacts 应用程序中看到了自定义行?如果是这样,当你点击它时会发生什么?
  • 是的,我在联系人应用程序的每个联系人中都看到了一个自定义行。当我选择我的自定义行时,我的应用程序的一个活动就会启动。在 Android 5 中,我看不到我的自定义行。
  • 在 Android 5 中,如果您从 ContactsContract.Data 表中查询该原始联系人的数据,您会看到与您的 mimetype 对应的行吗?
  • 是的,我愿意。实际上在 Android 7 上它可以工作,我很困惑......
  • 你能把准确的数据粘贴到包含你的 mimetype 的那一行吗?如果格式正确,它至少应该出现在联系人的个人资料中

标签: android android-contacts android-contact-mimetype


【解决方案1】:
  1. 我假设“;”在您的contacts.xml 中是一个错字,否则您的项目将无法编译
  2. 尝试从您的 contacts.xml 中删除 android:detailSocialSummary 行,因为我知道的大多数示例都没有该行
  3. 试试ContactsSource,而不是ContactsAccountType,参考this
  4. mimetype 通常不指向您应用中的活动,它应该是:vnd.android.cursor.item/vnd.<your package>.<some action> 但我认为这不是您遇到的问题

【讨论】:

  • 不幸的是,我已经尝试了上述所有步骤......但感谢该链接!我认为这将非常有用:)
【解决方案2】:

检查 Mime Type 行,您必须在末尾添加 .profile 和 /vnd..profile

<?xml version="1.0" encoding="utf-8"?>
<ContactsSource
xmlns:android="http://schemas.android.com/apk/res/android">
<ContactsDataKind
    android:mimeType="vnd.android.cursor.item/vnd.com.krishna.test.profile"
    android:icon="@mipmap/ic_launcher"
    android:summaryColumn="data2"
    android:detailColumn="data3" />
</ContactsSource>

【讨论】:

    猜你喜欢
    • 2015-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多