解剖Android联系人之三,基于2.1
16lz
2021-01-23
其实到后面发现这些基本的操作就很简单了
关键是怎么和本身的应用结合起来
怎么开发出好用,好看,有特色的应用出来
前面读取联系人数据基本清楚了
简单的说就是几个表关联来查,但是Android已经帮我们封装好了这些东西,我们只需要按着这种规律去执行就行了
读完了就是写了
这个文档已经有个比较好懂的例子了,照着弄了弄就基本可以运行了
/docs/reference/android/provider/ContactsContract.RawContacts.html
当然还有这个/docs/reference/android/provider/ContactsContract.html也得看
写联系人比较关键的就是按照文档上说的Aggregation,withValueBackReference和applyBatch
这几个东西能理解点就基本可以用了
类似的代码如下:
上面这几段代码跟例子不同的就是把这些值放ContentValues里面了,然后再一起加进来,其实都是一样的,只不过我们在编写代码的时候把同一类的东西放一起,另外如果你有多个号码就用循环然后通过withValues加在后面
其他内容的写入方法也类似
当然还要注意这个ID的关联,目前都是和RAW_CONTACT_ID关联的
另外在测试的过程当中发现Android删除联系人有点奇怪,有时候无法删除,我选中一个联系人删除的时候它提示本次删除将删除多条信息,我想他说的多条信息应该是raw_contact表中的多条数据,在contact表中实际只有一条
可能是raw_contact当中他没有合并
以后再来写代码删删看
关键是怎么和本身的应用结合起来
怎么开发出好用,好看,有特色的应用出来
前面读取联系人数据基本清楚了
简单的说就是几个表关联来查,但是Android已经帮我们封装好了这些东西,我们只需要按着这种规律去执行就行了
读完了就是写了
这个文档已经有个比较好懂的例子了,照着弄了弄就基本可以运行了
/docs/reference/android/provider/ContactsContract.RawContacts.html
当然还有这个/docs/reference/android/provider/ContactsContract.html也得看
写联系人比较关键的就是按照文档上说的Aggregation,withValueBackReference和applyBatch
这几个东西能理解点就基本可以用了
类似的代码如下:
ArrayList<ContentProviderOperation> ops2 = new ArrayList<ContentProviderOperation>();rawContactInsertIndex = ops2.size();ops2.add(ContentProviderOperation.newInsert(RawContacts.CONTENT_URI).withValue(RawContacts.ACCOUNT_TYPE,null).withValue(RawContacts.ACCOUNT_NAME,null).build());ops2.add(ContentProviderOperation.newInsert(Data.CONTENT_URI).withValueBackReference(Data.RAW_CONTACT_ID,rawContactInsertIndex).withValues(getSimpleCV()).withValues(getPhoneCV()).build());public ContentValues getSimpleCV() {ContentValues cv = new ContentValues();cv.put(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE);cv.put(StructuredName.DISPLAY_NAME, "三 张");return cv;}public ContentValues getPhoneCV() {ContentValues cv = new ContentValues();cv.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);cv.put(Phone.NUMBER, "10086");cv.put(Phone.TYPE, Phone.TYPE_COMPANY_MAIN);return cv;}
上面这几段代码跟例子不同的就是把这些值放ContentValues里面了,然后再一起加进来,其实都是一样的,只不过我们在编写代码的时候把同一类的东西放一起,另外如果你有多个号码就用循环然后通过withValues加在后面
其他内容的写入方法也类似
当然还要注意这个ID的关联,目前都是和RAW_CONTACT_ID关联的
另外在测试的过程当中发现Android删除联系人有点奇怪,有时候无法删除,我选中一个联系人删除的时候它提示本次删除将删除多条信息,我想他说的多条信息应该是raw_contact表中的多条数据,在contact表中实际只有一条
可能是raw_contact当中他没有合并
以后再来写代码删删看
更多相关文章
- Eclipse与Android源码中ProGuard工具的使用(代码混淆)
- Anroid-vlc开源播放器代码编译及简单调用手把手
- 浅谈android代码保护技术_ 加固
- 《第一行代码Android》学习总结第七章 运行时权限
- 用Go语言写Android应用 (2) - 从Android的Java调用Go代码
- Android 性能优化:使用 Lint 优化代码、去除多余资源
- 关于代码家(干货集中营)共享知识点汇总系列——Android
- 《Android第一行代码》笔记