这几天做了一个项目要用到获取手机联系人的东东,自己就写了一个获取通讯录的东东,这种东西在手机端是有Api可以供我们使用的。
下边是代码
/**
* @author BJShiJiHuiTou
*
*/
public class MainActivity extends Activity {
private TextView tv_showtext;
private Context mContext;
/** 获取库Phon表字段 **/
private static final String[] PHONES_PROJECTION = new String[] {
Phone.DISPLAY_NAME, Phone.NUMBER, Photo.PHOTO_ID, Phone.CONTACT_ID };
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mContext = this;
tv_showtext = (TextView) findViewById(R.id.tv_showtext);
getPhoneNum();// 得到手机的联系人
getSimPhoneNum();// 得到sim卡上的联系人
}
private void getSimPhoneNum() {
ContentResolver resolver = mContext.getContentResolver();
// 获取Sims卡联系人
Uri uri = Uri.parse("content://icc/adn");
Cursor phoneCursor = resolver.query(uri, PHONES_PROJECTION, null, null,
null);
if (phoneCursor != null) {
while (phoneCursor.moveToNext()) {
// 得到手机号码
String phoneNumber = phoneCursor.getString(1);
// 得到联系人名称
String contactName = phoneCursor.getString(0);
System.out.println("simphoneNumber:"+phoneNumber);
System.out.println("simcontactName:"+contactName);
}
phoneCursor.close();
}
System.out.println("sim卡没有联系人");
}
private void getPhoneNum() {
ContentResolver resolver = mContext.getContentResolver();
Cursor phoneCursor = resolver.query(Phone.CONTENT_URI,
PHONES_PROJECTION, null, null, null);
if (phoneCursor != null) {
StringBuilder str = new StringBuilder("");
while (phoneCursor.moveToNext()) {
// 得到手机号码
String phoneNumber = phoneCursor.getString(1);
// 得到联系人名称
String contactName = phoneCursor.getString(0);
str.append("" + contactName + "" + phoneNumber + "\n");
// System.out.println("name:"+contactName+"--phoneNumber:"+phoneNumber);
}
phoneCursor.close();
tv_showtext.setText(str);
}
}
当然也别忘了添加权限
<uses-permission android:name="android.permission.READ_CONTACTS"/>
因为现在好多的智能手机的电话号码都是默认保存在手机上的,所以sim卡上的信息未做处理