获取设备信息

    SuppressLint("MissingPermission")
    public static String getIMEI() {
        String inner = "\n------\n";
        String outer = "\n\n###################\n";
        StringBuilder imei = new StringBuilder();
        String className = null;
        imei
            .append("TelephonyManagerEx=\n")
            .append(getIMEIFromTm(className="com.mediatek.telephony.TelephonyManagerEx","getDeviceId"))
            .append(inner)
            .append(getIMEIFromTm(className,"getImei"))
            .append(inner)
            .append(getIMEIFromTm(className,"getSubscriberId"))
            .append(outer)
            .append("MSimTelephonyManager=\n")
            .append(getIMEIFromTm(className="android.telephony.MSimTelephonyManager","getDeviceId"))
            .append(inner)
            .append(getIMEIFromTm(className,"getImei"))
            .append(inner)
            .append(getIMEIFromTm(className,"getSubscriberId"))
            .append(outer)
            .append("TelephonyManager=\n")
            .append(getIMEIFromTm(className="android.telephony.TelephonyManager","getDeviceId"))
            .append(inner)
            .append(getIMEIFromTm(className,"getImei"))
            .append(inner)
            .append(getIMEIFromTm(className,"getSubscriberId"))
            .append(outer)
            .append("Build=\n")
            .append(Build.SERIAL)
        ;
        return imei.toString();
    }

    private static String getIMEIFromTm(String className,String methodName)
    {
        Object tm = getTM(className);
        if(tm == null)
        {
            return "not found ";
        }
        Object result;
        String imei = "";
        try
        {
            Method method = tm.getClass().getMethod(methodName);
            result = method.invoke(tm);
        }catch (Exception e)
        {
            result = e.getClass().getSimpleName();
        }
        imei += methodName+"():"+result;

        if("getDeviceId".equalsIgnoreCase(methodName))
        {
            try {
                Method method = tm.getClass().getMethod(methodName, int.class);
                result = method.invoke(tm,0);
            } catch (Exception e) {
                result =e.getClass().getSimpleName();
            }
            imei +="\n"+methodName+"(int):"+result;
        }


        return imei;
    }

    private static Object getTM(String className)
    {
        try {
            Class v4_6 = Class.forName(className);
            Method method = v4_6.getDeclaredMethod("getDefault");
            method.setAccessible(true);
            return method.invoke(v4_6);
        } catch (Exception e) {
            return null;
        }
    }

猜你喜欢

转载自www.cnblogs.com/boliu/p/9110343.html