برای این کار باید از ترکیب چند روش استفاده کنید تا مطمئن باشید حتما به ازای هر دستگاه اندرویدی یک کد یکتا (Unique) دارید:
1- IMEI
با استفاده از تکه کد زیر و افزودن دسترسی android.permission.READ_PHONE_STATE به فایل manifest می توانید کد IMEI دستگاه اندرویدی که سیم کارت می خورند را بدست بیاورید.
TelephonyManager TelephonyMgr = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
String m_deviceId = TelephonyMgr.getDeviceId();
این کد حتما برای هر دستگاه اندرویدی منحصر به فرد است ولی دستگاه هایی که سیم کارت ندارند و بعضی از دستگاه های fake این کد را ندارند و دستگاه های دو سیم کارته دو IMEI متفاوت برای یک گوشی دارند.
2- Android ID
Android ID یک عدد یکتای 64 بیتی است که در زمان اولین بوت دستگاه تولید و ذخیره می شود:
String m_androidId = Secure.getString(getContentResolver(), Secure.ANDROID_ID);
مشکلات این روش این است گه زمانی که دستگاه اندرویدی Factory reset می شود این عدد دوباره تولید می شود و همچنین در صورت بروزرسانی نسخه اندروید دستگاه، ممکن است این عدد تغییر کند. بعضی از دستگاه های اندرویدی ساخت چین نیز Android ID یکسان دارند!
3- WLAN MAC Address
MAC Address دستگاه های اندرویدی که وای فای دارند منحصر به فرد است. با استفاده از تکه کد زیر و افزودن دسترسی android.permission.ACCESS_WIFI_STATE به فایل manifest می توانید WLAN MAC Address دستگاه اندرویدی را بدست بیاورید:
WifiManager m_wm = (WifiManager)getSystemService(Context.WIFI_SERVICE);
String m_wlanMacAdd = m_wm.getConnectionInfo().getMacAddress();
4- Bluetooth Address
Bluetooth device address دستگاه های اندرویدی که بلوتوث دارند منحصر به فرد است. با استفاده از تکه کد زیر و افزودن دسترسی android.permission.BLUETOOTH به فایل manifest می توانید Bluetooth device addresss دستگاه اندرویدی را بدست بیاورید:
BluetoothAdapter m_BluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
String m_bluetoothAdd = m_BluetoothAdapter.getAddress();