【问题标题】:Android, Insert RawContact not showing on Sony XperiaAndroid,Sony Xperia 上未显示插入 RawContact
【发布时间】:2015-09-15 06:56:09
【问题描述】:

我正在使用 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 联系人应用程序中,新插入的 (Raw)-Contact 没有显示。我已在联系人应用程序的过滤器设置中启用所有组等。

【问题讨论】:

  • ACCOUNT_TYPE设置为getActivity().getPackageName()的目的是什么?
  • 来自 google 文档:为确保唯一性,应根据 Java 包命名约定选择新帐户类型。因此,Google 帐户的类型为“com.google”developer.android.com/reference/android/provider/…
  • 但是您想将联系人添加到“Google 帐户”,不是吗(以便联系人应用程序可以看到它)?

标签: android sony sony-xperia


【解决方案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");

在摩托罗拉或 Google Nexus 等其他设备上,您可以指定一个不存在的自定义帐户,例如:

p.put(ContactsContract.RawContacts.ACCOUNT_TYPE, "my.app.name");
p.put(ContactsContract.RawContacts.ACCOUNT_NAME, "APP NAME");

【讨论】:

  • 这太糟糕了。当我想使用我的自定义帐户时:未显示联系人并且无法保存名称。 (仅限索尼)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多