zoukankan      html  css  js  c++  java
  • Android项目——读取手机联系人信息

    加入读取联系人信息的权限
    <uses-permission android:name="android.permission.READ_CONTACTS"/>
    content://com.android.contacts/contacts 操作的数据是联系人信息Uri
    content://com.android.contacts/data/phones 联系人电话Uri
    content://com.android.contacts/data/emails 联系人Email Uri
    读取联系人信息
    Cursor cursor = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, 
        null, null, null, null); 
      while (cursor.moveToNext()) { 
       String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID)); 
       String name = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); 
      
       Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
            null, 
            ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ contactId, 
            null, null); 
        while (phones.moveToNext()) { 
         String phoneNumber = phones.getString(phones.getColumnIndex( 
             ContactsContract.CommonDataKinds.Phone.NUMBER)); 
         Log.i("RongActivity", "phoneNumber="+phoneNumber);
        } 
        phones.close(); 
      
        Cursor emails = getContentResolver().query(ContactsContract.CommonDataKinds.Email.CONTENT_URI, 
           null, 
           ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = " + contactId, 
           null, null); 
           while (emails.moveToNext()) { 
            // This would allow you get several email addresses 
            String emailAddress = emails.getString(emails.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
            Log.i("RongActivity", "emailAddress="+ emailAddress);
           } 
           emails.close(); 
      } 
      cursor.close();
    ---------------------------------

    /**

     * 读取联系人信息

     * @author Administrator yangchao

     *

     */

    public class MainActivity extends Activity

    {

        public static final String TAG = "yangchao";

        private ListView lvContent;

     

        @Override

        protected void onCreate(Bundle savedInstanceState)

        {

           super.onCreate(savedInstanceState);

           setContentView(R.layout.activity_main);

           lvContent = (ListView) findViewById(R.id.lvContent);

          

           List<HashMap<String, Object>> data = new ContactService(this).getInfo();

          

           SimpleAdapter adapter = new SimpleAdapter(this, data, R.layout.item,

                   new String[]{"name", "number", "email"}, new int[]{R.id.tvName, R.id.tvNumber, R.id.tvEmail});

            lvContent.setAdapter(adapter);

        }

    }

     ---------------------------------------------------------------------------------------------------------------

    public class ContactService

    {

        private Context context;

        public ContactService(Context context)

        {

           this.context = context;

        }

       

        public List<HashMap<String, Object>> getInfo()

        {

           List<HashMap<String, Object>> data = new ArrayList<HashMap<String, Object>>();

     

           ContentResolver contentResolver = context.getContentResolver();

           Cursor cursor = contentResolver.query(

                  ContactsContract.Contacts.CONTENT_URI, null, null, null, null);

           while (cursor.moveToNext())

           {

               String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));

               String name = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));

              

               HashMap<String, Object> map = new HashMap<String, Object>();

               map.put("name", name);

              

               Cursor phones = contentResolver.query(

                      ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,

                      ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = "

                             + contactId, null, null);

               while (phones.moveToNext())

               {

                  String phoneNumber = phones

                         .getString(phones

                                .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));

                  map.put("number", phoneNumber);

                 

                  Log.i("RongActivity", "phoneNumber=" + phoneNumber);

               }

               phones.close();

     

               Cursor emails = contentResolver.query(

                      ContactsContract.CommonDataKinds.Email.CONTENT_URI, null,

                      ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = "

                             + contactId, null, null);

               while (emails.moveToNext())

               {

                  // This would allow you get several email addresses

                  String emailAddress = emails

                         .getString(emails

                                .getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));

                  map.put("email", emailAddress);

                 

                 

                  Log.i("RongActivity", "emailAddress=" + emailAddress);

               }

              

               data.add(map);

               emails.close();

           }

           cursor.close();

           return data;

        }

    }

     


    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    java foreach遍历的前提条件
    Java中的null值总结
    mybatis不可忽略的细节
    设计模式:创建型模式
    设计模式(四):原型模式
    设计模式(三):建造者模式
    设计模式(二):单例模式(DCL及解决办法)
    设计模式(一):简单工厂、工厂模式、抽象工厂
    定时任务 ScheduledExecutorService
    快速访问GitHub
  • 原文地址:https://www.cnblogs.com/blogs-chao/p/4764904.html
Copyright © 2011-2022 走看看