Android简单联系人操作
2012-05-08 19:05
489 查看
Android中的Contacts联系人通过ContentProvider对外提供联系人数据及操作接口。
下面通过简单例子,来看看有关联系人的基本操作。
主Activity:
下面通过简单例子,来看看有关联系人的基本操作。
主Activity:
public class MainActivity extends ListActivity { private ArrayList<String> list = new ArrayList<String>(); private ArrayAdapter adapter; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); insert(); queryByName(); queryAll(); adapter = new ArrayAdapter(this,R.layout.main,list); this.setListAdapter(adapter); } //查询所有联系人 public void queryAll() { ContentResolver resolver = this.getContentResolver(); Uri uri = Uri.parse("content://com.android.contacts/contacts"); Cursor idCursor = resolver.query(uri, new String[] { "_id" }, null, null, null); while (idCursor.moveToNext()) { //获取到raw_contacts表中的id int id = idCursor.getInt(0); //根据获取到的ID查询data表中的数据 uri = Uri.parse("content://com.android.contacts/contacts/" + id + "/data"); Cursor dataCursor = resolver.query(uri, new String[] { "data1", "mimetype" }, null, null, null); StringBuilder sb = new StringBuilder(); sb.append("id=" + id); //查询联系人表中的 while (dataCursor.moveToNext()) { String data = dataCursor.getString(0); String type = dataCursor.getString(1); if ("vnd.android.cursor.item/name".equals(type)) sb.append(", name=" + data); else if ("vnd.android.cursor.item/phone_v2".equals(type)) sb.append(", phone=" + data); else if ("vnd.android.cursor.item/email_v2".equals(type)) sb.append(", email=" + data); } list.add(sb.toString()); } } //根据电话号码查询联系人名称 private void queryByName() { ContentResolver resolver = this.getContentResolver(); Uri uri = Uri.parse("content://com.android.contacts/data/phones/filter/1234567"); Cursor c = resolver.query(uri, new String[] { "display_name" }, null, null, null); while (c.moveToNext()) { System.out.println(c.getString(0)); } } //添加联系人 private void insert() { ContentResolver resolver = this.getContentResolver(); Uri uri = Uri.parse("content://com.android.contacts/raw_contacts"); ContentValues values = new ContentValues(); //向raw_contacts插入一条除了ID之外, 其他全部为NULL的记录, ID是自动生成的 long id = ContentUris.parseId(resolver.insert(uri, values)); //添加联系人姓名 uri = Uri.parse("content://com.android.contacts/data"); values.put("raw_contact_id", id); values.put("data2", "zhang xiangdong"); values.put("mimetype", "vnd.android.cursor.item/name"); resolver.insert(uri, values); //添加联系人电话 values.clear(); // 清空上次的数据 values.put("raw_contact_id", id); values.put("data1", "1392315698"); values.put("data2", "2"); values.put("mimetype", "vnd.android.cursor.item/phone_v2"); resolver.insert(uri, values); //添加联系人邮箱 values.clear(); values.put("raw_contact_id", id); values.put("data1", "345672@qq.com"); values.put("data2", "1"); values.put("mimetype", "vnd.android.cursor.item/email_v2"); resolver.insert(uri, values); } //使用事务添加联系人 private void insertWithBatch() throws Exception { ContentResolver resolver = this.getContentResolver(); ArrayList<ContentProviderOperation> operations = new ArrayList<ContentProviderOperation>(); //插入id ContentProviderOperation operation1 = ContentProviderOperation .newInsert(Uri.parse("content://com.android.contacts/raw_contacts")) .withValue("_id", null) .build(); operations.add(operation1); //插入姓名 ContentProviderOperation operation2 = ContentProviderOperation .newInsert(Uri.parse("content://com.android.contacts/data")) .withValueBackReference("raw_contact_id", 0) .withValue("data2", "JOhn") .withValue("mimetype", "vnd.android.cursor.item/name") .build(); operations.add(operation2); //插入联系人电话 ContentProviderOperation operation3 = ContentProviderOperation .newInsert(Uri.parse("content://com.android.contacts/data")) .withValueBackReference("raw_contact_id", 0) .withValue("data1", "135124689745") .withValue("data2", "2") .withValue("mimetype", "vnd.android.cursor.item/phone_v2") .build(); operations.add(operation3); //插入邮箱 ContentProviderOperation operation4 = ContentProviderOperation .newInsert(Uri.parse("content://com.android.contacts/data")) .withValueBackReference("raw_contact_id", 0) .withValue("data1", "123568974@qq.com") .withValue("data2", "2") .withValue("mimetype", "vnd.android.cursor.item/email_v2") .build(); operations.add(operation4); //执行批量操作 resolver.applyBatch("com.android.contacts", operations); } }布局文件:
<?xml version="1.0" encoding="utf-8"?> <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" />描述文件:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.test.contacts" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="10" /> <uses-permission android:name="android.permission.READ_CONTACTS"></uses-permission> <uses-permission android:name="android.permission.WRITE_CONTACTS"></uses-permission> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".MainActivity" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>运行结果:
相关文章推荐
- Android 简单联系人操作
- AndroidContacts操作系列之 查看底层联系人表结构
- android bitmap的 一些简单操作
- android学习:Activity简单操作---打开、关闭一个新的Activity
- Android管理与操作Wifi简单实例源码
- android 简单的单例模式数据库操作
- 【Android】通用系列 —— 用简单通用的方式操作ListView
- android sqlite数据库简单操作(adb shell)
- Android 通信录中的联系人操作
- Android操作联系人
- Android中一些简单操作
- Android SD卡读取简单操作
- Android中PopupWindow的简单操作和动画的操作
- android 简单的画图操作
- Android数据库-greenDao3.2.2初体验(下)-简单的查询和删除操作
- android matrix的简单操作
- android中文件操作的简单工具类
- 简单的iOS通讯录操作封装(添加联系人、检查号码是否存在
- 【Android】Retrofit的使用(4)-Retrofit进行简单的GET和POST访问操作
- Android操作联系人