要添加联系人(号码,姓名),我将关注此link。我正在运行while循环来插入两个联系人。当我在设备中看到联系人时,第一次联系人被正确添加,但第二次联系人的号码正在添加到第一次联系人,即第一次联系人有两个号码。并且还创建了一个没有任何名称的新联系人,它显示了联系方式(Noname)。
while(keys.hasNext()){
i++;
String name =(String)keys.next();
debug=debug+name+jObject.getString(name);
//numbers[i]=(String)jObject.get(names[i]);
ops.add(ContentProviderOperation.newInsert(
ContactsContract.RawContacts.CONTENT_URI)
.withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, null)
.withValue(ContactsContract.RawContacts.ACCOUNT_NAME, null)
.build());
ops.add(ContentProviderOperation.newInsert(
ContactsContract.Data.CONTENT_URI)
.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
.withValue(ContactsContract.Data.MIMETYPE,
ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE)
.withValue(
ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME,
"added"+i+name).build());
ops.add(ContentProviderOperation.
newInsert(ContactsContract.Data.CONTENT_URI)
.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
.withValue(ContactsContract.Data.MIMETYPE,
ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE)
.withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, jObject.getString(name))
.withValue(ContactsContract.CommonDataKinds.Phone.TYPE,
ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE)
.build());
try {
context.getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
} catch (Exception e) {
e.printStackTrace();
Toast.makeText(context, "Exception: " + e.getMessage(), Toast.LENGTH_SHORT).show();
}
//i++;
//Thread.sleep(1000);
}
答案 0 :(得分:0)
无论何时完成联系人添加,都可以通过清除ArrayList来解决问题。