рдПрдВрдбреНрд░реЙрдЗрдб рдХреЛ рд╕рдорд░реНрдкрд┐рдд рдЖрдзрд┐рдХрд╛рд░рд┐рдХ Google рд╕рдореВрд╣ рдореЗрдВ, рд╕рдордп-рд╕рдордп рдкрд░ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреА рд╢рд┐рдХрд╛рдпрддреЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИрдВ рдХрд┐ рдПрдВрдбреНрд░реЙрдЗрдб рдбрд┐рд╡рд╛рдЗрд╕реЛрдВ рдХреЗ рд▓рд┐рдП рдЕрджреНрд╡рд┐рддреАрдп, рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдФрд░ рд╕реНрдерд┐рд░ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдвреВрдВрдврдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред
рдмреНрд▓реЙрдЧ
рдПрдВрдбреНрд░реЙрдЗрдб-рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдкреНрд░рддрд┐рд╖реНрдард╛рдиреЛрдВ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдкрд░ рдПрдХ рдЫреЛрдЯрд╛ рд╡рд┐рд╖рдп рдкреНрд░рдХрд╛рд╢рд┐рдд
рдХрд┐рдпрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред
рд╕реНрдерд╛рдкрдирд╛ рдЯреНрд░реИрдХрд┐рдВрдЧ
рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЕрдкрдиреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЗрд╕рдХреЗ рдХрдИ рдХрд╛рд░рдг рд╣реИрдВред рдХреБрдЫ рдмрд╕
TelephonyManager.getDeviceId () рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдорд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рд╕рд╛рде рдХреБрдЫ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ: рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдПрдХ рдЖрдИрдбреА рдХреА рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛ рдХреА рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рд╣реИред рджреВрд╕рд░реЗ, рднрд▓реЗ рд╣реА рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдореВрд▓реНрдп рддрдерд╛рдХрдерд┐рдд "рдлрд╝реИрдХреНрдЯрд░реА рд░реАрд╕реЗрдЯ" (рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рднреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рд░реАрд╕реЗрдЯ рдХрд░рдирд╛) рд╕реЗ рдмрдЪ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдЕрдВрддрддрдГ рдПрдХ рдЕрдкреНрд░рд┐рдп рддреНрд░реБрдЯрд┐ рдкреИрджрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рдЦрд░реАрджрд╛рд░ / рдЗрдВрд╕реНрдЯреЙрд▓рд░ рдореЗрдВ рд╕реЗ рдХреЛрдИ рдПрдХ рдЕрдкрдиреЗ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рд╕рд╛рдл рдХрд░рддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдпрд╣ рдХреЛрдИ рдФрд░ рд╣реИред
рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдПрдХ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ
рдпреВрдпреВрдЖрдИрдбреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдкрд╣рд▓реА рдмрд╛рд░ рдЬрдм рдЖрдк рдЖрд╡реЗрджрди рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рд░ рдмрд╛рд░ рдПрдХ рдирдпрд╛ рдмрдирд╛рдПрдВред рдиреАрдЪреЗ рдПрдХ рд╕реНрдереИрддрд┐рдХ
рдЕрдзрд┐рд╖реНрдард╛рдкрди рдХреЗ рд╕рд╛рде рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдХреНрд▓рд╛рд╕ рдХрд╛ рдПрдХ рд╕реНрдХреЗрдЪ рд╣реИред рд╡рд┐рдзрд┐
(рд╕рдВрджрд░реНрдн рд╕рдВрджрд░реНрдн) ред рдлрд┐рд░ рдпрд╣ рд╕рдм рдЖрдкрдХреА рдХрд▓реНрдкрдирд╛ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ - рдЖрдк
рдЗрдВрд╕реНрдЯрд╛рд▓реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдбрд┐рд╡рд╛рдЗрд╕-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЬрд╛рдирдХрд╛рд░реА рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред
public class Installation { private static String sID = null; private static final String INSTALLATION = "INSTALLATION"; public synchronized static String id(Context context) { if (sID == null) { File installation = new File(context.getFilesDir(), INSTALLATION); try { if (!installation.exists()) writeInstallationFile(installation); sID = readInstallationFile(installation); } catch (Exception e) { throw new RuntimeException(e); } } return sID; } private static String readInstallationFile(File installation) throws IOException { RandomAccessFile f = new RandomAccessFile(installation, "r"); byte[] bytes = new byte[(int) f.length()]; f.readFully(bytes); f.close(); return new String(bytes); } private static void writeInstallationFile(File installation) throws IOException { FileOutputStream out = new FileOutputStream(installation); String id = UUID.randomUUID().toString(); out.write(id.getBytes()); out.close(); } }
рдбрд┐рд╡рд╛рдЗрд╕ рдХреА рдкрд╣рдЪрд╛рди
рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП рдХрд┐ рдЖрдк рдПрдХ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдПрдХ рддрд░рд╣ рд╕реЗ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп, рдпрд╣ рдХрд╛рд░реНрдп рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИред
рдкрд╣рд▓реЗ, рдЬрдм рд╣рд░ Android рдбрд┐рд╡рд╛рдЗрд╕ рдПрдХ рдлреЛрди рдерд╛, рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рдерд╛:
TelephonyManager.getDeviceId () рд╡рд┐рдзрд┐ рдиреЗ рдлреЛрди рдХреЗ
IMEI ,
MEID рдпрд╛
ESN рдХреЛ рд▓реМрдЯрд╛ рджрд┐рдпрд╛, рдЬреЛ рдЕрджреНрд╡рд┐рддреАрдп рд╣реЛрдиреЗ рдХреА рдЧрд╛рд░рдВрдЯреА рдереАред
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде рдХрдИ рд╕рдорд╕реНрдпрд╛рдПрдВ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИрдВ:
- рдлреЛрди рдирд╣реАрдВ ред рд╡рд╛рдИ-рдлрд╛рдИ рдЙрдкрдХрд░рдгреЛрдВ рдФрд░ рд╕рдВрдЧреАрдд рдЦрд┐рд▓рд╛рдбрд╝рд┐рдпреЛрдВ рдХреЗ рдкрд╛рд╕ рдмреЛрд░реНрдб рдкрд░ рдЯреЗрд▓реАрдлреЛрди рдЙрдкрдХрд░рдг рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╡реЗ рдмрд╕ рдЗрди рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХреЛ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред
- рд╕реНрдерд╛рдпреАрддрд╛ ред рдЙрди рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рдЬреЛ рдПрдХ рдЯреЗрд▓реАрдлреЛрди рдореЙрдбреНрдпреВрд▓ рд╕реЗ рд▓реИрд╕ рд╣реИрдВ, рдпреЗ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рддрдм рдирд╣реАрдВ рдмрджрд▓рддреЗ рд╣реИрдВ рдЬрдм рд╕рднреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд░реАрд╕реЗрдЯ рд╣реЛ рдЬрд╛рддреА рд╣реИрдВред рддреЛ рдЖрд╡реЗрджрди рдпрд╣ рднреА рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдЧрд╛ рдХрд┐ рдкреБрдирд░реНрд╕реНрдерд╛рдкрдирд╛ рдХреЛ рдЧрд┐рдирдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
- рдЕрддрд┐рд░рд┐рдХреНрдд рдЕрдзрд┐рдХрд╛рд░ ред READ_PHONE_STATE рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬреЛ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЛ рдкрд░реЗрд╢рд╛рди рдХрд░рддрд╛ рд╣реИ, рдЦрд╛рд╕рдХрд░ рдпрджрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЯреЗрд▓реАрдлреЛрдиреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
- рдХреАрдбрд╝реЗ ред рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдлреЛрди рдирд┐рд░реНрдорд╛рддрд╛ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХрд╛ рдкрд╛рд▓рди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрдкрд░реЛрдХреНрдд рд╡рд┐рдзрд┐ рдЕрдмреНрд░рд╛рдХрдбрд╛рдмреНрд░рд╛ рдХреЛ рд▓реМрдЯрд╛ рджреЗрддреА рд╣реИред
рдореИрдХ рдкрддрд╛
рдЖрдк рдмреНрд▓реВрдЯреВрде рдпрд╛ рд╡рд╛рдИ-рдлрд╛рдИ рд╡рд╛рд▓реЗ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдореИрдХ рдкрддреЗ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рднреА рдЕрдиреБрд╢рдВрд╕рд┐рдд рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╕рднреА рдЙрдкрдХрд░рдгреЛрдВ рдореЗрдВ рд╡рд╛рдИ-рдлрд╛рдИ рдирд╣реАрдВ рд╣реИред рджреВрд╕рд░реЗ, рдпрджрд┐ рд╡рд╛рдИ-рдлрд╛рдИ рдореЙрдбреНрдпреВрд▓ рдЪрд╛рд▓реВ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрдк рдореИрдХ рдПрдбреНрд░реЗрд╕ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд░ рдкрд╛рдПрдВрдЧреЗред
рдХреНрд░рдорд╛рдВрдХ рд╕рдВрдЦреНрдпрд╛
Android 2.3 (рдЬрд┐рдВрдЬрд░рдмреНрд░реЗрдб) рд╕реЗ, рдЖрдк
android.os.Build.SERIAL рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реАрд░рд┐рдпрд▓ рдирдВрдмрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред 2.3 рд╕реЗ рдиреАрдЪреЗ рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП,
рд▓реЛрдкрд╛рдЯреЙрдЗрдб рдиреЗ
рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд╡рд┐рдзрд┐ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ред
ANDROID_ID
рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ, рдпрд╣
Settings.Secure.ANDROID_ID рд╣реИ ред рдпрд╣ 64-рдмрд┐рдЯ рдорд╛рди рд╣реИ рдЬреЛ рдкрд╣рд▓реА рдмрд╛рд░ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдмреВрдЯ рдХрд░рдиреЗ рдкрд░ рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИ, рдпрд╣ рддрдм рд░реАрд╕реЗрдЯ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рд╕рд╛рдл рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдлреИрдХреНрдЯрд░реА рд░реАрд╕реЗрдЯ, рдЖрджрд┐)
рдЕрд╕рд▓ рдореЗрдВ, ANDROID_ID рдбрд┐рд╡рд╛рдЗрд╕ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕рдореЗрдВ рдХреБрдЫ рдХрдорд┐рдпрд╛рдВ рд╣реИрдВ: рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ 2.2 (рдПрдВрдбреНрд░реЙрдЗрдб) рддрдХ рдХреЗ рдПрдВрдбреНрд░реЙрдЗрдб рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдкрд░ 100% рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдирд╣реАрдВ рд╣реИред рджреВрд╕рд░реЗ, рдлреЛрди рдирд┐рд░реНрдорд╛рддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рдПрдХ рдкреНрд░рд╕рд┐рджреНрдз рдмрдЧ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг рд╕рднреА рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА ANDROID_ID рдЙрддреНрдкрдиреНрди рд╣реБрдЖ рдерд╛ред
рдирд┐рд╖реНрдХрд░реНрд╖
рдЕрдзрд┐рдХрд╛рдВрд╢ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП, рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдПрдХрд▓ рд╕реНрдерд╛рдкрдирд╛ рдХреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд░реВрдк рд╕реЗ рдкрд╣рдЪрд╛рдирдирд╛ рд╣реИ, рди рдХрд┐ рдПрдХ рдЙрдкрдХрд░рдгред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИред
рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЙрдкрдХрд░рдгреЛрдВ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рдХрдИ рдХрд╛рд░рдг рд╣реИрдВред рдЬреЛ рд▓реЛрдЧ рдЕрднреА рднреА рдХреЛрд╢рд┐рд╢ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЙрдирдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк ANDROID_ID рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд╡рд┐рд░рд╛рд╕рдд рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдЕрдиреБрдорд╛рди рдХреЗ рд╕рд╛рдеред