在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,对吧?那么哪一个是我应该更新的原始联系人?
如果你想说“这取决于你”:这对我来说都是一样的。我只想把我的数据放在任何地方,在任何可以保存数据的原始联系人中。
答案 0 :(得分:0)
没有完美的答案。但最简单,也可能是最正确的是使用谷歌帐户。
您可以在ACCOUNT_TYPE上选择Google帐户的“com.google”。由于手机上可以有很多谷歌帐户,只需选择第一个(或联系最多的人)。
答案 1 :(得分:0)
您应该浏览所有原始联系人并找到要更新的最佳。您可以过滤掉Facebook等只读联系人(RAW_CONTACT_IS_READ_ONLY)。 您可能希望查找已包含要更新的字段的原始联系人。如果没有这样的话,那么除非有任何可写帐户,否则请使用Google帐户。根据情况考虑写入所有可写的。