2010-03-03 97 views
13

我不知道是否有可能訪問到SIM卡的Android應用程序使用Android應用程序訪問SIM卡?

+0

您需要提出更具體的問題。您想要訪問的SIM卡是什麼? – CommonsWare 2010-03-03 18:11:12

+1

可能「交換任意APDU-s」就是他想要的。 – 2010-03-03 18:20:34

+1

我想通過帶有APDu或BIP協議的javacard應用程序進行通信 – Adrien 2010-03-11 13:02:30

回答

7

你可以得到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

正確的權限
+0

IMEI與手機設備關聯,而不是SIM卡。 – 2010-03-08 08:47:36

+0

但是我可以發送APDU命令到SIM卡與javacard應用程序通信嗎? – Adrien 2010-03-11 13:01:18

+0

這是一個智能卡通信框架,它不允許您更改電話號碼。 – 2012-07-26 08:17:16

5

沒有來自SEEK(安全元件評估工具包)的SmartCardAPI,它永遠不可能。在市場上可用的大多數Android手機中,SmartCardAPI未實現。因此,無論是在集成SmartCardAPI代碼之後構建自己的Android,還是等待一些具有此功能的體面手機出現。您可以找到用於實施here的補丁文件。

2

SIM卡,則只能訪問系統應用程序:

SIM卡

低級別的訪問權限不提供給第三方應用。 操作系統處理與SIM卡的所有通信,包括訪問 到SIM卡存儲器上的個人信息(聯繫人)。 應用程序也不能訪問AT命令,因爲它們僅由無線電接口層(RIL)管理 。 RIL爲這些命令不提供 高級API。

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

+0

更新後的鏈接:https://source.android.com/security/overview/app-security.html#sim-card-access – Miscreant 2016-06-23 03:58:19

+0

@Miscreant:Thx。我已經更新了我的答案。 – Robert 2016-06-23 07:32:04

0

追求的是最有用的,但大多數Android手機不支持that.So,也許我們可以像讀SMS(SIM卡)其他方法評估的SIM卡。

+0

嗨,你能提供更多解釋嗎? – Skynet 2017-01-25 12:45:03

0

你應該在Android的interal api中使用IccFileHandler使用java反射。 它位於框架/基地/電話