Android获取本机电话号码及运营商信息
电话管理器TelephonyManager可访问电话服务信息,包括电话号码、运营商信息、wifi状态等。一些电话信息需要相应的权限,具体可以看API文件中TelephonyManager方法的说明。获取本机号码:getLine1Number(); //返回设备的电话号码获取运营商信息:第一种方法:(需要权限)getSubscriberId();//获取IMSI号(IMSI号前面3位460是国家,紧
电话管理器TelephonyManager可访问电话服务信息,包括电话号码、运营商信息、wifi状态等。一些电话信息需要相应的权限,具体可以看API文件中TelephonyManager方法的说明。
获取本机号码:getLine1Number(); //返回设备的电话号码
获取运营商信息:
-
第一种方法:(需要权限)
getSubscriberId(); //获取IMSI号(IMSI号前面3位460是国家,紧接着后面2位00、 02是中国移动,01是中国联通,03是中国电信) IMSI=MCC+MNC+MSIN -
第二种方法:
getSimOperator();//获取SIM运营商代码(MCC+MNC码:MCC:移动国家码,中国是460;MNC:移动网络码,00、 02是移动,01是联通,03是电信)
另外,getSimOperatorName();可以直接获取运营商的英文名哦~
实现代码如下:
public class SIMCardInfo {
private TelephonyManager telephonyManager;
private String IMSI;// 国际移动用户识别码
public SIMCardInfo(Context context) {
telephonyManager = (TelephonyManager) context
.getSystemService(Context.TELEPHONY_SERVICE);
}
//获取本机号码
public String getPhoneNumber() {
String PhoneNumber = null;
PhoneNumber = telephonyManager.getLine1Number();//返回设备的电话号码
return PhoneNumber;
}
//获取本机运营商信息
/**
* 方法一:getSubscriberId(),获取IMSI号
* 方法二:getSimOperator()获取SIM运营商代码(MCCMNC码)/getSimOperatorName()获取运营商名称(英文)
* 【getNetworkOperator()获取网络运营商代码/getNetworkOperatorName()获取网络运营商名称(英文)】
* 网络运营商是网络的运营商。一般SIM运营商和网络运营商是同一个,如用移动的就只能开移动的手机网络。
从卡获取信息有所不同。
* @return
*/
public String getProvidersName() {
String ProvidersName = null;
// <p>Requires Permission: {@link android.Manifest.permission#READ_PHONE_STATE READ_PHONE_STATE}
IMSI = telephonyManager.getSubscriberId();//使用这个需要在manifest文件里面添加 权限<uses-permission android:name="android.permission.READ_PHONE_STATE" />
//或者:IMSI=telephonyManager.getSimOperator();
android.util.Log.d(TAG, "IMSI== " + IMSI);
// IMSI号前面3位460是国家,紧接着后面2位00 02是中国移动,01是中国联通,03是中国电信
try {
if (IMSI.startsWith("46000") || IMSI.startsWith("46002")) {
ProvidersName = "中国移动";
} else if (IMSI.startsWith("46001")) {
ProvidersName = "中国联通";
} else if (IMSI.startsWith("46003")) {
ProvidersName = "中国电信";
}
} catch (Exception e) {
e.printStackTrace();
}
return ProvidersName;
}
/**
* 测试:getSimOperator()获取运营商代码/getSimOperatorName()获取运营商名称
*/
public String getOperatorName(){
String simOperator=telephonyManager.getSimOperator();
android.util.Log.d(TAG, "SIM运营商代码: --"+simOperator);
String simOperatorName=telephonyManager.getSimOperatorName();
android.util.Log.d(TAG, "SIM运营商:-- "+simOperatorName);
String networkOperator = telephonyManager.getNetworkOperator();//联网才有用
android.util.Log.d(TAG, "网络运营商代码:-- "+networkOperator);
String networkOperatorName = telephonyManager.getNetworkOperatorName();
android.util.Log.d(TAG, "网络运营商:-- "+networkOperatorName);
return simOperatorName;
}
Log 信息
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)