照着给的源码写都不行,试了好久了...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);
}
}
解决方案 »
- Android开发环境的搭建(jdk+eclipse+android sdk)
- 求解。。。用java在Andorid平台上的塔防小游戏,路径怎么计算最好。
- android获取短信内容随便怎么设置uri,都会获得所有短信
- 安装了SDK模拟器。。。4.03可以上网,2.2却不能?
- android视频传输的一个问题
- Android如何转到此界面---有图有真相
- android Broadcast
- 线程中Cursor没有关闭,线程结束后Cursor是不是自动关闭了?
- 全局菜单的实现问题
- 小弟求大神解惑关于安卓CTS测试
- 将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);