See sample:
private int REQUEST_PERMISSION_PHONE_STATE = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
showPhoneStatePermission();
}
private void showPhoneStatePermission() {
int permissionCheck = ContextCompat.checkSelfPermission(
this, Manifest.permission.READ_PHONE_STATE);
if (permissionCheck != PackageManager.PERMISSION_GRANTED) {
requestPermission(Manifest.permission.READ_PHONE_STATE, REQUEST_PERMISSION_PHONE_STATE);
} else {
getIMEI();
}
}
private void getIMEI() {
String deviceId = IMEIUtil.getDeviceId(this);
toastMessage(deviceId);
}
private void requestPermission(String permissionName, int permissionRequestCode) {
ActivityCompat.requestPermissions(this,
new String[]{permissionName}, permissionRequestCode);
}
private void toastMessage(String msg) {
Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == REQUEST_PERMISSION_PHONE_STATE) {
showPhoneStatePermission();
}
}
And class IMEIUtil
:
public static String getDeviceId(Context context) {
TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
String deviceId = telephonyManager.getDeviceId().trim();
if (deviceId == null) {
String androidId = Settings.Secure.getString(context.getContentResolver(),
Settings.Secure.ANDROID_ID);
deviceId = android.os.Build.SERIAL + "#" + androidId;
}
return deviceId.trim();
}
Require add permission <uses-permission android:name="android.permission.READ_PHONE_STATE" />
before tag <application>
on AndroidManifest. You can see full code: https://github.com/HoangDang/GetIMEI/tree/master/GetIMEI. I hope it can help you!