Как получить номер IMEI/ESN устройства с программированием кода Но в андроиде › 6

Моя версия Android — Marshmallow 6.0.

Как найти/получить номер imei в android > 6 программно.

Примечание. Я добавил разрешение READ_PHONE_STATE в файл AndroidManifest.xml.

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

И внутри MainActivity

TelephonyManager manager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
String deviceid = manager.getDeviceId();

//Device Id is IMEI number

Log.d("msg", "Device id " + deviceid);

person Amir Hosseinzadeh    schedule 08.09.2016    source источник


Ответы (3)


Моя версия Android — Marshmallow 6.0.

Примечание. Вам нужны разрешения во время выполнения.

Я добавил разрешение READ_PHONE_STATE в файл AndroidManifest.xml.

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

в основной активности:

private static final int PERMISSIONS_REQUEST_READ_PHONE_STATE = 999;

private TelephonyManager mTelephonyManager;

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    if (checkSelfPermission(Manifest.permission.READ_PHONE_STATE)
            != PackageManager.PERMISSION_GRANTED) {
        requestPermissions(new String[]{Manifest.permission.READ_PHONE_STATE},
                PERMISSIONS_REQUEST_READ_PHONE_STATE);
    } else {
        getDeviceImei();
    }
....

@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions,
                                       int[] grantResults) {
    if (requestCode == PERMISSIONS_REQUEST_READ_PHONE_STATE
            && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
        getDeviceImei();
    }
}

private void getDeviceImei() {

    mTelephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
    String deviceid = mTelephonyManager.getDeviceId();
    Log.d("msg", "DeviceImei " + deviceid);
}
person Amir Hosseinzadeh    schedule 09.09.2016

Также метод getDeviceId() устарел на уровне API 26. Поэтому вам нужно использовать getImei() или getAllCellInfo() для получения сведений об imei.

person Ajmal Tk    schedule 04.10.2017

Требуется разрешение: READ_PHONE_STATE

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

/**
 * Gets the device unique id called IMEI. Sometimes, this returns 00000000000000000 for the
 * rooted devices.
 **/
public static String getDeviceImei(Context ctx) {
    TelephonyManager telephonyManager = (TelephonyManager) ctx.getSystemService(Context.TELEPHONY_SERVICE);
    Log.i(Tag, "Return Sim count in device : "+manager.getPhoneCount());
    Log.i(Tag, "Defualt device ID: "+manager.getDeviceId());
    Log.i(Tag, "First Sim IMEI:  "+manager.getDeviceId(0));
    Log.i(Tag, "Secand Sim IMEI "+manager.getDeviceId(1));
    return telephonyManager.getDeviceId();
}

Возвращает значение null, если идентификатор устройства недоступен.

person A-Droid Tech    schedule 04.09.2017
comment
Внимательно прочитайте вопрос, прежде чем копировать и вставлять свой ответ - person Bhavik Mehta; 27.03.2019