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

       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_URInull,

                  ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = "

                         + contactId, nullnull);

           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_URInull,

                  ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = "

                         + contactId, nullnull);

           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;

    }

}

 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android 中,读取联系人的权限是 `android.permission.READ_CONTACTS`。这个权限允许应用程序读取设备上的联系人信息,例如姓名、电话号码、电子邮件地址等。 如果你的应用程序需要读取联系人信息,需要在 AndroidManifest.xml 文件中声明该权限。例如: ```xml <uses-permission android:name="android.permission.READ_CONTACTS" /> ``` 需要注意的是,从 Android 6.0(API 级别 23)开始,Android 引入了运行时权限机制,应用程序需要在运行时请求权限,用户可以选择允许或拒绝应用程序的权限请求。因此,在使用联系人权限时,需要检查权限是否已经被授予,如果没有被授予,需要向用户请求该权限。可以使用以下代码检查和请求联系人权限: ```java if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED) { // 如果没有读取联系人的权限,则向用户请求该权限 ActivityCompat.requestPermissions(this, new String[] { Manifest.permission.READ_CONTACTS }, REQUEST_CODE); } else { // 如果已经有读取联系人的权限,则执行读取联系人的操作 readContacts(); } ``` 在上面的代码中,我们首先检查应用程序是否已经被授予读取联系人的权限,如果没有被授予,则向用户请求该权限。如果已经被授予,则执行读取联系人的操作。需要注意的是,`REQUEST_CODE` 是请求权限时的请求码,用于在权限请求回调中处理权限请求的结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值