title: No IMEI for Android Developers in Android 10
body: <p>As Android is serious about security and trying to make new android versions more secure, its becoming tough for developers to keep up-to date with new security features and find old methods alternatives to make their app compatible with old features.</p>
  
  <p><strong>This question is about IMEI in New Android 10!</strong>
  The old method was super easy to get IMEI number by using below code</p>
  
  <pre><code>  String deviceId = "";
  
      if (Build.VERSION.SDK_INT &gt;= 26) {
          if (telMgr.getPhoneType() == TelephonyManager.PHONE_TYPE_CDMA) {
              deviceId = telMgr.getMeid();
          } else if (telMgr.getPhoneType() == TelephonyManager.PHONE_TYPE_GSM) {
              deviceId = telMgr.getImei();
          } else {
              deviceId = ""; // default!!!
          }
      } else {
          deviceId = telMgr.getDeviceId();
      }
  </code></pre>
  
  <p>In New Android 10 it is now restricted to get IMEI number. According to android documentation</p>
  
  <blockquote>
    <p>apps must have the READ_PRIVILEGED_PHONE_STATE privileged permission in order to access the device's non-resettable identifiers, which include both IMEI and serial number.</p>
  </blockquote>
  
  <p>The problem is that when we try to ask run time permissions with</p>
  
  <pre><code>  android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE
  </code></pre>
  
  <p>My compiler does not recognize this permissions and i got error on this line but when i ask this permission in manifest file it does recognize this line but through warning that this permission is only for system apps.</p>
  
  <p>I want to make my app compatible with Android 10 and want to get IMEI. How can i get IMEI number in Android 10 without becoming device owner or profile owner ?</p>