在安卓应用中,你可以通过读取 SIM 卡提供的信息来判断 SIM 卡归属的国家和运营商。主要可以通过 TelephonyManager 类来获取这些信息。以下是判断 SIM 卡是否属于国内运营商的一些基本步骤:
获取 TelephonyManager 实例:TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
获取 SIM 卡的国家代码,通常与 ISO 国家代码一致:
String simCountryIso = telephonyManager.getSimCountryIso();
public static boolean isCN(Context context) {
TelephonyManager tm = (TelephonyManager) ContextHelper.getSystemService(context, Context.TELEPHONY_SERVICE);
String countryIso = tm.getSimCountryIso();
boolean isCN = false;//判断是不是大陆
if (!TextUtils.isEmpty(countryIso)) {
countryIso = countryIso.toUpperCase(Locale.US);
if (countryIso.contains("CN")) {
isCN = true;
}
}
return isCN;
}
获取运营商的国家代码和网络代码,即MCC和MNC:
String simOperator = telephonyManager.getSimOperator();
比较获取到的国家代码和运营商代码:
国家代码(MCC)和网络代码(MNC)可以确定 SIM 卡的运营商。
例如,中国大陆的移动运营商的 MCC 都是 460。以下是中国大陆部分主要运营商的 MCC 和 MNC:
中国移动:MCC 460,MNC 00、02、04、07
中国联通:MCC 460,MNC 01、06、09
中国电信:MCC 460,MNC 03、05、11
如果 simOperator 的前三位是 460,并且后面的 MNC 与以上匹配,那么可以判定 SIM 卡是属于中国大陆的运营商。
如果 MCC 代码不是 460 或者 MNC 与以上不匹配,那么 SIM 卡可能是国外的。
import android.content.Context;
import android.telephony.TelephonyManager;
public class SimChecker {
// 检测SIM卡是否属于中国大陆
public boolean isChineseMainlandSIM(Context context){
TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
// Android 6.0 以上,请确保你有动态请求权限的逻辑
// 获取 SIM 卡运营商的 MCC+MNC
String simOperator = telephonyManager.getSimOperator();
// 中国大陆的 MCC 为 460
String chinaMainlandMcc = "460";
// 检查 SIM 卡的 MCC 是否为 460
if (simOperator != null && simOperator.startsWith(chinaMainlandMcc)) {
return true; // 是中国大陆的 SIM 卡
}
return false; // 不是中国大陆的 SIM 卡
}
}需要注意的是,读取 SIM 卡信息可能需要用户的权限,你需要在应用中请求并检查权限:
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
另外,最新版本安卓系统对隐私权限管理更加严格,确保你按照最新的指南和用户隐私政策去申请和使用这些敏感权限。网友回复
有没有不依赖embedding向量的RAG技术?
有没有支持实时打断语音通话并后台帮你执行任何的ai模型?
开源ai大模型文件格式GGUF、MLX、Safetensors、 ONNX 有什么区别?
出海挣钱支付收款PayPal、Wise 、PingPong、Stripe如何选择?
如何实现类似google的图片隐形水印添加和识别技术?
linux上如何运行任意windows程序?
ai能写出比黑客还厉害的零日漏洞等攻击工具攻击任意软件系统工程?
js如何获取浏览器的音频上下文指纹、Canvas指纹、WebGL渲染特征?
为啥ai开始抛弃markdown文本,重新偏好html文本了?
网站有没有办法鉴别访问请求是由ai操控chrome-devtools-mcp发出的?


