目的:
盡可能實現,同一裝置在不刷機不恢復出廠的情況下,每次生成的裝置指紋不變;並且盡可能保證兩部不同的裝置生成的裝置指紋不能一樣)
原理:1.將imei號+手機硬體資訊+androidid拼接成乙個字串(由於個別手機某些時候獲取的wifi mac和藍芽mac不一致,故捨去這兩項);
2.再用md5把以上資訊處理成32位的字串;
**實現如下:
/**
* 獲取裝置指紋的工具類
* * @author barryhuang
* @date 2015-8-19
*/public class fingerprintutil else
return fingerprint;
}/**
* 從sharedpreferences 檔案獲取裝置指紋
** @return fingerprint 裝置指紋
*/private static string readfingerprintfromfile(context context)
/*** 生成乙個裝置指紋(耗時50毫秒以內):
* 1.imei + 裝置硬體資訊(主要)+ android_id + wifi mac組合成的字串
* 2.用messagedigest將以上字串處理成32位的16進製制字串
** @param context
* @return 裝置指紋
*/public static string createfingerprint(context context) else
log.i(tag,"m_szbtmac="+bt_mac);*/
// combined device id
final string deviceid = imei + hardwareinfo + androidid/* + wifimac + bt_mac*/;
log.i(tag, "deviceid=" + deviceid);
// 建立乙個 messagedigest 例項
messagedigest msgdigest = null;
try catch (nosuchalgorithmexception e)
//用 messagedigest 將 deviceid 處理成32位的16進製制字串
msgdigest.update(deviceid.getbytes(), 0, deviceid.length());
// get md5 bytes
byte md5arraydata = msgdigest.digest();
// create a hex string
string deviceuniqueid = new string();
for (int i = 0; i < md5arraydata.length; i++) // hex string to uppercase
deviceuniqueid = deviceuniqueid.touppercase();
log.d(tag, "生成的裝置指紋:" + deviceuniqueid);
log.e(tag, "生成deviceid 耗時:" + (system.currenttimemillis() - starttime));
preferencemanager.getdefaultsharedpreferences(context).edit().putstring(finger_print, deviceuniqueid).commit();
return deviceuniqueid;
}
一鍵修改安卓唯一識別號androidid的簡單教程
我們知道手機中有好幾個串號,imei,imsi還有個androidid,這個是廠家出廠的時候手機硬體上唯一的標識。應用程式可以獲取我們這些引數來判斷我們手機的唯一性,由此我們可以通過修改androidid或者imei等引數,讓手機變成乙個新的裝置。我們這裡使用強大的琢石模擬器來幫我們虛擬androi...
android 裝置唯一標識 Android ID
android id是裝置第一次啟動時產生和儲存的64bit的乙個數,當裝置被wipe 刷機,恢復出廠設定 後該數重置。string secureid settings.secure.getstring getcontentresolver settings.secure.android id 這裡...
Android手機唯一識別IMSI
碼,但是當刷機 系統還原出廠設定 這2種情況下,手機的imei都會改變,所以有時候回出現以前繫結的imei在服務 資料庫對應的使用者移動裝置,當使用者刷機 還原出廠設定 此時使用者手機上的imei就改變了,當使用者登入時,提交的 imei與伺服器資料庫的imei就不一樣了,然而得出來得結論 只有當使...