我想知道是否可以使用Android应用程序访问SIM卡
答案 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