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"<uses-permission android:name="android.permission.READ_PHONE_STATE" />
 
版权声明:本文为qq_15950325原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
