1. 程式人生 > >獲取手機唯一識別碼

獲取手機唯一識別碼

package com.shkf.util;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

import android.annotation.SuppressLint;
import android.content.Context;
import android.os.Build;
import android.provider.Settings;

public class GetMacUtil {
	/**
	 * 獲取手機IMEI號
	 * 
	 * 需要動態許可權: android.permission.READ_PHONE_STATE
	 */
	@SuppressLint("NewApi") 
	public static String getUniqueId(Context context){
        String androidID = Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID);
        String id = androidID + Build.SERIAL;
        try {
            return toMD5(id);
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
            return id;
        }
    }


    private static String toMD5(String text) throws NoSuchAlgorithmException {
        //獲取摘要器 MessageDigest
        MessageDigest messageDigest = MessageDigest.getInstance("MD5");
        //通過摘要器對字串的二進位制位元組陣列進行hash計算
        byte[] digest = messageDigest.digest(text.getBytes());

        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < digest.length; i++) {
            //迴圈每個字元 將計算結果轉化為正整數;
            int digestInt = digest[i] & 0xff;
            //將10進位制轉化為較短的16進位制
            String hexString = Integer.toHexString(digestInt);
            //轉化結果如果是個位數會省略0,因此判斷並補0
            if (hexString.length() < 2) {
                sb.append(0);
            }
            //將迴圈結果新增到緩衝區
            sb.append(hexString);
        }
        //返回整個結果
        return sb.toString();
    }
}
獲取手機的IMEI號再加密計算然後返回
IMEI