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);
        }
        


    /Files/jxgxy/ReadWriteContact.rar

  • 相关阅读:
    一步步搭建自己的web服务器
    http协议知识整理
    数据库系统原理-第一章 数据库系统基本概念
    程序设计入门-C语言基础知识-翁恺-第七周:指针与字符串-详细笔记(七)
    程序设计入门-C语言基础知识-翁恺-第六周:数组-详细笔记(六)
    程序设计入门-C语言基础知识-翁恺-第五周:函数-详细笔记(五)
    程序设计入门-C语言基础知识-翁恺-期中测试
    程序设计入门-C语言基础知识-翁恺-第四周:循环控制-详细笔记(四)
    程序设计入门-C语言基础知识-翁恺-第三周:循环-详细笔记(三)
    程序设计入门-C语言基础知识-翁恺-第二周:简单的计算程序-详细笔记(二)
  • 原文地址:https://www.cnblogs.com/jxgxy/p/2613069.html
Copyright © 2011-2022 走看看