添加新联系人(安卓)
问题描述:
我尝试添加使用此代码新联系人:添加新联系人(安卓)
try{
ArrayList<ContentProviderOperation> ops = new ArrayList<android.content.ContentProviderOperation>();
if(!name.equals("")) {
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, name)
.build());
}
if(!number.equals("")){
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, number)
.withValue(ContactsContract.CommonDataKinds.Phone.TYPE,ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE)
.build());
}
if(!email.equals("")){
ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
.withValue(ContactsContract.Data.MIMETYPE,ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE)
.withValue(ContactsContract.CommonDataKinds.Email.DATA, email)
.withValue(ContactsContract.CommonDataKinds.Email.TYPE, ContactsContract.CommonDataKinds.Email.TYPE_WORK)
.build());
}
context.getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
}
} catch (Exception e) {
Toast.makeText(context,e.toString(),Toast.LENGTH_SHORT).show();
}
我还指定在清单中的WRITE_CONTACTS
许可,我要求它在运行时。
然而,尽管它不返回任何错误,不添加联系人...
我在做什么不好?
答
我终于找到了答案。
这是需要尝试存储任何东西之前,包括这个查询:
ops.add(ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI)
.withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, null)
.withValue(ContactsContract.RawContacts.ACCOUNT_NAME, null)
.build());
如果您的Android版本比棒棒糖你需要包括运行时的权限更大。或者您可以授予这样的权限**设置>应用程序>选择您的应用程序>查看权限>切换权限*** –
权限也授予在运行时... –