[android] 保存联系人到系统通讯录

对应着读联系人,把数据写进去,市场上的社交类应用经常会有这样的功能

  1. 向raw_contacts表中添加一个id
  2. 向data表里面添加对应的数据

获取ContentResolver对象,通过getContentResolver()方法

调用ContentResolver对象的query()方法,查询raw_contacts表,得到Cursor对象

调用Cursor对象的moveToLast()方法,游标移动到最后一行

获取到最后一行记录的contact_id,新的id就是它加上1

调用ContentResolver对象的insert(uri,values)方法,参数:values是ContentValues对象把新的id put()进去

获取到ContentResolver对象后调用insert(uri,values)方法,参数:Uri应该是data表的Uri规则,ContentValues对象的,put(key,value),”raw_contact_id”=>上面的id,”mimetype”=>”vnd.android.cursor.item/phone_v2”,”data1”=>”电话号码”

然后添加姓名,和上面一样只不过在ContentValues对象里面,

Put “mimietype”=>”vnd.android.cursor.item/name”键值对

    public void writeContacts(View v){
        ContentResolver resolver=getContentResolver();
        Uri uri=Uri.parse("content://com.android.contacts/raw_contacts");
        Uri dataUri=Uri.parse("content://com.android.contacts/data");
        //查出最后一个id
        Cursor cursor=resolver.query(uri, new String[]{"_id"}, null, null, null);
        cursor.moveToLast();
        int lastId=cursor.getInt(0);
        int newId=lastId+1;
        //插入一个联系人id
        ContentValues values=new ContentValues();
        values.put("contact_id", newId);
        resolver.insert(uri, values);
        //插入电话数据
        ContentValues dataValues=new ContentValues();
        dataValues.put("raw_contact_id", newId);
        dataValues.put("mimetype", "vnd.android.cursor.item/phone_v2");
        dataValues.put("data1", "110");
        resolver.insert(dataUri, dataValues);
        //插入姓名数据
        ContentValues data1Values=new ContentValues();
        data1Values.put("raw_contact_id", newId);
        data1Values.put("mimetype", "vnd.android.cursor.item/name");
        data1Values.put("data1", "police1");
        resolver.insert(dataUri, data1Values);

        Toast.makeText(this, "写联系人成功", 0).show();
    }
时间: 2024-10-10 04:38:01

[android] 保存联系人到系统通讯录的相关文章

如何保存联系人到系统通讯录(android)

1 效果演示: 2 代码演示:

android编程,如何删除通讯录中的联系人

============问题描述============ 保存联系人的是一个有很多张表的数据库,通过什么方法删除一个联系人呢?很想知道android的系统代码是怎么实现的.或者还有什么简单的好方法. ============解决方案1============ Cursor contactsCur = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null); while(contactsCur.moveToNe

iOS开发--系统通讯录的访问与添加联系人

公司项目有访问通讯录的需求,所以开始了探索之路.从开始的一无所知,到知识的渐渐清晰.这一切要感谢广大无私分享的 “coder”,注:我是尊称的语气! 苹果提供了访问系统通讯录的框架,以便开发者对系统通讯录进行操作.(此demo为纯代码),想要访问通讯录,需要添加AddressBookUI.framework和AddressBook.framework两个框架,添加的地点这里就不在赘述了.在控制器内部首先import两个头文件,<AddressBook/AddressBook.h> 和 <

IOS获取系统通讯录联系人信息

先导入AddressBook.framework先 然后引用  #import <AddressBook/AddressBook.h> 一.权限注册 随着apple对用户隐私的越来越重视,IOS系统的权限设置也更加严格,在获取系统通讯录之前,我们必须获得用户的授权.权限申请代码示例如下: #pragma mark - 注册权限 - (void)contacts { //这个变量用于记录授权是否成功,即用户是否允许我们访问通讯录 int __block tip = 0; //声明一个通讯簿的引用

怎么调用系统通讯录并向被选中联系人发送短信

每做一个项目都会有收获,前提是要在这个项目上付出努力的! 好吧,如今讲一下:怎么通过调用系统通讯录,当你点击联系人姓名时,跳转到向其发送短信的页面<收件人是被点中的联系人,短信已自己主动编辑>. 看看图片效果: 以下看一下具体代码: Uri result = data.getData(); String phoneName = getPhoneContacts(result); Log.d("phone", "---------->phoneName==&q

Android 增,删,改,查 通讯录中的联系人

一.权限 操作通讯录必须在AndroidManifest.xml中先添加2个权限, <uses-permission android:name="android.permission.READ_CONTACTS"></uses-permission> <uses-permission android:name="android.permission.WRITE_CONTACTS"></uses-permission>

向Android模拟器中批量导入通讯录联系人

使用adb命令向Android模拟器中批量导入通讯录联系人的方法: 使用adb提供的命令, 可以非常方便地从PC中将通讯录批量导入android模拟器中. 首先要先准备好固定格式的vcf文件, 该文件即android中的通讯录存储格式文件. 格式如下: BEGIN:VCARD VERSION:2.1 N:;Qiqi;;; FN:Qiqi TEL;HOME:7474 EMAIL;HOME:qiqi.com ADR;HOME:;;Qiqi;;;; END:VCARD BEGIN:VCARD VERS

iOS -------- 应用程序引用系统通讯录

转自:http://www.cnblogs.com/ygm900/p/3472288.html 由于ios系统对用户隐私的控制,第三方应用程序只能通过苹果官方接口调用系统通讯录,不能像android那样直接操作通讯录数据库.     一般地,使用系统自带通讯录的方法有两种,一种是直接将整个通讯录引入到应用程序,另一种是逐条读取通讯录中的每一条联系人信息.下面我们就一一详解. 1 直接引用整个通讯录 使用的类:ABPeoplePickerNavigationController方法: 在Local

Android操作联系人

Android系统中的联系人也是通过ContentProvider来对外提供数据的,我们这里实现获取所有联系人.通过电话号码获取联系人.添加联系人.使用事务添加联系人. 获取所有联系人 1. Android系统中的联系人也是通过ContentProvider来对外提供数据的 2. 数据库路径为:/data/data/com.android.providers.contacts/database/contacts2.db 3. 我们需要关注的有3张表 raw_contacts:其中保存了联系人id