2025年6月7日 星期六 乙巳(蛇)年 三月十一 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > 安卓(android)开发

Android中 获取手机通讯录和手机机主手机号码

时间:10-29来源:作者:点击数:29

1.获取手机机主手机号码

目标:获取手机机主手机号码

(注:我只给出了代码思路和用法示例,大家可以自己调用方法debug运行看结果或者自行编写显示结果的代码,根据需要进行修改,希望对您有帮助!)

eg:

  • public class ContactUtils {
  • private static TelephonyManager telephonyManager;
  • /**
  • * 获取本地SIM卡手机机主号码
  • *
  • * @return
  • */
  • public static String getNativePhoneNumber(Context cxt) {
  • telephonyManager = (TelephonyManager) cxt
  • .getSystemService(Context.TELEPHONY_SERVICE);
  • String NativePhoneNumber = null;
  • NativePhoneNumber = telephonyManager.getLine1Number();
  • return NativePhoneNumber;
  • }
  • }

2.获取手机通讯录

目标:获取手机通讯录联系人的姓名和手机号码,屏幕座机和其他非手机号码,避免号码重复

(注:我只给出了代码思路和用法示例,大家可以自己调用方法debug运行看结果或者自行编写显示结果的代码,根据需要进行修改,希望对您有帮助!)

eg:

  • /**
  • * 获取手机通讯录
  • * 只获取正确非重复手机号码
  • * @author 诺诺
  • *
  • */
  • public class ContactUtils {
  • private static final String TAG = "ContactList";
  • // 获取系统数据库联系人Phone表字段信息
  • private static final String[] phoneContact = new String[] {
  • Phone.CONTACT_ID, Phone.DISPLAY_NAME, Phone.NUMBER, Photo.PHOTO_ID };
  • // 联系人的ID
  • private static final int contactID_Contact = 0;
  • // 联系人名称
  • private static final int name_Contact = 1;
  • // 电话号码
  • private static final int num_Contact = 2;
  • // 头像ID
  • private static final int phoneID_Contact = 3;
  • /**
  • * 获取手机联系人信息:只获取正确非重复手机号
  • * @param context
  • * @return ArrayList
  • */
  • public static ArrayList<ContactInfo> getContactsList(Context context) {
  • ContentResolver resolver = context.getContentResolver();
  • Cursor phoneCursor = resolver.query(Phone.CONTENT_URI, phoneContact,
  • null, null, ContactsContract.Contacts.DISPLAY_NAME
  • + " COLLATE LOCALIZED ASC");
  • // <name,ContactInfo>
  • HashMap<String, ContactInfo> nameMap = new HashMap<String, ContactInfo>();
  • // 通讯录的所有手机号码
  • ArrayList<String> phoneList = new ArrayList<String>();
  • if (phoneCursor != null) {
  • //通讯录所有联系人信息
  • ArrayList<ContactInfo> contacts = new ArrayList<ContactInfo>();
  • ContactInfo contactInfo = null;
  • while (phoneCursor.moveToNext()) {
  • // 得到手机号码
  • String phoneNumber = phoneCursor.getString(num_Contact);
  • Log.i(TAG + " phoneNumber: ", phoneNumber);
  • // 当手机号码为空的或非正确手机号 跳过此次循环
  • if (TextUtils.isEmpty(phoneNumber)
  • || !RegexUtils.isMoblieNo(phoneNumber)){
  • continue;
  • }
  • // 得到联系人名称
  • String contactName = phoneCursor.getString(name_Contact);
  • // 得到联系人ID
  • int contactid = phoneCursor.getInt(contactID_Contact);
  • // 得到联系人头像ID
  • Long photoid = phoneCursor.getLong(phoneID_Contact);
  • if (phoneList.contains(phoneNumber)) {
  • continue;
  • } else {
  • phoneList.add(phoneNumber);
  • if (!nameMap.containsKey(contactName)) {
  • contactInfo = new ContactInfo();
  • contactInfo.name = contactName;
  • contactInfo.mobilePhoneList.add(phoneNumber);
  • contacts.add(contactInfo);
  • nameMap.put(contactName, contactInfo);
  • } else {
  • contactInfo = nameMap.get(contactName);
  • contactInfo.mobilePhoneList.add(phoneNumber);
  • }
  • }
  • }
  • phoneCursor.close();
  • return contacts;
  • }
  • return null;
  • }
  • /**
  • * 联系人信息类
  • */
  • public static class ContactInfo implements Serializable {
  • public String name; // 联系人姓名
  • public ArrayList<String> mobilePhoneList; // 手机号码
  • public ContactInfo() {
  • CheckNullPointer();
  • }
  • /**
  • * 避免发生空指针异常
  • */
  • public void CheckNullPointer() {
  • if (mobilePhoneList == null)
  • mobilePhoneList = new ArrayList<String>();
  • if (name == null)
  • name = "";
  • }
  • public String getName() {
  • return name;
  • }
  • public void setName(String name) {
  • this.name = name;
  • }
  • public ArrayList<String> getPhoneNumList() {
  • return mobilePhoneList;
  • }
  • public void setPhoneNumList(ArrayList<String> mobilePhone) {
  • mobilePhoneList = mobilePhone;
  • }
  • }
  • }
  • public class RegexUtils {
  • /**
  • * 验证是否是有效手机号
  • *
  • * 移动:134、135、136、137、138、139、150、151、157(TD)、158、159、187、188
  • *
  • *   联通:130、131、132、152、155、156、185、186
  • *
  • *   电信:133、153、180、189、(1349卫通)
  • *
  • * @param mobiles
  • * @return
  • */
  • public static boolean isMoblieNo(String mobiles) {
  • Pattern p = Pattern
  • .compile("^((13[0-9])|(15[^4,\\D])|(18[0,5-9]))\\d{8}$");
  • Matcher m = p.matcher(mobiles);
  • return m.matches();
  • }
  • }
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐