我正在使用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未显示。我已在联系人应用中的过滤器设置中启用了所有组等。
答案 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");