SIM获取手机SIM卡的信息

添加权限:

 

<uses-permission
		android:name="android.permission.READ_PHONE_STATE" />
private TelephonyManager telMgr;
	private TextView tv_state;
	private TextView tv_number;
	private TextView tv_operator_number;
	private TextView tv_operator;
	private TextView tv_country;

	@SuppressWarnings("static-access")
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.sim);

		telMgr = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);

		tv_state = (TextView) findViewById(R.id.textView2);
		tv_number = (TextView) findViewById(R.id.textView4);
		tv_operator_number = (TextView) findViewById(R.id.textView6);
		tv_operator = (TextView) findViewById(R.id.textView8);
		tv_country = (TextView) findViewById(R.id.textView10);

		/* 取得SIM卡状态 */
		if (telMgr.getSimState() == telMgr.SIM_STATE_READY) {
			tv_state.setText("良好");
		} else if (telMgr.getSimState() == telMgr.SIM_STATE_ABSENT) {
			tv_state.setText("无SIM卡");
		} else {
			tv_state.setText("SIM卡被锁定或未知的状态");
		}

		/* 取得SIM卡卡号 */
		if (telMgr.getSimSerialNumber() != null) {
			tv_number.setText(telMgr.getSimSerialNumber());
		} else {
			tv_number.setText("无法取得");
		}

		/* 取得SIM卡供货商代码 */
		if (telMgr.getSimOperator().equals("")) {
			tv_operator_number.setText("无法取得");
		} else {
			tv_operator_number.setText(telMgr.getSimOperator());
		}

		/* 取得SIM卡供货商名称 */
		if (telMgr.getSimOperatorName().equals("")) {
			tv_operator.setText("无法取得");
		} else {
			tv_operator.setText(telMgr.getSimOperatorName());
		}

		/* 取得SIM卡区域 */
		if (telMgr.getSimCountryIso().equals("")) {
			tv_country.setText("无法取得");
		} else {
			tv_country.setText(telMgr.getSimCountryIso());
		}

	}

 


 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Android 4.4 中,您可以使用以下代码来获取SIM信息: ```java TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); String simSerialNumber1 = telephonyManager.getSimSerialNumber(0); String simSerialNumber2 = telephonyManager.getSimSerialNumber(1); String subscriberId1 = telephonyManager.getSubscriberId(0); String subscriberId2 = telephonyManager.getSubscriberId(1); String line1Number1 = telephonyManager.getLine1Number(0); String line1Number2 = telephonyManager.getLine1Number(1); String networkOperatorName1 = telephonyManager.getNetworkOperatorName(0); String networkOperatorName2 = telephonyManager.getNetworkOperatorName(1); String networkCountryIso1 = telephonyManager.getNetworkCountryIso(0); String networkCountryIso2 = telephonyManager.getNetworkCountryIso(1); String simOperatorName1 = telephonyManager.getSimOperatorName(0); String simOperatorName2 = telephonyManager.getSimOperatorName(1); ``` 其中,`getSimSerialNumber(int slotIndex)` 方法用于获取指定 SIM 卡的序列号,`getSubscriberId(int slotIndex)` 方法用于获取指定 SIM 卡的 IMSI 号,`getLine1Number(int slotIndex)` 方法用于获取指定 SIM 卡的手机号码,`getNetworkOperatorName(int slotIndex)` 方法用于获取指定 SIM 卡所属的运营商名称,`getNetworkCountryIso(int slotIndex)` 方法用于获取指定 SIM 卡所属的国家代码,`getSimOperatorName(int slotIndex)` 方法用于获取指定 SIM 卡所属的 SIM 运营商名称。 需要注意的是,以上方法中的 `slotIndex` 参数可以取值 0 或 1,分别代表第一张 SIM 卡和第二张 SIM 卡。如果您的设备只支持一张 SIM 卡,那么所有的方法都只能使用 `slotIndex` 参数取值为 0 的情况。 此外,获取SIM信息还可以使用 `SubscriptionManager` 类,该类是在 Android 5.1 中引入的,但也可以在 Android 4.4 中使用,需要通过反射来调用。如果您需要使用 `SubscriptionManager` 类,请参考以下代码: ```java SubscriptionManager subscriptionManager = (SubscriptionManager) getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE); List<SubscriptionInfo> subscriptionInfos = null; if (subscriptionManager != null) { subscriptionInfos = subscriptionManager.getActiveSubscriptionInfoList(); } if (subscriptionInfos != null) { for (SubscriptionInfo subscriptionInfo : subscriptionInfos) { int slotIndex = subscriptionInfo.getSimSlotIndex(); String simSerialNumber = subscriptionInfo.getIccId(); String subscriberId = subscriptionInfo.getImsi(); String line1Number = subscriptionInfo.getNumber(); String networkOperatorName = subscriptionInfo.getCarrierName().toString(); String networkCountryIso = subscriptionInfo.getCountryIso(); String simOperatorName = subscriptionInfo.getDisplayName().toString(); } } ``` 以上代码中,`getActiveSubscriptionInfoList()` 方法用于获取当前设备上所有活跃的 SIM信息,返回一个 `List<SubscriptionInfo>` 对象。`SubscriptionInfo` 类包含了获取 SIM信息的所有方法,使用方法与上面介绍的方法相同。需要注意的是,`getActiveSubscriptionInfoList()` 方法只能在支持 `SubscriptionManager` 类的设备上使用,否则会出现 `java.lang.NoSuchMethodError` 异常。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值