照着给的源码写都不行,试了好久了...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);
    }
}