对于我的应用,我正在获得设备 IMEI 以获取独特的价值。
要获取 IMEI ,我已使用以下代码
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (mTelephony.getPhoneCount() == 2) {
// Dual sim
IME = mTelephony.getDeviceId(0);
} else {
IME = mTelephony.getDeviceId();
}
} else {
IME = mTelephony.getDeviceId();
}
除了华为设备
,这在大多数设备(可能是所有设备)上都运行良好对于双SIM卡设备-仅需通过一条线路即可获得第一个IMEI
IME = mTelephony.getDeviceId(0);
但是,问题有时是获得第二个 IMEI 号码
答案 0 :(得分:0)
我使用这种方式,它对我有用,尝试一下
fun getDeviceIMEI(context: Context): String? {
try {
val mTelephonyMgr = context.getSystemService(Context.TELEPHONY_SERVICE) as TelephonyManager
if (ContextCompat.checkSelfPermission(context, Manifest.permission.READ_PHONE_STATE)
== PackageManager.PERMISSION_GRANTED
) {
// Permission is granted
val imei: String? = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
mTelephonyMgr.imei
} else { // older OS versions
mTelephonyMgr.getDeviceId()
}
if (imei != null) {
return imei
}
}
} catch (e: Exception) {
e.printStackTrace()
}
return null
}
用kotlin编写,但是您可以了解我在做什么,可以进一步简化它
答案 1 :(得分:0)
getDeviceId(int slot)
在API级别26中已弃用。
对于API 26及更高版本,请使用getImei()
。