返回顶部

收藏

Android获取系统唯一识别码

更多

特殊应用需要白名单机器才能访问

官方链接:Android Identifying App Installations

需要在Manifest中申请android.permission.READ_PHONE_STATE

public class helper {

    private static String TAG="util.helper";

    private static String SYS_ID = null;

    public static String getUniqDeviceId(Context context) {
        String id = getUniqueID(context);
        if (id == null)
            id = Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID);
        return id;
    }

    public static String getStringIntegerHexBlocks(int value) {
        String result = "";
        String string = Integer.toHexString(value);

        int remain = 8 - string.length();
        char[] chars = new char[remain];
        Arrays.fill(chars, '0');
        string = new String(chars) + string;

        int count = 0;
        for (int i = string.length() - 1; i >= 0; i--) {
            count++;
            result = string.substring(i, i + 1) + result;
            if (count == 4) {
                result = "-" + result;
                count = 0;
            }
        }

        if (result.startsWith("-")) {
            result = result.substring(1, result.length());
        }

        return result;
    }

    private static String getUniqueID(Context context) {

        if ( SYS_ID != null ) {
            return SYS_ID;
        }

        String telephonyDeviceId;
        String androidDeviceId;

        String error = "0000-0000-0000-0000";

        // get telephony id
        try {
            final TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
            telephonyDeviceId = tm.getDeviceId();
            if (telephonyDeviceId == null) {
                Log.e(TAG, "Get TelephonyManager DeviceId(IMEI) Error");
                return error;
            }
            Log.e(TAG, "TelephonyManager getDeviceId: " + telephonyDeviceId);
        } catch (Exception e) {
            Log.e(TAG, "Get TelephonyManager DeviceId(IMEI) Error" + e.getMessage());
            return error;
        }

        // get internal android device id
        try {
            androidDeviceId = android.provider.Settings.Secure.getString(context.getContentResolver(),
                    android.provider.Settings.Secure.ANDROID_ID);
            if (androidDeviceId == null) {
                Log.e(TAG, "Get androidDeviceId Error");
                return error;
            }
            Log.e(TAG, "android.provider.Settings.Secure.ANDROID_ID : " + androidDeviceId );
        } catch (Exception e) {
            Log.e(TAG, "Get androidDeviceId Error"+e.getMessage());
            return error;
        }

        // build up the uuid
        try {
            String id = getStringIntegerHexBlocks(androidDeviceId.hashCode())
                    + "-"
                    + getStringIntegerHexBlocks(telephonyDeviceId.hashCode());

            SYS_ID = id;
            Log.e(TAG, SYS_ID);
            return SYS_ID;
        } catch (Exception e) {
            return error;
        }
    }
}

来自:http://blog.suchasplus.com/2015/02/android-get-imei-and-ANDROID-ID.html

标签:java,android

收藏

0人收藏

支持

0

反对

0

发表评论