Stringm_szDevIDShort="35"+//we make this look like a valid IMEI Build.BOARD.length()%10+Build.BRAND.length()%10+Build.CPU_ABI.length()%10+Build.DEVICE.length()%10+Build.DISPLAY.length()%10+Build.HOST.length()%10+Build.ID.length()%10+Build.MANUFACTURER.length()%10+Build.MODEL.length()%10+Build.PRODUCT.length()%10+Build.TAGS.length()%10+Build.TYPE.length()%10+Build.USER.length()%10;//13 digits
5. The BT MAC Address string 只在有蓝牙的设备上运行。并且要加入android.permission.BLUETOOTH 权限.
1
2
3
BluetoothAdapterm_BluetoothAdapter=null;// Local Bluetooth adapter m_BluetoothAdapter=BluetoothAdapter.getDefaultAdapter();Stringm_szBTMAC=m_BluetoothAdapter.getAddress();
Returns: 43:25:78:50:93:38 . 蓝牙没有必要打开,也能读取。
Combined Device ID 综上所述,我们一共有五种方式取得设备的唯一标识。它们中的一些可能会返回null,或者由于硬件缺失、权限问题等获取失败。 但你总能获得至少一个能用。所以,最好的方法就是通过拼接,或者拼接后的计算出的MD5值来产生一个结果。
Stringm_szLongID=m_szImei+m_szDevIDShort+m_szAndroidID+m_szWLANMAC+m_szBTMAC;// compute md5 MessageDigestm=null;try{m=MessageDigest.getInstance("MD5");}catch(NoSuchAlgorithmExceptione){e.printStackTrace();}m.update(m_szLongID.getBytes(),0,m_szLongID.length());// get md5 bytes bytep_md5Data[]=m.digest();// create a hex string Stringm_szUniqueID=newString();for(inti=0;i<p_md5Data.length;i++){intb=(0xFF&p_md5Data[i]);// if it is a single digit, make sure it have 0 in front (proper padding) if(b<=0xF)m_szUniqueID+="0";// add number to string m_szUniqueID+=Integer.toHexString(b);}// hex string to uppercase m_szUniqueID=m_szUniqueID.toUpperCase();