android生成唯一设备标识

原文地址:

http://blog.csdn.net/ljz2009y/article/details/22895297

完整代码:

package com.example.emily.uniqueid;

import android.bluetooth.BluetoothAdapter;
import android.net.wifi.WifiManager;
import android.os.Build;
import android.provider.Settings;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.telephony.TelephonyManager;
import android.widget.TextView;

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

public class MainActivity extends AppCompatActivity {
    private TextView uuid;

@Override
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
uuid = (TextView) findViewById(R.id.uuid);

//The IMEI: 仅仅只对Android手机有效:
TelephonyManager TelephonyMgr = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
String m_szImei = TelephonyMgr.getDeviceId();

//Pseudo-Unique ID, 这个在任何Android手机中都有效
String m_szDevIDShort = "35" +
                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

        //3. The Android ID
String m_szAndroidID = Settings.Secure.getString(getContentResolver(), Settings.Secure.ANDROID_ID);

//4. The WLAN MAC Address string
WifiManager wm = (WifiManager)getSystemService(MainActivity.WIFI_SERVICE);
String m_szWLANMAC = wm.getConnectionInfo().getMacAddress();

//5. The BT MAC Address string
BluetoothAdapter m_BluetoothAdapter = null; // Local Bluetooth adapter
m_BluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
String m_szBTMAC = m_BluetoothAdapter.getAddress();

String m_szLongID = m_szImei + m_szDevIDShort
                + m_szAndroidID+ m_szWLANMAC + m_szBTMAC;
// compute md5
MessageDigest m = null;
        try {
            m = MessageDigest.getInstance("MD5");
} catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
}
        m.update(m_szLongID.getBytes(),0,m_szLongID.length());
// get md5 bytes
byte p_md5Data[] = m.digest();
// create a hex string
String m_szUniqueID = new String();
        for (int i=0;i<p_md5Data.length;i++) {
            int b =  (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();

String m_szLongID_out = m_szImei + "*****" + m_szDevIDShort
                + "*****" + m_szAndroidID + "*****" + m_szWLANMAC + "*****" + m_szBTMAC;

uuid.setText(m_szLongID_out + "---" + m_szUniqueID);

}
}

xml文件里面加下权限:

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

结果截图


android生成唯一设备标识
 

相关推荐