12

我正在使用代码

TelephonyManager tMgr =(TelephonyManager)mAppContext.getSystemService(Context.TELEPHONY_SERVICE);
  mPhoneNumber = tMgr.getLine1Number();

在 android 中以编程方式获取手机。但这仅适用于一张 sim 卡。如果我通过插入其他 sim 卡来测试此代码,它会给出null. 我正在尝试为此找到解决方案。请帮我。我READ_PHONE_STATE还在Manifest.

我想唯一标识 sim 卡。有没有其他方法可以做到这一点。请告诉我。

4

4 回答 4

8

我认为 Sim 序列号是唯一的。你可以试试这个。

TelephonyManager telemamanger = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
String getSimSerialNumber = telemamanger.getSimSerialNumber();

让我知道是否有任何问题。

于 2011-06-21T05:35:40.520 回答
1

这是一个已知的问题。全球许多 SIM 卡都会返回 null。您应该使用 IMEI 号码,但即使这样也可以返回 null。

TelephonyManager.getDeviceId()
于 2011-05-10T10:26:48.643 回答
1

查找 TelephonyManager.getSubscriberId(),这将为每个 SIM 提供唯一的 ID。

于 2011-05-10T10:58:13.427 回答
0

API 级别大于或等于 22:您可以使用SubscitionManager访问所有 SIM 详细信息。使用以下命令列出所有 Sim 号码(也适用于 Dual Sim):

List<SubscriptionInfo> list = SubscriptionManager.from(getApplicationContext()).getActiveSubscriptionInfoList();
for(SubscriptionInfo s : list){
   Log.d("SIMMANAGER",s.getNumber());
}

注意:这仅在运营商将他们的手机号码存储在 sim 卡中时才有效。否则,此方法返回 null。

于 2018-12-24T05:31:03.173 回答