关于系统联系人数据库的操作一

  作为Android系统的联系人库,自然有其本地的存储路径,默认的存储在/data/data/com.android.providers.contacts/databases 里面有几个.db文件,其中有contact文件,某些手机厂商可能会定制不同的数据库表,这时候需要我们逐个去用SQLite去操作一下。

  其中的字段主要在data表,MIME在这里面也有相关的映射。

  应用,批量增加联系人。

  

Uri uri = Uri.parse("content://com.android.contacts/raw_contacts");
        ContentResolver resolver = getContentResolver();
        ContentValues values = new ContentValues();

        long contactid = ContentUris.parseId(resolver.insert(uri, values));
        uri = Uri.parse("content://com.android.contacts/data");
        // 添加姓名
        values.put("raw_contact_id", contactid);
        values.put("mimetype", "vnd.android.cursor.item/name");
        values.put("data2", "王超" + num);
        resolver.insert(uri, values);
        // 添加电话
        values.put("raw_contact_id", contactid);
        values.put("mimetype", "vnd.android.cursor.item/phone_v2");
        values.put("data2", "2");
        values.put("data1", "13888888888");
        resolver.insert(uri, values);

        // 添加电话
        values.put("raw_contact_id", contactid);
        values.put("mimetype", "vnd.android.cursor.item/phone_v2");
        values.put("data2", "3");
        values.put("data1", "13777777777");
        resolver.insert(uri, values);

  使用contentValue来储存,使用contentResolver来插入。注意和数据库中的字段一一对应。一个联系人最多可以存储16条电话

  上面这种是通过数据库来直接进行操作的。

 

  对数据库表的MIME的结构如下,

  vnd.android.cursor.item/email_v2

  vnd.android.cursor.item/im

  vnd.android.cursor.item/postal-address_v2

  vnd.android.cursor.item/photo

  vnd.android.cursor.item/phone_v2

  vnd.android.cursor.item/name

  vnd.android.cursor.item/organization

  vnd.android.cursor.item/nickname

  vnd.android.cursor.item/group_membership

  一般在插入的时候用的比较多。

 

  下面这种是通过Intent来插入的,需要点击保存按钮,有着很大的局限性?

  

void toContacts() {

        Intent it = new Intent(Intent.ACTION_INSERT, Uri.withAppendedPath(
                Uri.parse("content://com.android.contacts"), "contacts"));
        it.setType("vnd.android.cursor.dir/person");
        // it.setType("vnd.android.cursor.dir/contact");
        // it.setType("vnd.android.cursor.dir/raw_contact");
        // 联系人姓名
        it.putExtra(android.provider.ContactsContract.Intents.Insert.NAME, "张三");
        // // 公司
        // it.putExtra(android.provider.ContactsContract.Intents.Insert.COMPANY,
        // "北京XXXXXX公司");
        // // email
        // it.putExtra(android.provider.ContactsContract.Intents.Insert.EMAIL,
        // "123456@qq.com");
        // 手机号码
        it.putExtra(android.provider.ContactsContract.Intents.Insert.PHONE,
                "010-1234567");
        // // 单位电话
        it.putExtra(
                android.provider.ContactsContract.Intents.Insert.SECONDARY_PHONE,
                "18600001111");
        // // 住宅电话
        // it.putExtra(
        // android.provider.ContactsContract.Intents.Insert.TERTIARY_PHONE,
        // "010-7654321");
        // // 备注信息
        // it.putExtra(android.provider.ContactsContract.Intents.Insert.JOB_TITLE,
        // "名片");

        startActivity(it);
    }

  基本不怎么用。

  另外注意权限的使用,

  <uses-permission android:name="android.permission.READ_CONTACTS" />
    <uses-permission android:name="android.permission.WRITE_CONTACTS" />

  

  

posted @ 2015-12-25 14:31  likeshu  阅读(639)  评论(0编辑  收藏  举报