Android,插入RawContact没有在Sony Xperia上显示

时间:2015-09-15 06:56:10

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

1 个答案:

答案 0 :(得分:0)

确定。问题解决了。在Sony Xperia设备上,您必须

(1)指定现有(谷歌)帐户

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");