原文地址: http://blog.csdn.net/xujing81/article/details/7210308
android获取手机通讯录联系人信息
- private void getPhoneContacts() {
- ContentResolver resolver = this.getContentResolver();
- // 获取手机联系人
- Cursor phoneCursor = resolver.query(Phone.CONTENT_URI,
- new String[] { Phone.CONTACT_ID, Phone.DISPLAY_NAME,
- Phone.NUMBER },
- Phone.DISPLAY_NAME + "=?" + " AND " + Phone.TYPE + "='"
- + Phone.TYPE_MOBILE + "'", new String[] { name }, null);
- if (phoneCursor != null) {
- while (phoneCursor.moveToNext()) {
- String number = phoneCursor.getString(2);
- // 当手机号码为空的或者为空字段 跳过当前循环
- if (TextUtils.isEmpty(phoneNumber))
- continue;
- // 得到联系人名称
- String username = phoneCursor.getString(1);
- mContactsName.add(contactName);
- mContactsNumber.add(phoneNumber);
- }
- phoneCursor.close();
- }
- }
获得手机sim卡联系人信息
sim卡和手机本人 获取的方式类似 只是url有点不一样 ,须要注意的一点是 sim卡 是没有联系人头像的。
- private void getSIMContacts() {
- ContentResolver resolver = mContext.getContentResolver();
- // 获取Sims卡联系人
- Uri uri = Uri.parse("content://icc/adn");
- Cursor phoneCursor = resolver.query(uri,
- new String[] { Phone.CONTACT_ID, Phone.DISPLAY_NAME,
- Phone.NUMBER },
- Phone.DISPLAY_NAME + "=?" + " AND " + Phone.TYPE + "='"
- + Phone.TYPE_MOBILE + "'", new String[] { name }, null);
- if (phoneCursor != null) {
- while (phoneCursor.moveToNext()) {
- String number = phoneCursor.getString(2);
- // 当手机号码为空的或者为空字段 跳过当前循环
- if (TextUtils.isEmpty(phoneNumber))
- continue;
- // 得到联系人名称
- String username = phoneCursor.getString(1);
- mContactsName.add(contactName);
- mContactsNumber.add(phoneNumber);
- }
- phoneCursor.close();
- }
- }
调用系统拨打电话的界面 ,代码如下。
tel:电话号码
- //调用系统方法拨打电话
- Intent dialIntent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + mContactsNumber.get(position)));
- startActivity(dialIntent);
最后,千万别忘记在AndroidManifest.xml文件中添加权限,否则运行程序是报错!
- <!-- 读取联系人权限 -->
- <uses-permission android:name="android.permission.READ_CONTACTS"/>
- <!-- 拨打电话权限 -->
- <uses-permission android:name="android.permission.CALL_PHONE"/>