獲取設(shè)備位移識別碼

1. IMEI

<u>不建議獲取IMEI碼, 此碼其實是對應(yīng)sim卡的, 而某些安卓設(shè)備可能沒有sim卡, 而另一些可能雙卡雙待有兩個sim卡</u>

2. WLAN MAC Address

使用wifi的物理地址來作為識別碼, 每個設(shè)備都可以使用, 而且每個設(shè)備都不一樣

參考: https://stackoverflow.com/questions/1972381/how-to-get-the-devices-imei-esn-programmatically-in-android

使用方法:

WifiManager m_wm = (WifiManager)getSystemService(Context.WIFI_SERVICE); 
String m_wlanMacAdd = m_wm.getConnectionInfo().getMacAddress();

權(quán)限:

 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

2.1 android 6.x 以上物理地址獲取失敗

參考:https://developer.android.com/about/versions/marshmallow/android-6.0-changes.html
wifi 和藍(lán)牙會返回 02:00:00:00:00:00
參考:
1.貌似是吵得 少了個函數(shù):
http://blog.csdn.net/randyjiawenjie/article/details/6589489

  1. 這個是全的, 不知道是否是原作者:
    http://blog.csdn.net/andoop/article/details/54633077
    3.獲取安卓系統(tǒng)版本, 順便一提.SDK(string)已經(jīng)過時, 使用.SDK_INT(int)替代
    https://stackoverflow.com/questions/3093365/how-can-i-check-the-system-version-of-android
    我經(jīng)過改良了一下, 原代碼判斷不成立
//獲取wifi mac地址
    public static String getMacAddress(Context context) {  
        //該方法在6.0 系統(tǒng) 不再開發(fā),返回 02:00:00:00:00:00  
        if (isUnderAndroid6()) {  
            WifiManager wifiMgr = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);  
            WifiInfo wifiInfo = wifiMgr.getConnectionInfo();  
            return wifiInfo.getMacAddress();
        }  
        String macAddress = null;  
        StringBuffer buf = new StringBuffer();  
        NetworkInterface networkInterface = null;  
        try {
            networkInterface = NetworkInterface.getByName("wlan0");
            if (networkInterface == null) {  
                networkInterface = NetworkInterface.getByName("eth1");
            }  
            if (networkInterface == null) {  
                return "02:00:00:00:00:02";  
            }  
            byte[] addr = networkInterface.getHardwareAddress();  
            for (byte b : addr) {  
                buf.append(String.format("%02X:", b));  
            }  
            if (buf.length() > 0) {  
                buf.deleteCharAt(buf.length() - 1);  
            }  
            macAddress = buf.toString();  
        } catch (SocketException e) {  
            e.printStackTrace();  
            return "02:00:00:00:00:02";  
        }   
        return macAddress;  
    }  
    
    //檢測系統(tǒng)是否低于android6.0
    private static boolean isUnderAndroid6() {
        Log.i("debug","sdk version:"+android.os.Build.VERSION.SDK_INT);
        if (android.os.Build.VERSION.SDK_INT<=23) {
            //Log.e("----->" + "NetInfoManager", "isAccessWifiStateAuthorized:" + "access wifi state is enabled");
            return true;
        } else
            return false;
    }

2.2 md5加密

獲取唯一碼有時候需要md5來生成特征碼:
結(jié)合了作者和樓下的評論合并:
http://blog.csdn.net/randyjiawenjie/article/details/6589489
md5在線校驗網(wǎng)站: https://md5jiami.51240.com/

//加密 md5 32位 小寫
    public static String MD5It(String str){  
        MessageDigest md5 = null;
        try {
            md5 = MessageDigest.getInstance("MD5");
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }  
        if(md5!=null){
            md5.update(str.getBytes());
            BigInteger mBInteger = new BigInteger(1, md5.digest());
            return mBInteger.toString(16);
        }
         return str;
    }  
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容