android如何读取sim卡联系人信息,Android上如何获取手机和sim卡的联系人信息

本文详细介绍了如何在Android平台上获取手机和SIM卡的联系人信息,包括查询手机联系人、SIM卡联系人,以及如何预处理手机号码为统一11位格式。示例代码展示了实现这一功能的具体步骤和接口设计。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需求很明确,获取手机和sim的联系人信息。接口设计也很简介

public interface OnFetchContactsListener {

void onFetcherContactsComplete(List list);

}

数据设计为:

public class ContactInfo extends BaseModel {

private static final long serialVersionUID = -8650648832668794807L;

/**联系人名**/

private String mName;

/**联系人电话号码**/

private String mPhoneNumber;

/**联系人ID**/

private String mId;

/**联系人名字字母**/

private String mNameLetter;

private int mOperatorType; //运营商判断,可有可无

}

细分一下,这里要解决3个问题:

如何获取手机联系人信息

如何获取sim卡的联系人信息

取出来的手机信息需要预处理一下变成统一个11位格式。

问题1:如何获取手机联系人信息

根据ContactsContract.Contacts.CONTENT_URI查询ContentResolver里面的数据,逐个取值即可。

问题2:如何获取sim卡的联系人信息

根据目前查找的信息来看,sim联系人的uri有两种:

问题3:预处理手机号

这个比较多变,常见的存储格式有:

"13515681234"

"135-1568-1234"

"135 1568 1234"

"+86 135 1568 1234"

考虑到只使用国内市场,所以最后可以统一为"13515681234"

完整demo如下

包含两个文件:ContactsFetcherHelper和ContactInfo

public class ContactInfo extends BaseModel {

private static final long serialVersionUID = -8650648832668794807L;

/**联系人名**/

private String mName;

/**联系人电话号码**/

private String mPhoneNumber;

/**联系人ID**/

private String mId;

/**联系人名字字母**/

private String mNameLetter;

private int mOperatorType; //运营商判断,可有可无

public void setLetter(String letter) {

mNameLetter = letter;

}

public String getLetter() {

return mNameLetter;

}

public void setName(String name) {

mName = name;

}

public String getName() {

return mName == null? "" : mName;

}

public void setPhoneNumber(String number) {

mPhoneNumber = number;

if (isMobileNumber(number) || isUnicomNumber(number)) {

setmOperatorType(0);

} else {

setmOperatorType(1);

}

}

public String getPhoneNumber() {

return mPhoneNumber;

}

public void setId(String id) {

mId = id;

}

public String getId() {

return mId;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值