博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android开发之读写联系人
阅读量:5752 次
发布时间:2019-06-18

本文共 4522 字,大约阅读时间需要 15 分钟。

读写联系人需要用到android的ContentProvider

同时需要读和写联系人的权限

需要使用到联系人数据库中的

* raw_contacts表:

* contact_id:联系人id

* data表:联系人的具体信息,一个信息占一行
* data1:信息的具体内容
* raw_contact_id:联系人id,描述信息属于哪个联系人
* mimetype_id:描述信息是属于什么类型

* mimetypes表:通过mimetype_id到该表查看具体类型

 

1 import android.app.Activity; 2 import android.content.ContentResolver; 3 import android.content.ContentValues; 4 import android.database.Cursor; 5 import android.net.Uri; 6 import android.os.Bundle; 7 import android.view.Menu; 8 import android.view.MenuItem; 9 import android.view.View;10 11 /*12  * 读写联系人,通过系统提供的ContentProvider实现。需要读和写联系人的权限13  * 需要使用raw_contacts表、data表、mimetypes表14  */15 public class MainActivity extends Activity {16 17     private ContactBean contactBean;18 19     @Override20     protected void onCreate(Bundle savedInstanceState) {21         super.onCreate(savedInstanceState);22         setContentView(R.layout.activity_main);23         contactBean = new ContactBean();24     }25     //获取手机通讯录中的联系人信息26     public void click(View v) {27         ContentResolver cr = getContentResolver();28         //获取到raw_contacts表中的contact_id字段29         Cursor cursorContactId = cr.query(30                 Uri.parse("content://com.android.contacts/raw_contacts"),31                 new String[] { "contact_id" }, null, null, null);32         if (cursorContactId != null) {33             while (cursorContactId.moveToNext()) {34                 String contact_id = cursorContactId.getString(cursorContactId35                         .getColumnIndex("contact_id"));36                 //通过获取到的contact_id,在data表中查询具体的联系人名称,电话,email等信息。37                 Cursor cursor2 = cr.query(38                         Uri.parse("content://com.android.contacts/data"),39                         new String[] { "data1", "mimetype" },40                         "raw_contact_id=?", new String[] { contact_id }, null);41                 if (cursor2 != null) {42                     while (cursor2.moveToNext()) {43                         String data1 = cursor2.getString(cursor244                                 .getColumnIndex("data1"));45                         String mimetype = cursor2.getString(cursor246                                 .getColumnIndex("mimetype"));47                         //通过mimetypes表中字段比较,获取到联系人的email信息48                         if ("vnd.android.cursor.item/email_v2".equals(mimetype)) {49                             contactBean.setEmail(data1);50                         //通过mimetypes表中字段比较,获取到联系人的name信息51                         } else if ("vnd.android.cursor.item/name"52                                 .equals(mimetype)) {53                             contactBean.setName(data1);54                         //通过mimetypes表中字段比较,获取到联系人的phone信息55                         } else if ("vnd.android.cursor.item/phone_v2"56                                 .equals(mimetype)) {57                             contactBean.setPhone(data1);58                         }59                     }60                     System.out.println(contactBean.toString());61                 }62             }63         }64     }65     //插入数据到手机通讯录66     public void insertContact(View v){67         ContentResolver cr = getContentResolver();68         //通过字段_id在raw_contacts表中查询目前通讯录含有多少条联系人,然后在已有的联系人数目上+1就是要插入联系人的_id.69         Cursor cursor=cr.query(Uri.parse("content://com.android.contacts/raw_contacts"), new String[]{"_id"}, null, null, null);70         int num=1;71         if (cursor.moveToLast()) {72             int id=cursor.getColumnIndex("_id");73             num=id+1;74         }75         ContentValues values = new ContentValues();76         values.put("contact_id", num);77         cr.insert(Uri.parse("content://com.android.contacts/raw_contacts"), values);78         values.clear();79         values.put("data1", "二五");80         values.put("mimetype", "vnd.android.cursor.item/name");81         values.put("raw_contact_id", num);82         cr.insert(Uri.parse("content://com.android.contacts/data"), values);83         values.clear();84         values.put("data1", "12345678901");85         values.put("mimetype", "vnd.android.cursor.item/phone_v2");86         values.put("raw_contact_id", num);87         cr.insert(Uri.parse("content://com.android.contacts/data"), values);88         values.clear();89         values.put("data1", "1234@haha.com");90         values.put("mimetype", "vnd.android.cursor.item/email_v2");91         values.put("raw_contact_id", num);92         cr.insert(Uri.parse("content://com.android.contacts/data"), values);93     }94 95 }

 

转载地址:http://ufkkx.baihongyu.com/

你可能感兴趣的文章
课程设计__C++初步,C++对C的扩充
查看>>
Codeforces 758A Holiday Of Equality
查看>>
P25、面试题1:赋值运算符函数
查看>>
Ajax详细介绍
查看>>
前端页面优化技巧
查看>>
python3爬虫-爬取58同城上所有城市的租房信息
查看>>
c/c++工程中的各种文件【转】
查看>>
数组和集合List的相互转化
查看>>
Android 8.1 MTK6739修改文档
查看>>
返回一个二维整数数组中最大子数组的和
查看>>
YUV和RGB格式分析【转】
查看>>
mysql 遍历所有表并条件查询
查看>>
设计模式:适配器模式(Adapter)
查看>>
Leetcode Merge k Sorted Lists
查看>>
ZOJ - 4019 Schrödinger's Knapsack (背包,贪心,动态规划)
查看>>
做程序员你真的准备好了吗?
查看>>
博客园博客评论ajax异步提交练习
查看>>
range
查看>>
LeetCode14-最长公共前缀(水题)
查看>>
web 前端:连接mysql中文乱码问题的解决办法
查看>>