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"/>