Egyes fejlesztőknek szükségük lehet egy egyedi azonosítóra az Android-eszközök azonosításához. Több olyan felhasználási eset van, amikor a fejlesztőknek szükségük van erre az Egyedi azonosítóra.
Egy Android-felhasználó azonosítása esetén például, amikor :
- egy Android-felhasználót szeretne azonosítani a játékok pontszámának egy szerveren való tárolásához
- az alkalmazások telepítésének nyomon követése
- DRM generálása másolásvédelemhez.
Sokféle megoldás létezik, de egyik sem tökéletes. Ebben a bemutatóban öt megoldást fogunk megvizsgálni és bemutatjuk a hátrányaikat :
1. Egyedi telefonszám (IMEI, MEID, ESN, IMSI)
Ha csak okostelefonokat céloz meg, akkor kihasználhatja, hogy a készülék rendelkezik telefonos szolgáltatással. így könnyen lekérdezhet egy egyedi azonosítót, amely azonosítja a készüléket.
Ez az egyedi azonosító lehet IMEI, MEID, ESN vagy IMSI. Ezek a következőképpen határozhatók meg :
- IMEI a nemzetközi mobileszköz azonosítóért : a GSM, WCDMA mobiltelefonok, valamint egyes műholdas telefonok azonosítására szolgáló egyedi szám
- MEID a mobileszköz azonosítóért : a CDMA mobilállomás fizikai berendezését azonosító globálisan egyedi szám, a MEID az ESN (elektronikus sorozatszám)
- ESN az elektronikus sorozatszám helyettesítésére jött létre: a CDMA mobiltelefonok azonosítására szolgáló egyedi szám
- IMSI (International Mobile Subscriber Identity) : az összes GSM és UMTS hálózati mobiltelefon-felhasználóhoz tartozó egyedi azonosító
A készülékhez tartozó egyedi azonosító lekérdezéséhez a következő kódot használhatja :
Ez a megoldás az android számára kérést igényel.permission.READ_PHONE_STATE-t a felhasználónak, ami az Ön által készített alkalmazás típusát követve nehezen indokolható.
Ez a megoldás ráadásul okostelefonokra korlátozódik, mivel a táblagépek nem rendelkeznek telefonos szolgáltatással. Előnye, hogy az érték túléli a készülékek gyári visszaállítását.
2. MAC-cím
Egy Wi-Fi vagy Bluetooth hardverrel rendelkező eszköz MAC-címét is megpróbálhatja megszerezni. Ez a megoldás azonban nem ajánlott, mivel nem minden eszköz rendelkezik Wi-Fi kapcsolattal. Még ha a felhasználó rendelkezik is Wi-Fi-kapcsolattal, azt be kell kapcsolni az adatok lekérdezéséhez. Ellenkező esetben a hívás nem jelenti a MAC-címet.
3. Sorozatszám
A telefonos szolgáltatással nem rendelkező készülékeknek, például a táblagépeknek, az Android 2.3 Gingerbread óta egyedi készülékazonosítót kell jelenteniük, amely az android.os.Build.SERIAL segítségével érhető el. Egyes telefonos szolgáltatással rendelkező telefonok szintén megadhatnak egy sorozatszámot. Mivel nem minden Android készülék rendelkezik sorszámmal, ez a megoldás nem megbízható.
4. Secure Android ID
A készülék első indításakor egy véletlenszerű érték generálódik és tárolódik. Ez az érték a Settings.Secure.ANDROID_ID menüponton keresztül érhető el. Ez egy 64 bites szám, amelynek állandónak kell maradnia az eszköz élettartama alatt. Az ANDROID_ID jó választásnak tűnik egyedi eszközazonosítónak, mivel okostelefonok és táblagépek esetében is elérhető. Az érték lekérdezéséhez a következő kódot használhatja :
String androidId = Settings.Secure.getString(getContentResolver(),
Settings.Secure.ANDROID_ID);
Az érték azonban megváltozhat, ha a készüléken gyári visszaállítás történik. Van egy ismert hiba is az egyik gyártó népszerű készülékeinél, ahol minden példányban ugyanaz az ANDROID_ID szerepel. Nyilvánvaló, hogy a megoldás nem 100%-ig megbízható.
5. UUID használata
Mivel a legtöbb alkalmazás esetében a követelmény egy adott telepítés és nem egy fizikai eszköz azonosítása, jó megoldás a felhasználó egyedi azonosítójának megszerzésére az UUID osztály használata. A következő megoldást Reto Meier mutatta be a Google-től a Google I/O előadásában :
UUID.randomUUID() metódus egyedi azonosítót generál egy adott telepítéshez. Ezt az értéket kell csak tárolni, és a felhasználó az alkalmazás következő indításakor azonosítva lesz. Megpróbálhatja ezt a megoldást az Android Backup szolgáltatással is összekapcsolni, hogy az információ akkor is elérhető maradjon a felhasználó számára, ha egy másik eszközre telepíti az alkalmazását.
Következtetés
Egy adott eszköz azonosítása Androidon nem egyszerű dolog. Számos jó ok van arra, hogy ezt elkerüljük. A legjobb megoldás valószínűleg az adott telepítés azonosítása az UUID megoldás segítségével. Ha azonban feltétlenül szeretnénk egy adott eszközt fizikailag azonosítani, akkor megpróbálhatjuk az ANDROID_ID megoldást használni. Nem 100%-ig megbízható, de jobb, mint más megoldások.