我需要幫助檢查設備是否有編程的SIM卡。請提供示例代碼。如何檢查SIM卡是否可用於Android設備?
回答
使用TelephonyManager。
http://developer.android.com/reference/android/telephony/TelephonyManager.html
由於Falmarri筆記,你會想使用getPhoneType首先,就看你甚至處理一個GSM電話。如果你是,那麼你也可以獲得SIM狀態。
TelephonyManager telMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
int simState = telMgr.getSimState();
switch (simState) {
case TelephonyManager.SIM_STATE_ABSENT:
// do something
break;
case TelephonyManager.SIM_STATE_NETWORK_LOCKED:
// do something
break;
case TelephonyManager.SIM_STATE_PIN_REQUIRED:
// do something
break;
case TelephonyManager.SIM_STATE_PUK_REQUIRED:
// do something
break;
case TelephonyManager.SIM_STATE_READY:
// do something
break;
case TelephonyManager.SIM_STATE_UNKNOWN:
// do something
break;
}
編輯:
開始在API 26(的AndroidØ預覽),您可以通過使用getSimState(int slotIndex)
查詢SIMSTATE個人卡插槽,即:
int simStateMain = telMgr.getSimState(0);
int simStateSecond = telMgr.getSimState(1);
如果你有和年長的API開發時,可以使用TelephonyManager's
String getDeviceId (int slotIndex)
//returns null if device ID is not available. ie. query slotIndex 1 in a single sim device
int devIdSecond = telMgr.getDeviceId(1);
//if(devIdSecond == null)
// no second sim slot available
這是在API中加入23 - 文檔here
感謝您的回答,請讓我知道如何檢查從手機目錄輸入的電話號碼是否有效 – 2010-10-21 09:23:11
這對於雙SIM設備如何工作? – gonzobrains 2013-05-02 22:52:16
你可以用下面的代碼檢查:
public static boolean isSimSupport(Context context)
{
TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); //gets the current TelephonyManager
return !(tm.getSimState() == TelephonyManager.SIM_STATE_ABSENT);
}
找到了另一種方法來做到這一點。
public static boolean isSimStateReadyorNotReady() {
int simSlotCount = sSlotCount;
String simStates = SystemProperties.get("gsm.sim.state", "");
if (simStates != null) {
String[] slotState = simStates.split(",");
int simSlot = 0;
while (simSlot < simSlotCount && slotState.length > simSlot) {
String simSlotState = slotState[simSlot];
Log.d("MultiSimUtils", "isSimStateReadyorNotReady() : simSlot = " + simSlot + ", simState = " + simSlotState);
if (simSlotState.equalsIgnoreCase("READY") || simSlotState.equalsIgnoreCase("NOT_READY")) {
return true;
}
simSlot++;
}
}
return false;
}
- 1. 檢查移動數據是從SIM卡或SIM卡2 Android
- 2. WinCE MFC檢查SIM卡是否存在?
- 3. 如何檢測設備是否沒有使用iphone sdk的SIM卡?
- 4. 如何檢查錄音是否在Android設備中可用。
- 5. Android:如何檢查設備上的閃光燈是否可用?
- 6. 如何檢查Android設備是否可以訪問互聯網?
- 7. 如何檢查是否安裝了SIM卡
- 8. Android檢查是否使用意圖RECORD_SOUND_ACTION在設備上可用
- 9. 檢查一個特定的應用程序是否可用於Android設備
- 10. React-Native如何檢查安裝的SIM卡或不在設備中?
- 11. 如何檢查Google身份驗證器是否可在Android設備上使用?
- 12. Android:如何在Android中獲取兩張SIM卡的SIM卡ID?
- 13. 如何「鎖定」設備,取出SIM卡或SD卡?
- 14. 如何檢查Android設備是否具有語音功能
- 15. 如何檢查配對設備是否在線 - Android程序
- 16. 如何檢查我的android設備是否有連接?
- 17. 如何檢查Android設備是否連接到網絡?
- 18. 如何檢查中文android設備是否與Google API兼容?
- 19. 如何從Dual Sim Android設備獲取Sim Operator Name。
- 20. 我想檢查每次Android設備啓動時的SIM狀態
- 21. 如何檢測本地Android設備是否可穿戴?
- 22. 檢測雙SIM卡Android手機中兩張SIM卡的狀態
- 23. 如何檢測SIM卡1或SIM卡2上的呼叫
- 24. 檢查SD卡是否可用或不在設備編程的Windows Phone芒果
- 25. 雙SIM卡Android
- 26. 是否有可能檢查設備是否越獄?
- 27. 是否有可能知道SIM卡狀態 - 對於iPhone編程
- 28. 如何檢查何時網絡在Android設備上不可用?
- 29. 如何檢查設備是使用
- 30. 在移動設備上的SIM卡檢測
那些沒有SIM卡的CDMA手機呢? – Falmarri 2010-10-20 18:52:18
@Senthil Mg你能告訴我如何知道sim卡是否可以在手機中使用?我的意思是我嘗試過使用電話管理器,但我無法得到正確的答案。你能否給我一個簡單的例子,以便我能更好地理解。 – anddev 2012-01-24 05:32:17
@Mansi Vora,明確你面對的問題,你是否檢查了下面的答案。 – 2012-01-24 06:18:11