我想知道是否可以使用 Android 应用程序访问 SIM 卡
6 回答
你可以像这样得到 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。
有关更多信息,请查看此页面
并且不要忘记在清单中添加正确的权限(getDeviceId() => Requires Permission: READ_PHONE_STATE
)
如果没有来自 SEEK(安全元件评估套件)的 SmartCardAPI,它永远不可能。在市场上可用的大多数 Android 手机中,SmartCardAPI 未实现。因此,您要么在集成 SmartCardAPI 代码后构建自己的 Android,要么等待一些具有此功能的体面手机问世。您可以在此处找到用于实施的补丁文件。
您可能对 Android 的 SmartCard API 感兴趣: http ://code.google.com/p/seek-for-android/
SIM 卡访问仅适用于系统应用程序:
第三方应用程序无法访问 SIM 卡的低级别访问权限。操作系统处理与 SIM 卡的所有通信,包括访问 SIM 卡内存上的个人信息(联系人)。应用程序也无法访问 AT 命令,因为这些命令由无线电接口层 (RIL) 专门管理。RIL 没有为这些命令提供高级 API。
来源:https ://source.android.com/security/overview/app-security.html#sim-card-access
SEEK 是最有用的,但大多数安卓手机不支持。所以,也许我们可以通过其他方法来评估 SIM 卡,比如读取 SMS(在 SIM 卡中)。
您应该使用 java 反射在 android 的内部 api 中使用 IccFileHandler 。它位于框架/基地/电话