Tôi muốn phát hiện xem có hai thẻ SIM có trong điện thoại Android dual-SIM của tôi theo chương trình hay không. Tôi tìm thấy một API (TelephonyManager.getSIMState()
), nhưng nó là dành cho điện thoại đơn SIM bình thường. Có bất kỳ API nào để phát hiện xem hai SIM có được lắp vào điện thoại dual-SIM của tôi không?Phát hiện trạng thái của hai thẻ SIM trong điện thoại Android dual-SIM
Trả lời
Android không hỗ trợ nhiều SIM, ít nhất là từ SDK. Các nhà sản xuất thiết bị đã tạo thiết bị nhiều SIM đang tự làm như vậy. Bạn có thể liên hệ với nhà sản xuất thiết bị của mình và xem họ có tiện ích SDK hay thứ gì đó cho phép bạn truy cập vào SIM thứ hai hay không.
Edit:(15 tháng 7 năm 2015)
Kể từ API 22, bạn có thể kiểm tra cho nhiều SIM sử dụng SubscriptionManager
's phương pháp getActiveSubscriptionInfoList()
. Chi tiết khác trên Android Docs.
Nó sẽ là tốt hơn để đề cập đến phiên bản SDK được đề cập trong câu trả lời. Khi câu trả lời này được xem sau nhiều năm, tuyên bố được đưa ra có thể gây hiểu nhầm. – Narayanan
Từ Android 5.2 trở đi, android bắt đầu hỗ trợ nhiều điện thoại di động sim! – Saty
có một số cách để phát hiện sim kép thông qua phản ánh java, có chính thức không thể, nhưng trong hầu hết các trường hợp có một số hack, xem: http://stackoverflow.com/questions/14517338/android-check-whether-the-phone -is-dual-sim –
Vâng, đây không phải là bằng chứng đánh lừa. Nhưng nếu bạn có hai SIM mà là trên hai nhà khai thác mạng khác nhau mà bạn có thể thử một cái gì đó như thế này:
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);
}
}
Lý tưởng nhất là bạn sẽ nhận được trạng thái dịch vụ SIM thay đổi sự kiện cho cả hai thẻ SIM và sau đó bạn có thể kiểm tra tên nhà điều hành mạng hoặc một cái gì đó như thế để kiểm tra xem bạn có hai thẻ SIM hay không. Nhưng bạn cần phải có hai thẻ SIM chạy trên hai mạng khác nhau.
Làm cách nào để phân biệt thẻ SIM nào đang hoạt động? – gonzobrains
@gonzobrains: Rất tiếc, cảm ơn vì đã thông báo. Đã cập nhật câu trả lời. – Rajkiran
Từ bây giờ, nếu điện thoại được hỗ trợ MTK, bạn có thể sử dụng lớp TelephonyManagerEx từ MediaTek SDK.
Hãy xem the docs.
Có thể có [chi nhánh bcm_ds] (https://code.google.com/p/android/issues/detail?id=14799#c26) hoặc SDK MediaTek là tiêu chuẩn trong [Android One] (https: //en.wikipedia .org/wiki/Android_One). Cả hai [thêm] (https://android.googlesource.com/platform/packages/providers/TelephonyProvider/+/b09babbf321c225b14abb013a6e1ed7041c45d06/src/com/android/providers/telephony/SmsProvider.java#275) 'SmsManager.getDefault (slotId) 'API. Ra mắt cùng một tiêu chuẩn sim kép trong Android One và MediaTek SDK và là đối tác. Tính năng nâng cao [đã đóng "lỗi thời"] (https://code.google.com/p/android/issues/detail?id=14799#c27). –
Có điều này rất hữu ích –
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. Trình quản lý điện thoại Android để phát hiện sim
- 2. Cách nhận số điện thoại di động nếu điện thoại Android của tôi có hai thẻ SIM?
- 3. Quyền của Android: Cuộc gọi điện thoại: đọc trạng thái điện thoại và nhận dạng
- 4. thông báo trên thanh trạng thái trong điện thoại android
- 5. iPhone - Phát hiện tính khả dụng của thẻ SIM
- 6. Cách nhận số điện thoại của điện thoại trong mã Android?
- 7. không có thanh trạng thái trong khoảng cách điện thoại?
- 8. Trình nghe trạng thái điện thoại được gọi nhiều lần
- 9. Làm cách nào để nhận trạng thái cuộc gọi đi trong điện thoại Android?
- 10. Trạng thái phát hiện phát hiện vấn đề trong DataGridView
- 11. Gọi từ sim thứ hai
- 12. Android phát hiện sự kiện khóa điện thoại
- 13. Dual Sim Android
- 14. Phát hiện thay đổi SIM HOẶC tìm IMSI của SIM bằng SDK iOS chính thức?
- 15. Phát hiện trạng thái nguồn USB
- 16. Cách phát hiện trạng thái hiện tại trong chỉ thị
- 17. Trả về getLine1Number() với điện thoại SIM kép là gì?
- 18. onCreateOptionsMenu android gọi hai lần khi khôi phục trạng thái
- 19. Cách mô phỏng thẻ SIM cho android
- 20. Phát hiện Nhà cung cấp Điện thoại khi cài đặt
- 21. dual sim android sdk
- 22. Phát hiện trạng thái cuộc gọi trong iOS4
- 23. Android: Kết nối hai điện thoại không dây?
- 24. Có thể viết bộ thu phát sóng Android phát hiện khi điện thoại thức dậy không?
- 25. Phát trực tiếp video trực tiếp giữa hai điện thoại Android
- 26. ứng dụng phonegap của tôi trông nhỏ hơn trong điện thoại Android HD, điện thoại HDPI và XHDPI
- 27. Phát hiện Thay đổi trạng thái pin ở mọi tỷ lệ phần trăm trong android
- 28. trạng thái phát và thoát
- 29. Phát video trên AVD bằng điện thoại
- 30. Đọc RFID với điện thoại Android
[Đây là giải pháp đầy đủ cho những gì bạn đang tìm kiếm] (http://stackoverflow.com/a/17499889/703851) –
sử dụng Cố gắng thư viện Multisim: http://stackoverflow.com/a/41544422/1665964 –