获取手机通讯录

来源:互联网 发布:双系统启动软件 编辑:程序博客网 时间:2024/05/05 09:47
在公司里写了一段上传用户通讯录的代码。写下来,以便以后查阅;获取手机里的通讯录:/** * 获取通讯录 * @param context * @return 返回包含用户名,与号码的ArrayList */public ArrayList<UserAddressBook> getContact(Context context) {ArrayList<UserAddressBook> allAddress = new ArrayList<UserAddressBook>();Cursor cursor = context.getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);while (cursor.moveToNext()) {String phoneName = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));Logs.v("name", "-->  "+phoneName);UserAddressBook addressBook = new UserAddressBook();addressBook.setItem(phoneName);String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));String hasPhone = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));if (hasPhone.compareTo("1") == 0) {Cursor phones = context.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));addressBook.setPhoneNum(phoneNumber);Logs.e(TAG,  "   -->  " + phoneNumber);}phones.close();}allAddress.add(addressBook);}cursor.close();return allAddress;}

用类的方式封装数据:

public class UserAddressBook {private String item = null;//姓名private String phoneNum = null;        //电话号码/** * 姓名 * @return */public String getItem() {return item;}/** * 姓名 * @return */public void setItem(String item) {this.item = item;}/** * 号码 * @return */public String getPhoneNum() {return phoneNum;}/** * 号码 * @return */public void setPhoneNum(String phoneNum) {this.phoneNum = phoneNum;}

后记:

 自己作为一个程序员,虽然是测试,看到自己手机号被上传到服务器上时,内心里还是紧张了一会。不知道的情况下,没多少感觉。在自己清楚知道数据被上传并且是自己熟悉的人知道的时候,有种被偷窥的感觉,真的很难受;

还没有想到一种可以防止通讯录被获取的情况;得找找。因为自己的手机已经root了,已没有安全性可言。但自己还是得注意。

原创粉丝点击