高通 Android 12/13获取IMIE号

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" />

猜你喜欢

转载自blog.csdn.net/qq_15950325/article/details/129538787