1、由于我们工厂smt需要显示imei号,因此需要

2、查阅相关资料Android O(之后)Android 10之后进行限制

3、通过反射获取 imei号

/**

* 反射获取 deviceId

*

* @param context

* @param slotId slotId为卡槽Id,它的值为 0、1;

* @return

*/

public static String getDeviceIdByReflect(Context context, int slotId) {

try {

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

Method method = tm.getClass().getMethod("getImei", int.class);

return method.invoke(tm, slotId).toString();

} catch (Throwable e) {

}

return "";

}

4、通过 TelephonyManager 中getImei()方法获取

/**

* getImei获取 deviceId

*

* @param context

* @param slotId slotId为卡槽Id,它的值为 0、1;

* @return

*/

public static String getDeviceIdByGetImei(Context context, int slotId) {

try {

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

if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {

@SuppressLint("MissingPermission") String imeiNum = tm.getImei();

}

// Method method = tm.getClass().getMethod("getImei", int.class);

//

// return method.invoke(tm, slotId).toString();

} catch (Throwable e) {

}

return "";

}

5、结果 获取imei号 如下图所示

6、到这里基本结束了,转载请注明出处,谢谢

7、记得添加系统权限 否则获取imei号可能会为null

android:sharedUserId="android.uid.system"