四大组件 — ContentProvider - 手机电话簿

    xiaoxiao2021-03-25  86

    手机电话簿 通讯录应用是Android自带的应用程序,我们看到此应用的时候,可能只认为这是一个应用,用数据库存储数据,但是实际上不是这样的。 通讯录是ContentProvider的应用,通讯录由两部分组成: (1)com.android.providers.contacts的ContentProvider:真正存储数据的ContentProvider (2)com.android.contacts:运用ContentResolver获取数据的图形用户界面; SQLite 数据库表 主    表 表名:raw_contacts URI :ContactsContract.RawContacts.CONTENT_URI 数据表 表名:data URI :ContactsContract.Data.CONTENT_URI 类型表 表名:mimetypes 电话:vnd.android.cursor.item/phone_v2 姓名:vnd.android.cursor.item/name 邮件:vnd.android.cursor.item/email_v2 地址:vnd.android.cursor.item/postal-address_v2 组织:vnd.android.cursor.item/organization 照片:vnd.android.cursor.item/photo Phone表 表名:phone URI :ContactsContract.CommonDataKinds.Phone.CONTENT_URI 查询 查询 主表中的 id 与 name 两个字段值,phone表中的number值。 查询 主表 数据:        查询字段: ID       值:ContactsContract.RawContacts._ID Name值:ContactsContract.RawContacts.DISPLAY_NAME_ALTERNATIVE 查询 Phone表 数据:        查询字段: Number值:ContactsContract.CommonDataKinds.Phone.NUMBER 添加 需要添加 主表id,以及 data表中的各项数据,所以需要用到两个Uri对象。 向 主表添加一个 空数据,从而得到最新 ID。 Uri insert = res.insert(主表, new ContentValues()); long newId = ContentUris.parseId(insert); 向 data数据表 添加姓名 ContentValues nameValue=new ContentValues(); nameValue.put("raw_contact_id", newId); nameValue.put("mimetype","vnd.android.cursor.item/name"); nameValue.put("data1","用户姓名"); res.insert(uri_data,nameValue); 向 data数据表 添加号码 ContentValues phoneValue = new ContentValues(); phoneValue.put("raw_contact_id", newId); phoneValue.put("mimetype","vnd.android.cursor.item/phone_v2"); phoneValue.put("data1","手机号码"); res.insert(uri_data, phoneValue); 向 data数据表 添加邮箱 ContentValues emailValue = new ContentValues(); emailValue.put("raw_contact_id", newId); emailValue.put("mimetype","vnd.android.cursor.item/email_v2"); emailValue.put("data1","邮箱地址"); res.insert(uri_data, emailValue); 删除 因为数据存放在多张表中,并涉及到一对多的关系,所以我们需要先行删除多表中的数据,在删除主表中的数据。 删除 data数据表 中的数据 匹配字段: ID 值:raw_contact_id res.delete(uri_data,"raw_contact_id="+pb.getId(),null); 删除 主表 中的数据 ID 值:_id res.delete(uri_contast,"_id="+pb.getId(),null); 修改
    转载请注明原文地址: https://ju.6miu.com/read-19530.html

    最新回复(0)