Android, Вставьте RawContact не отображается на Sony Xperia
Я использую ContactsContract для вставки RawContacts в мое приложение. Следующий код (и показывает вставленный контакт в приложении контактов) работает на всех устройствах, но не на Sony Xperia (Android 4.4.4).
ContentValues p=new ContentValues();
p.put(ContactsContract.RawContacts.ACCOUNT_TYPE, getActivity().getPackageName());
p.put(ContactsContract.RawContacts.ACCOUNT_NAME,
DataHelper.getAppName(getActivity()));
Uri rowcontact = null;
long rawcontactid = 0;
try {
rowcontact = getActivity().getContentResolver().insert(ContactsContract.RawContacts.CONTENT_URI, p);
rawcontactid = ContentUris.parseId(rowcontact);
Log.d(DEBUG_KEY, "CONTACT ADDED: " + rawcontactid);
}catch(Exception e){
Log.d(DEBUG_KEY, "CONTACT ADDED FAILED 1: " + e.getMessage());
return "";
}
На устройстве Sony Xperia нет ошибок или исключений. На консоли отображается правильный CONTACT-ADDED-ID. Но в приложении android contact недавно вставленный (Raw)-Contact не отображается. Я включил все группы и т. Д. В настройках фильтра в приложении контактов.
1 ответ
Хорошо. Проблема решена. На устройствах Sony Xperia вы должны
(1) Укажите существующий (Google) аккаунт
p.put(ContactsContract.RawContacts.ACCOUNT_TYPE, "com.google");
p.put(ContactsContract.RawContacts.ACCOUNT_NAME, "google_account_username_on_device");
или (2) не указывайте детали типа учетной записи
//p.put(ContactsContract.RawContacts.ACCOUNT_TYPE, "com.google");
//p.put(ContactsContract.RawContacts.ACCOUNT_NAME, "google_account_username_on_device");
На других устройствах, таких как Motorola или Google Nexus, вы можете указать несуществующую пользовательскую учетную запись, например:
p.put(ContactsContract.RawContacts.ACCOUNT_TYPE, "my.app.name");
p.put(ContactsContract.RawContacts.ACCOUNT_NAME, "APP NAME");