使用Android应用程序访问SIM卡?

时间:2010-03-03 15:57:43

标签: android smartcard sim-card

我想知道是否可以使用Android应用程序访问SIM卡

6 个答案:

答案 0 :(得分:8)

你可以像这样得到IMEI(但这是你想要的吗?),只是一个例子:

mTelephonyMgr = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
String imei = mTelephonyMgr.getDeviceId();

同样,你有

String getSimCountryIso():

返回SIM提供商的国家/地区代码等效的ISO国家/地区代码。

String getSimOperator():返回SIM卡提供商的MCC + MNC(移动国家代码+移动网络代码)。

String getSimOperatorName():返回服务提供商名称(SPN)。

String getSimSerialNumber():如果适用,返回SIM的序列号。

int getSimState():返回一个指示设备SIM卡状态的常量。

String getSubscriberId():返回唯一的订户ID,例如GSM手机的IMSI。

有关更多信息,请查看this page

并且不要忘记在清单(getDeviceId() => Requires Permission: READ_PHONE_STATE

中添加正确的权限

答案 1 :(得分:5)

没有来自SEEK的SmartCardAPI(安全元件评估套件),它永远不可能。市场上的大多数Android手机都没有实现SmartCardAPI。因此,要么在集成SmartCardAPI代码之后构建自己的Android,要么等待具有此功能的正常手机出来。您可以找到用于实施的补丁文件here

答案 2 :(得分:4)

适用于Android的SmartCard API可能对您有用: http://code.google.com/p/seek-for-android/

答案 3 :(得分:2)

SIM卡访问仅适用于系统应用程序:

  

第三方应用无法使用SIM卡进行低级别访问。   操作系统处理与SIM卡的所有通信,包括访问   到SIM卡存储器上的个人信息(联系人)。   应用程序也无法访问AT命令,因为这些命令是受管理的   完全由无线电接口层(RIL)。 RIL提供没有   这些命令的高级API。

来源:https://source.android.com/security/overview/app-security.html#sim-card-access

答案 4 :(得分:0)

SEEK是最实用的,但大多数Android手机都不支持。所以,也许我们可以通过其他方法评估SIM卡,如阅读短信(在SIM卡中)。

答案 5 :(得分:0)

你应该在使用java反射的android的interal api中使用IccFileHandler。 它位于framework / base / telephony