Pertanyaan Bagaimana cara mendapatkan nomor kartu SIM saat ini di Android?


Saya ingin tahu nomor ponsel pengguna di Android. Saya menggunakan kode ini tetapi saya tidak mendapatkan nomor.

TelephonyManager tm = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); 
        String n = tm.getLine1Number();

Izin:

<uses-permission android:name="android.permission.READ_PHONE_STATE"/>

Apakah wajib untuk menyimpan nomor di ponsel android settings --> about phone --> status --> myphone number

Ada ide tentang ini?


32
2017-12-27 07:27


asal


Jawaban:


Saya pikir nomor seri sim dan nomor sim unik. Anda dapat mencoba ini untuk mendapatkan nomor seri sim dan mendapatkan nomor sim dan jangan lupa untuk menambahkan izin dalam manifes file.

TelephonyManager telemamanger = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
String getSimSerialNumber = telemamanger.getSimSerialNumber();
String getSimNumber = telemamanger.getLine1Number();

Dan tambahkan izin di bawah ini ke Anda Androidmanifest.xml mengajukan.

<uses-permission android:name="android.permission.READ_PHONE_STATE"/>

Beri tahu saya jika ada masalah.


24
2017-12-27 07:31



Mendapatkan Nomor Telepon, IMEI, dan ID Kartu SIM

TelephonyManager tm = (TelephonyManager) 
            getSystemService(Context.TELEPHONY_SERVICE);        

Untuk kartu SIM, gunakan getSimSerialNumber ()

    //---get the SIM card ID---
    String simID = tm.getSimSerialNumber();
    if (simID != null)
        Toast.makeText(this, "SIM card ID: " + simID, 
        Toast.LENGTH_LONG).show();

Nomor telepon telepon Anda, gunakan getLine1Number () (beberapa perangkat tidak mengembalikan nomor telepon)

    //---get the phone number---
    String telNumber = tm.getLine1Number();
    if (telNumber != null)        
        Toast.makeText(this, "Phone number: " + telNumber, 
        Toast.LENGTH_LONG).show();

Nomor IMEI telepon, gunakan getDeviceId ()

    //---get the IMEI number---
    String IMEI = tm.getDeviceId();
    if (IMEI != null)        
        Toast.makeText(this, "IMEI number: " + IMEI, 
        Toast.LENGTH_LONG).show();

Izin diperlukan

<uses-permission android:name="android.permission.READ_PHONE_STATE"/>

7
2018-03-17 11:28



Pembaruan: Jawaban ini tidak lagi tersedia karena Whatsapp telah berhenti memperlihatkan nomor telepon sebagai nama akun, mohon abaikan jawaban ini.

================================================== ===============================

Sudah hampir 6 bulan dan saya percaya saya harus memperbarui ini dengan solusi alternatif yang mungkin ingin Anda pertimbangkan.

Mulai hari ini, Anda dapat mengandalkan aplikasi besar lainnya Whatsapp, menggunakan AccountManager. Jutaan perangkat memasang aplikasi ini dan jika Anda tidak dapat memperoleh nomor telepon melalui TelephonyManager, Anda dapat memberikannya.

Izin:

<uses-permission android:name="android.permission.GET_ACCOUNTS" />

Kode:

AccountManager am = AccountManager.get(this);
Account[] accounts = am.getAccounts();

ArrayList<String> googleAccounts = new ArrayList<String>();
for (Account ac : accounts) {
    String acname = ac.name;
    String actype = ac.type;
    // Take your time to look at all available accounts
    System.out.println("Accounts : " + acname + ", " + actype);
}

Periksa akting untuk akun whatsapp

if(actype.equals("com.whatsapp")){
    String phoneNumber = ac.name;
}

Tentu saja Anda mungkin tidak mendapatkannya jika pengguna tidak menginstal Whatsapp, tetapi nilainya harus dicoba. Dan ingat Anda harus selalu meminta konfirmasi kepada pengguna.


6
2018-05-08 04:06



Anda memiliki segalanya dengan benar, tetapi masalahnya adalah dengan getLine1Number() fungsi.

getLine1Number () - metode ini mengembalikan string nomor telepon untuk baris   1, yaitu MSISDN untuk telepon GSM. Kembalikan nol jika tidak tersedia.

metode ini hanya berfungsi untuk beberapa ponsel tetapi tidak semua ponsel.

Jadi, jika Anda perlu melakukan operasi sesuai dengan sim (selain panggilan), maka Anda harus menggunakan getSimSerialNumber(). Ini selalu unik, sah dan itu selalu ada.


3
2017-12-27 07:58



Membutuhkan READ_PHONE_STATE izin.     

TelephonyManager telMgr = (TelephonyManager) 
                           context.getSystemService(Context.TELEPHONY_SERVICE);
String deviceID = telMgr.getDeviceId();
String simSerialNumber = telMgr.getSimSerialNumber(); 
String simLineNumber = telMgr.getLine1Number(); 

1
2017-12-27 07:30



Anda dapat menggunakan TelephonyManager untuk melakukan ini:

TelephonyManager t = (TelephonyManager)getSystemService(TELEPHONY_SERVICE); 
String number = t.getLine1Number();

Apakah kamu pernah menggunakannya

<uses-permission android:name="android.permission.READ_PHONE_STATE"/>

-10
2017-12-27 07:29