照着给的源码写都不行,试了好久了...LogCat得到的错误是:
java.lang.NullPointerException
at android.os.Parcel.readException(Parcel.java:1253)
at android.database.Database.Utils.readExceptionFromParcel(DatabaseUtils.java:160)
at android.database.DatabaseUtils.readExceptionWithOperationApplicationExceptionFromParvel(DatabaseUtils.java:137)
at android.content.ContentProviderProxy.applyBatch(ContentProviderNative.java:449)还有个用ContentResolver的insert方法插入联系人的办法试了,可以成功插入联系人。
代码如下,复制的源码,很清晰。
protected void test3() {
ArrayList<ContentProviderOperation> ops =
new ArrayList<ContentProviderOperation>();
ContentProviderOperation.Builder op =
ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI);
ops.add(op.build());
op =
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, "Tencoin1");
ops.add(op.build());
op =
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, "222222222")
.withValue(ContactsContract.CommonDataKinds.Phone.TYPE, 2);
ops.add(op.build());
op =
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 protected]")
.withValue(ContactsContract.CommonDataKinds.Email.TYPE, 1);
op.withYieldAllowed(true);
ops.add(op.build());
try { getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
} catch (Exception e) {
Context ctx = getApplicationContext();
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(ctx, "创建失败", duration);
toast.show();
Log.e("^____^", "Exception encountered while inserting contact: " + e);
}
}
java.lang.NullPointerException
at android.os.Parcel.readException(Parcel.java:1253)
at android.database.Database.Utils.readExceptionFromParcel(DatabaseUtils.java:160)
at android.database.DatabaseUtils.readExceptionWithOperationApplicationExceptionFromParvel(DatabaseUtils.java:137)
at android.content.ContentProviderProxy.applyBatch(ContentProviderNative.java:449)还有个用ContentResolver的insert方法插入联系人的办法试了,可以成功插入联系人。
代码如下,复制的源码,很清晰。
protected void test3() {
ArrayList<ContentProviderOperation> ops =
new ArrayList<ContentProviderOperation>();
ContentProviderOperation.Builder op =
ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI);
ops.add(op.build());
op =
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, "Tencoin1");
ops.add(op.build());
op =
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, "222222222")
.withValue(ContactsContract.CommonDataKinds.Phone.TYPE, 2);
ops.add(op.build());
op =
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 protected]")
.withValue(ContactsContract.CommonDataKinds.Email.TYPE, 1);
op.withYieldAllowed(true);
ops.add(op.build());
try { getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
} catch (Exception e) {
Context ctx = getApplicationContext();
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(ctx, "创建失败", duration);
toast.show();
Log.e("^____^", "Exception encountered while inserting contact: " + e);
}
}
解决方案 »
- ExpandableListView 数据更新与界面刷新的同步问题
- Android操作Excel文件的问题。。求解。
- sdk tools 更新后 emulator 奇怪的问题
- / 请教一个简单的小问题、
- 如何把RSA公钥生成的二进制文件弄成so库
- 关于Testin等云测试自动化平台
- 菜鸟提问问题
- 哪位朋友帮忙给个adt-bundle-windows-x86-20140624资源
- 新手求帮助
- androidStudio升级到3.1之后Genarate Signed APK报错
- 将activity设置成theme.Dailog之后,如何设置这个activity显示的大小,位置等属性
- 关于android智能电视
ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI);
改成这样就正常了:
ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI)
.withValue(RawContacts.ACCOUNT_TYPE,null)
.withValue(RawContacts.ACCOUNT_NAME,null);