【问题标题】:Update raw contact in Android when you have only the contact id当您只有联系人 ID 时更新 Android 中的原始联系人
【发布时间】:2012-01-30 19:12:23
【问题描述】:

在 Android 中,当用户使用联系人选择器选择一个联系人时,您只会获得 CONTACT_ID 字段。但是要更新一些联系信息,您需要编辑原始联系数据。为此,您必须知道 RAW_CONTACT_ID。到目前为止这是正确的吗?

那么,当您只有 CONTACT_ID 时,如何获得更新数据所需的 RAW_CONTACT_ID?像这样……?

String[] projection = new String[] { ContactsContract.RawContacts._ID };
String where = ContactsContract.RawContacts.CONTACT_ID + " = ?";
String[] selection = new String[] { String.valueOf(contactId) };
Cursor c = getContentResolver().query(ContactsContract.RawContacts.CONTENT_URI, projection, where, selection, null);

但这样您将获得所有属于所选用户的 RAW_CONTACT_ID,对吧?那么哪个是我应该更新的原始联系人?

如果你想说“这取决于你”:对我来说都是一样的。我只想将我的数据任何地方放在任何可以保存数据的原始联系人中。

【问题讨论】:

    标签: android contacts android-contacts contactscontract


    【解决方案1】:

    没有完美的答案。但最简单,可能也是最正确的方法是使用 google 帐户。

    您可以通过选择ACCOUNT_TYPE 来执行此操作,这将是 google 帐户的“com.google”。由于手机上可能有多个 Google 帐户,只需选择第一个(或联系人最多的那个)即可。

    【讨论】:

    • 谢谢!是否始终有一个 Google 帐户?或者查询不会找到任何 Google 原始联系人?我想并不总是一个,对吧?
    • 不会总是有一个,不。但假设您正在开发的应用程序是从 android 市场下载的,您可以相当肯定会有一个。 (因为您必须登录才能使用市场)
    • 但是当您将联系人与 Facebook 同步时,例如,并且没有其他原始联系人可以合并 Facebook 联系人,那么您可能会拥有一个仅包含 Facebook 原始联系人的联系人,而它没有没有任何 Google 原始联系人。不是这样吗?
    【解决方案2】:

    您应该浏览所有原始联系人并找到最好的一个来更新。您可以过滤掉只读联系人,例如 Facebook (RAW_CONTACT_IS_READ_ONLY)。 可能您想查找已包含要更新的字段的原始联系人。如果不存在,则使用 Google 帐户(如果存在),否则任何可写帐户。根据情况考虑写入所有可写的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-13
      • 2011-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多