zoukankan      html  css  js  c++  java
  • 在android中读取联系人信息的程序,包括读取联系人姓名、*和邮箱

     1:androidmanifest.xml的内容

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="cn.itcast.contacts"
          android:versionCode="1"
          android:versionName="1.0">
        <application android:icon="@drawable/icon" android:label="@string/app_name">
         <uses-library android:name="android.test.runner" />
            <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>
        <uses-sdk android:minSdkVersion="8" />
        <uses-permission android:name="android.permission.READ_CONTACTS" />
        <uses-permission android:name="android.permission.WRITE_CONTACTS" />
        
         <instrumentation android:name="android.test.InstrumentationTestRunner"
         android:targetPackage="cn.itcast.contacts" android:label="Tests for My App" />
    </manifest> 

    里面重要的是搭建测试环境和添加<uses-permission>,即读取和写入联系人信息的权限

    2:读取的主要方法

    /*
         * 读取联系人的信息
         */
        public void testReadAllContacts() {
            Cursor cursor = this.getContext().getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, 
                     null, null, null, null);
            int contactIdIndex = 0;
            int nameIndex = 0;
            
            if(cursor.getCount() > 0) {
                contactIdIndex = cursor.getColumnIndex(ContactsContract.Contacts._ID);
                nameIndex = cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME);
            }
            while(cursor.moveToNext()) {
                String contactId = cursor.getString(contactIdIndex);
                String name = cursor.getString(nameIndex);
                Log.i(TAG, contactId);
                Log.i(TAG, name);
                
                /*
                 * 查找该联系人的phone信息
                 */
                Cursor phones = this.getContext().getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
                        null, 
                        ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "=" + contactId, 
                        null, null);
                int phoneIndex = 0;
                if(phones.getCount() > 0) {
                    phoneIndex = phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);
                }
                while(phones.moveToNext()) {
                    String phoneNumber = phones.getString(phoneIndex);
                    Log.i(TAG, phoneNumber);
                }
                
                /*
                 * 查找该联系人的email信息
                 */
                Cursor emails = this.getContext().getContentResolver().query(ContactsContract.CommonDataKinds.Email.CONTENT_URI, 
                        null, 
                        ContactsContract.CommonDataKinds.Email.CONTACT_ID + "=" + contactId, 
                        null, null);
                int emailIndex = 0;
                if(emails.getCount() > 0) {
                    emailIndex = emails.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA);
                }
                while(emails.moveToNext()) {
                    String email = emails.getString(emailIndex);
                    Log.i(TAG, email);
                }
                
            }
        }

    3:目前手机中的联系人信息,有两个联系人的信息,如图所示,

    这是Hellen的联系信息

    这是Mike的联系信息

    4:测试结果,在控制台输出的内容为:

    可以看到在控制台输出了两个联系人的信息。

    //--------------------------------------

    获取所有分组编号和组的名称

    Cursor groupInfoCursor = getContentResolver().query(ContactsContract.Groups.CONTENT_URI, null, null, null, null);
    while(groupInfoCursor.moveToNext()) {
        int idIndex = groupInfoCursor.getColumnIndex(ContactsContract.Groups._ID);
        int titleIndex = groupInfoCursor.getColumnIndex(ContactsContract.Groups.TITLE);
        String id = groupInfoCursor.getString(idIndex);
        String title = groupInfoCursor.getString(titleIndex);
    }
    groupInfoCursor.close();
  • 相关阅读:
    python yield 理解
    创建loop设备
    git 添加submodule 以及更名
    用了linux 这么久,终于发现一个需要硬连接的地方
    gdb 查看内存
    att 汇编 helloworld
    ln 创建连接和mount -bind用法
    区间DP
    数位DP
    VS反汇编分析
  • 原文地址:https://www.cnblogs.com/error404/p/2956090.html
Copyright © 2011-2022 走看看