Setelah banyak riset di forum, sekarang saya tahu bahwa tidak ada cara untuk menemukan IMSI atau nomor seri SIM untuk kedua kartu SIM di ponsel SIM ganda (kecuali untuk menghubungi pabrikan). Sekarang pertanyaan saya yang berubah adalah, dapatkah kita sama sekali mendeteksi bahwa ponsel memiliki dua SIM? Saya yakin itu dapat dideteksi dengan kecerdasan tertentu. Beberapa cara yang bisa saya pikirkan adalah:
Memanggil kode USSD dan menelusuri log untuk nomor IMEI (Saya mencoba ini dengan * 139 # di India. Berhasil.) Ini akan memberi saya nomor IMEI untuk SIM yang saya gunakan untuk memutar kode USSD. (Diasumsikan bahwa ponsel mengikuti pedoman Android dan memiliki dua nomor IMEI.)
Menyimpan nomor seri SIM dan / atau IMSI untuk SIM tersebut. Dan setelah mendeteksi nomor IMSI / Serial lainnya bahkan jika telepon tidak di-boot ulang (yaitu SIM dialihkan) dengan melacak beberapa log atau dengan beberapa penanganan acara siaran.
Dengan menekan * 06 # Anda akan melihat kedua nomor IMEI. Ngomong-ngomong, dapatkan kedua angka itu. (Sesuatu seperti pengambilan layar dan penguraian gambar untuk teks.)
Jika ada yang bisa memikirkan cara lain, mereka sangat disambut. Saya akan sangat menghargai bantuan apa pun terkait hal ini. Selain itu, jika ada yang memiliki informasi tentang API produsen atau tautan untuk menghubungi mereka, silakan bagikan dengan orang-orang komunitas.
Jawaban:
Pembaruan 23 Maret'15:
Opsi lain yang memungkinkan:
Anda dapat menggunakan refleksi Java untuk mendapatkan kedua nomor IMEI.
Dengan menggunakan nomor IMEI ini, Anda dapat memeriksa apakah ponsel itu SIM DUAL atau bukan.
Coba aktivitas berikut:
Dan ini dia
TelephonyInfo.java
:Edit:
Mendapatkan akses metode seperti "getDeviceIdGemini" untuk detail slot SIM lain memiliki prediksi bahwa metode tersebut ada.
Jika nama metode itu tidak cocok dengan yang diberikan oleh produsen perangkat maka itu tidak akan berfungsi. Anda harus menemukan nama metode yang sesuai untuk perangkat tersebut.
Menemukan nama metode untuk pabrikan lain dapat dilakukan dengan menggunakan refleksi Java sebagai berikut:
EDIT:
Seperti yang ditunjukkan Seetha dalam komentarnya:
Ini berhasil untuknya. Dia berhasil mendapatkan dua nomor IMEI untuk kedua SIM di perangkat Samsung Duos.
Menambahkan
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
EDIT 2:
Metode yang digunakan untuk mengambil data adalah untuk Lenovo A319 dan ponsel lain oleh pabrikan itu (Kredit Maher Abuthraa ):
sumber
com.android.internal.telephony.RILConstants$SimCardID
internal. Bahkan mencoba membuat kelas itu dengan tanda tangan yang sama dari metode dan nama variabel yang sama. Tapi tidak beruntung. Akan mencoba mendapatkan kode sumber dan akan mencoba memeriksa. Terima kasih.Saya memiliki perangkat Samsung Duos dengan Android 4.4.4 dan metode yang disarankan oleh Seetha dalam jawaban yang diterima (yaitu panggilan getDeviceIdDs) tidak berfungsi untuk saya, karena metode tersebut tidak ada. Saya dapat memulihkan semua informasi yang saya butuhkan dengan memanggil metode "getDefault (int slotID)", seperti yang ditunjukkan di bawah ini:
Juga, saya menulis ulang kode yang secara iteratif menguji metode untuk memulihkan informasi ini sehingga menggunakan array nama metode alih-alih urutan coba / tangkap. Misalnya, untuk menentukan apakah kami memiliki dua SIM aktif, kami dapat melakukan:
Dengan cara ini, jika nama metode baru disarankan untuk beberapa perangkat, Anda cukup menambahkannya ke array dan itu akan berfungsi.
sumber
Ada beberapa solusi asli yang saya temukan saat mencari cara untuk memeriksa operator jaringan.
Untuk API> = 17:
Di AndroidManifest, tambahkan izin:
Untuk mendapatkan operator jaringan, Anda dapat memeriksa kode mcc dan mnc:
Untuk API> = 22:
Untuk API> = 23. Untuk sekadar memeriksa apakah ponsel dual / triple / banyak sim:
sumber
Saya dapat membaca kedua IMEI dari Telepon OnePlus 2
sumber
Saya sedang melihat log panggilan dan saya perhatikan bahwa selain kolom biasa dalam konten managedCursor, kami memiliki kolom "simid" di ponsel Dual SIM (saya memeriksa Xolo A500s Lite), untuk menandai setiap panggilan di log panggilan dengan SIM. Nilai ini bisa 1 atau 2, kemungkinan besar menunjukkan SIM1 / SIM2.
Saya tidak menemukan kolom ini di satu telepon SIM (saya memeriksa Xperia L).
Jadi meskipun menurut saya ini bukan cara yang sangat mudah untuk memeriksa sifat SIM ganda, saya mempostingnya di sini karena itu bisa berguna bagi seseorang.
sumber
Tips:
Anda bisa mencoba menggunakan
ctx.getSystemService("phone_msim")
dari pada
ctx.getSystemService(Context.TELEPHONY_SERVICE)
Jika Anda sudah mencoba jawaban Vaibhav dan
telephony.getClass().getMethod()
gagal, di atas adalah yang berfungsi untuk ponsel Qualcomm saya .sumber
Saya telah menemukan properti sistem ini di Samsung S8
Juga, menurut sumber: https://android.googlesource.com/platform/frameworks/base/+/master/telephony/java/com/android/internal/telephony/TelephonyProperties.java
getprop persist.radio.multisim.config
mengembalikan "dsds
" atau "dsda
" pada multi sim.Saya telah menguji ini di Samsung S8 dan berhasil
sumber
Commonsware mengatakan ini tidak mungkin. Silakan lihat yang berikut ini:
Mendeteksi SIM Ganda menggunakan Android SDK tidak dimungkinkan.
Berikut dialog lebih lanjut tentang masalah ini:
Petugas tim pengembang Google mengatakan bahwa mendeteksi SIM Ganda menggunakan Android SDK tidak mungkin.
sumber