我想要檢測我的雙卡android手機中是否有兩張SIM卡以編程方式存在。我發現了一個API(TelephonyManager.getSIMState()
),但它適用於普通的單卡手機。有沒有任何API可以檢測我的雙SIM卡手機中是否插入了兩張SIM卡?檢測雙SIM卡Android手機中兩張SIM卡的狀態
回答
Android不支持多個SIM卡,至少從SDK。已經創建多SIM設備的設備製造商正在自行完成。歡迎您與您的設備製造商聯繫,看看他們是否有SDK附加組件或允許您訪問第二張SIM卡的東西。
編輯:(2015年7月15日)
由於API 22,你可以檢查使用SubscriptionManager
的方法getActiveSubscriptionInfoList()
多個SIM。有關Android Docs的更多詳細信息。
那麼,這不是傻瓜證明。但如果你有兩個SIM這是兩個不同的網絡運營商,你可以嘗試這樣的事:
PhoneServiceStateListener listener = new PhoneServiceStateListener(this);
tm.listen(listener, PhoneStateListener.LISTEN_SERVICE_STATE);
.
.
.
class PhoneServiceStateListener extends PhoneStateListener {
Context context = null;
public PhoneServiceStateListener(Context context) {
this.context = context;
}
public PhoneServiceStateListener() {
}
@Override
public void onServiceStateChanged(ServiceState serviceState) {
if (serviceState.getState() == ServiceState.STATE_IN_SERVICE) {
//You get this event when your SIM is in service.
//If you get this event twice, chances are more that your phone is Dual SIM.
//Alternatively, you can toggle Flight Mode programmatically twice so
//that you'll get service state changed event.
}
super.onServiceStateChanged(serviceState);
}
}
理想情況下,你會得到SIM服務狀態來爲SIM卡改變事件,然後您可以檢查網絡運營商名稱或者類似的東西來檢查你是否有兩張SIM卡。但是你需要在兩個不同的網絡上運行兩個SIM卡。
它如何識別哪個SIM卡處於活動狀態? – gonzobrains
@gonzobrains:哎呀,謝謝你的通知。更新了答案。 – Rajkiran
從現在起,如果手機是MTK支持的手機,您可以使用MediaTek SDK中的TelephonyManagerEx類。
看看the docs。
表面上[bcm_ds分支](https://code.google.com/p/android/issues/detail?id=14799#c26)或MediaTek SDK在[Android One]中是標準的(https://en.wikipedia .ORG /維基/ Android_One)。 [add](https://android.googlesource.com/platform/packages/providers/TelephonyProvider/+/b09babbf321c225b14abb013a6e1ed7041c45d06/src/com/android/providers/telephony/SmsProvider.java#275)'SmsManager.getDefault(slotId )'API。同時在Android One和MediaTek SDK中推出雙SIM卡標準,並且是合作伙伴。增強[關閉「過時」](https://code.google.com/p/android/issues/detail?id=14799#c27)。 –
是的,這非常有幫助 –
final SubscriptionManager subscriptionManager = SubscriptionManager.from(getApplicationContext());
final List<SubscriptionInfo> activeSubscriptionInfoList = subscriptionManager.getActiveSubscriptionInfoList();
int simCount = activeSubscriptionInfoList.size();
btnBack.setText(simCount+" Sim available");
Log.d("MainActivity: ","simCount:" +simCount);
for (SubscriptionInfo subscriptionInfo : activeSubscriptionInfoList) {
Log.d("MainActivity: ","iccId :"+ subscriptionInfo.getIccId()+" , name : "+ subscriptionInfo.getDisplayName());
}
- 1. Android:如何獲取雙SIM卡手機中的SIM卡的SIM卡號碼
- 2. 從雙SIM卡手機發送短信到另一張SIM卡
- 3. Android:如何在Android中獲取兩張SIM卡的SIM卡ID?
- 4. 檢測雙卡手機中的當前/主SIM卡
- 5. 雙SIM卡Android
- 6. 從雙SIM卡手機中的每張SIM卡分別讀取聯繫人
- 7. 獲取SimOperatorName的雙SIM卡android手機
- 8. Android:在雙SIM手機getSimCountryIso()返回哪個SIM卡?
- 9. 雙SIM卡更改默認SIM卡
- 10. 短信管理雙SIM卡手機?
- 11. 如何檢測android手機中的SIM卡更改?
- 12. 如果我的android手機有兩張SIM卡,如何獲取手機號碼?
- 13. 獲取雙SIM卡android移動設備上的兩個SIM卡插槽的IMEI
- 14. 如何在android 3.0中檢測SIM卡?
- 15. 虛擬實體SIM卡到Android手機
- 16. Android獲取手機SIM卡號碼
- 17. 如何檢測SIM卡1或SIM卡2上的呼叫
- 18. 檢測SIM卡改變(codenameOne)
- 19. J2ME SIM卡更改檢測
- 20. 檢測SIM卡更換
- 21. 如何從雙SIM卡手機中獲得兩個IMEI號碼?
- 22. 如何在雙SIM卡插槽中更改SIM卡的信息?
- 23. 如何在雙SIM卡手機android中獲取SIMOperator?
- 24. 具有相同IMSI的兩張SIM卡
- 25. Android電話管理器檢測SIM卡
- 26. 檢查移動數據是從SIM卡或SIM卡2 Android
- 27. Android:如何在雙卡手機中發送特定SIM卡的短信?
- 28. 選擇SIM卡發送雙SIM卡上的短信索尼xperia
- 29. 如何從雙SIM卡手機Android獲取運營商名稱?
- 30. android sim卡聽衆
[以下是完整的解決方案爲您所尋找的(http://stackoverflow.com/a/17499889/703851) –
嘗試使用MultiSim的庫:http://stackoverflow.com/a/41544422/1665964 –