1. withValueBackReference

    protected void createContactEntry() {               ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();        ops.add(ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI)                .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, mSelectedAccount.getType())                .withValue(ContactsContract.RawContacts.ACCOUNT_NAME, mSelectedAccount.getName())                .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, "小明")                .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, "10086")                .withValue(ContactsContract.CommonDataKinds.Phone.TYPE, "1")                .build());        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, "google@sina.com")                .withValue(ContactsContract.CommonDataKinds.Email.TYPE, "1")                .build());        try {            getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);        } catch (Exception e) {            Log.e(TAG, "Exceptoin encoutered while inserting contact: " + e);        }    }


这里withValueBackReference("column","index");第一个参数对应于数据库中的列,第二个参数代表着回引的值。这个比较抽象,也就是说,批量操作数据库时,index表示第几个操作返回结果的id或是数量。

例如:上面的代码withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0);这个表示将ContactsContract.Data.RAW_CONTACT_ID的值设为

ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI) .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, mSelectedAccount.getType()) .withValue(ContactsContract.RawContacts.ACCOUNT_NAME, mSelectedAccount.getName()) .build()

这个插入操作被执行完毕以后的uri中取的id的值,假设上面返回值是"content://com.android.contacts/raw_contacts/5"这里就是取5这个值,这里是插入操作。

当然如果是更新操作,返回的结果就是更新的列数,ContactsContract.Data.RAW_CONTACT_ID的值也就是更新的列数。、

未完。。待续。。。

更多相关文章

  1. MySQL: 基于 android 远程连接
  2. Android(安卓)开发指南 翻译 User Interfaces -- Action Bar
  3. Android之2D图形(圆、直线、点)工具类 (持续更新)
  4. 浅谈Android(安卓)Architecture Components
  5. Android版本检测与更新
  6. Android(安卓)自动更新代码
  7. Android(安卓)报错 android.view.ViewRootImpl$CalledFromWrongT
  8. 三步搞定:Vue.js调用Android原生操作
  9. Android【防抖操作的工具类】

随机推荐

  1. 闹钟界面会先出现解锁界面
  2. Android开发笔记(一百二十二)循环器视图Rec
  3. android studio 使用github完整保存
  4. Android学习笔记二十二之ViewFlipper&&Ad
  5. android LocalBroadcastManager的使用
  6. 2016,这些 Android 技术会很火
  7. Android自定义TabLayout后ViewPager与Tab
  8. Android Dialog style属性
  9. Android选项卡的几种实现方法
  10. ScrollView包含其他可scroll的view时保持