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);
        }
  • 相关阅读:
    java NIO的基本用法
    BufferedReader源码分析
    FileInputStream读中文乱码问题
    Java使用IO流对同一个文件进行读写操作
    php表格--大数据处理
    tp5--模型关联
    tp5 -- join注意事项
    表单外部提交
    网站防止sql注入
    微信网页授权报code been used, hints: [ req_id: XYv1Ha07042046 ]
  • 原文地址:https://www.cnblogs.com/rongxiang/p/2723881.html
Copyright © 2011-2022 走看看