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