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");
Другие вопросы по тегам