Android獲取系統唯一識別碼

jopen 9年前發布 | 2K 次閱讀 Java 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;
    }
}

}</pre>
來自:http://blog.suchasplus.com/2015/02/android-get-imei-and-ANDROID-ID.html

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!