zoukankan      html  css  js  c++  java
  • Android 联系人的读取,查询,添加

    先加二个读和写权限:

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

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

    复制代码
    package com.eboy.test;

    import java.util.ArrayList;

    import android.content.ContentProviderOperation;
    import android.content.ContentResolver;
    import android.database.Cursor;
    import android.net.Uri;
    import android.test.AndroidTestCase;
    import android.util.Log;

    public class ContectTest extends AndroidTestCase {
        
        private static final String TAG = "TestContact";
        
        //查询所有联系人的姓名,电话,邮箱
        public void TestContact() throws Exception {        
            Uri uri = Uri.parse("content://com.android.contacts/contacts");
            ContentResolver resolver = getContext().getContentResolver();
            Cursor cursor = resolver.query(uri, new String[]{"_id"}, nullnullnull);
            while (cursor.moveToNext()) {
                int contractID = cursor.getInt(0);
                StringBuilder sb = new StringBuilder("contractID=");
                sb.append(contractID);
                uri = Uri.parse("content://com.android.contacts/contacts/" + contractID + "/data");
                Cursor cursor1 = resolver.query(uri, new String[]{"mimetype", "data1", "data2"}, nullnullnull);
                while (cursor1.moveToNext()) {
                    String data1 = cursor1.getString(cursor1.getColumnIndex("data1"));
                    String mimeType = cursor1.getString(cursor1.getColumnIndex("mimetype"));
                    if ("vnd.android.cursor.item/name".equals(mimeType)) { //是姓名
                        sb.append(",name=" + data1);
                    } else if ("vnd.android.cursor.item/email_v2".equals(mimeType)) { //邮箱
                        sb.append(",email=" + data1);
                    } else if ("vnd.android.cursor.item/phone_v2".equals(mimeType)) { //手机
                        sb.append(",phone=" + data1);
                    }                
                }
                cursor1.close();
                Log.i(TAG, sb.toString());
            }
            cursor.close();
        }
        
        //查询指定电话的联系人姓名,邮箱
        public void testContactNameByNumber() throws Exception {
            String number = "18052369652";
            Uri uri = Uri.parse("content://com.android.contacts/data/phones/filter/" + number);
            ContentResolver resolver = getContext().getContentResolver();
            Cursor cursor = resolver.query(uri, new String[]{"display_name"}, nullnullnull);
            if (cursor.moveToFirst()) {
                String name = cursor.getString(0);
                Log.i(TAG, name);
            }
            cursor.close();
        }
        
        //添加联系人,使用事务
        public void testAddContact() throws Exception {
            Uri uri = Uri.parse("content://com.android.contacts/raw_contacts");
            ContentResolver resolver = getContext().getContentResolver();
            ArrayList<ContentProviderOperation> operations = new ArrayList<ContentProviderOperation>();
            ContentProviderOperation op1 = ContentProviderOperation.newInsert(uri)
                .withValue("account_name", null)
                .build();
            operations.add(op1);
            
            uri = Uri.parse("content://com.android.contacts/data");
            ContentProviderOperation op2 = ContentProviderOperation.newInsert(uri)
                .withValueBackReference("raw_contact_id", 0)
                .withValue("mimetype", "vnd.android.cursor.item/name")
                .withValue("data2", "龚小永")
                .build();
            operations.add(op2);
            
            ContentProviderOperation op3 = ContentProviderOperation.newInsert(uri)
                .withValueBackReference("raw_contact_id", 0)
                .withValue("mimetype", "vnd.android.cursor.item/phone_v2")
                .withValue("data1", "13539777967")            
                .withValue("data2", "2")
                .build();
            operations.add(op3);
            
            ContentProviderOperation op4 = ContentProviderOperation.newInsert(uri)
            .withValueBackReference("raw_contact_id", 0)
            .withValue("mimetype", "vnd.android.cursor.item/email_v2")
            .withValue("data1", "asdfasfad@163.com")            
            .withValue("data2", "2")
            .build();
        operations.add(op4);
            
            resolver.applyBatch("com.android.contacts", operations);
        }
  • 相关阅读:
    第六节:框架搭建之EF的Fluent Api模式的使用流程
    第五节:框架前期准备篇之锁机制处理并发
    第四节:框架前期准备篇之进程外Session的两种配置方式
    MySql安装成功后无法远程登录
    Java创建WebService
    C#模拟HTTP请求并发送二进制
    Java模拟POST请求发送二进制数据
    Java从内存流中读取byte数组
    C# 递归缩小图片
    Mongodb脚本记录
  • 原文地址:https://www.cnblogs.com/rongxiang/p/2723881.html
Copyright © 2011-2022 走看看