Dalam postingan ini, kita akan membahas bagaimana mendapatkan IMEI dari semua SIM card yang terpasang pada perangkat Android. Pada awalnya, kita dapat hanya mengembalikan IMEI dari SIM pertama menggunakan metode telephonyManager.getDeviceId()
. Namun, dengan adanya Lollipop MR1, kami memiliki kemampuan untuk mengembalikan IMEI dari semua SIM card yang terpasang.
Menggunakan SubscriptionManager dan TelephonyManager
Pada awalnya, kita dapat menggunakan kelas SubscriptionManager
untuk mendapatkan informasi tentang SIM card yang aktif. Namun, untuk mendapatkan IMEI dari semua SIM card, kita perlu menggunakan metode telephonyManager.getDeviceId(int slotId)
.
Metode ini tersedia pada API 23, dan slotId adalah nomor dari 0 hingga jumlah SIM card – 1. Pada API 22, metode ini masih tersedia namun disembunyikan, sehingga kita perlu menggunakan refleksi untuk mengaksesnya.
Berikut adalah contoh kode yang dapat digunakan untuk mendapatkan IMEI dari semua SIM card:
TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < telephonyManager.getPhoneCount(); i++) {
stringBuilder.append(telephonyManager.getDeviceId(i));
stringBuilder.append("\n");
}
txt_imei.setText(stringBuilder.toString());
Dalam contoh kode di atas, kita menggunakan kelas TelephonyManager
untuk mendapatkan informasi tentang SIM card yang terpasang. Kemudian, kita menggunakan metode getPhoneCount()
untuk mendapatkan jumlah SIM card yang terpasang, dan kemudian menggunakan metode getDeviceId(int slotId)
untuk mendapatkan IMEI dari masing-masing SIM card.
Perluasan
Dalam beberapa kasus, perangkat Android dapat memiliki IMEI untuk setiap SIM card yang terpasang. Namun, pada umumnya, IMEI digunakan untuk mengidentifikasi perangkat, bukan SIM card.
Penggunaan Lollipop MR1
Lollipop MR1 memberikan kemampuan lebih lanjut untuk mendapatkan informasi tentang SIM card yang aktif menggunakan kelas SubscriptionManager
. Namun, untuk mendapatkan IMEI dari semua SIM card, kita masih perlu menggunakan metode telephonyManager.getDeviceId(int slotId)
.
Contoh Kode Lengkap
Berikut adalah contoh kode lengkap yang dapat digunakan untuk mendapatkan IMEI dari semua SIM card:
TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < telephonyManager.getPhoneCount(); i++) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
try {
Method method = TelephonyManager.class.getMethod("getDeviceId", int.class);
Object result = method.invoke(telephonyManager, i);
stringBuilder.append(result.toString());
stringBuilder.append("\n");
} catch (Exception e) {
Log.e("Error", "Gagal mendapatkan IMEI SIM card ke-" + i);
}
}
}
txt_imei.setText(stringBuilder.toString());
Dalam contoh kode di atas, kita menggunakan kelas TelephonyManager
untuk mendapatkan informasi tentang SIM card yang terpasang. Kemudian, kita menggunakan metode getPhoneCount()
untuk mendapatkan jumlah SIM card yang terpasang, dan kemudian menggunakan metode getDeviceId(int slotId)
untuk mendapatkan IMEI dari masing-masing SIM card.
Kesimpulan
Dalam postingan ini, kita telah membahas bagaimana mendapatkan IMEI dari semua SIM card yang terpasang pada perangkat Android. Kami telah melihat bagaimana menggunakan kelas SubscriptionManager
dan TelephonyManager
untuk mendapatkan informasi tentang SIM card yang aktif, serta bagaimana menggunakan metode getDeviceId(int slotId)
untuk mendapatkan IMEI dari masing-masing SIM card.