Mengembalikan IMEI Semua SIM Card dengan Menggunakan Lollipop MR1

Mengembalikan IMEI Semua SIM Card dengan Menggunakan Lollipop MR1

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.