2015-08-03 179 views
-1

我有一個應用程序,並且場景是需要密碼才能第一次訪問應用程序。現在,當有人使用密碼而不是該密碼只能在該手機上再次使用時,如果他們卸載該應用程序或類似的東西,就像任何帶有唯一密鑰的Windows安裝軟件一樣。Android識別獨特設備

我所用設備ID喜歡

TelephonyManager manager=(TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); 
String deviceid=manager.getDeviceId(); 

但我已收到來自用戶的投訴很少,當他們更換了SIM或任何東西比它要求輸入密碼再次和舊密碼不起作用。我試圖測試它,事實證明,在大多數設備上,設備ID隨着sim的變化而改變。之前我沒有做太多研究,但現在我已經閱讀了大部分問題,並且在我們重新設置手機時,似乎這個ID也會發生變化。現在誰能告訴我什麼是唯一標識Android設備的最佳方式?

是的,它是Is there a unique Android device ID?的副本,但是這並沒有提供給我一個as,因爲Joe使用了設備ID,並且我告訴過你使用設備ID的問題是什麼,它隨着SIM卡的更改而改變。

謝謝

+2

[是否有唯一的Android設備ID?](http://stackoverflow.com/questions/2785485/is-there-a-unique-android-device-id) – Jan

+0

*「就像任何軟件安裝在帶有獨特鑰匙的窗戶上「*除非盜版。或者更改Windows鍵。 – m0skit0

回答

0

檢查此

String uniqueId=Secure.getString(getContentResolver(),Secure.ANDROID_ID); 
+0

http://stackoverflow.com/a/4799610/1832135這裏它說「可以在出廠設置時更改」 – Hamza

+0

unique-ish對於大多數場景可能已經足夠了 –

0

從你如何描述你的問題,你真的不需要唯一地標識設備。您的要求似乎表明您只需要唯一標識安裝,因爲您提到如果他們卸載該應用程序,他們可以再次使用相同的密碼。

Android Developers blog post探索了深度識別設備和安裝的主題,並提供了識別安裝而不是設備的解決方案。

您真正需要做的就是使用UUID.randomUUID()來生成一個安裝ID,並將該ID保存在某個地方。當用戶卸載應用程序時,該ID將被清除,如果他們回來,您可以創建一個新ID。

+0

考慮這種情況,我使用密碼併發送設備的UUID與此同時,現在使用的密碼我存儲該唯一的UUID與該密碼。現在,當我卸載並重新安裝該應用程序時,它會詢問密碼,我應該可以重複使用舊密碼,但現在是否會收到相同的舊UUID?如果使用密碼,我會檢查它是否被相同的設備使用,如果是,則我認爲它不是。我基本上是銷售應用程序的密碼。 – Hamza

+0

使用唯一的設備標識符作爲用戶名聽起來不是一個好主意。我顯然不知道你的具體用例,但是如果你的用戶得到一個新的設備並想使用同一個「帳戶」呢?沒有真正獨特的設備ID將允許他們這樣做。用戶可以在安裝之間或設備之間(例如電子郵件,電話號碼,用戶名)使用的ID可以綁定到唯一的安裝ID(或設備ID,如果這是您想要的路線),可以解決這兩個問題。 –

+0

不,密碼與設備綁在一起,如果他換了手機,他必須得到一個新的,這就是我們告訴他們的。所以,現在很好。我們正在對不能使用手機的不同用戶進行測試,因此如果我們添加一個帶有密碼的新參數,這似乎會使事情變得複雜一些,首先我們需要解釋什麼是「電子郵件」。考慮到我們只能使用一個唯一的ID,我自動選擇的東西,最好的一個使用哪個不會改變?絕對不是設備ID,那麼Secure.Android_ID如何?或者你提到的那個? UUID?它會保持不變嗎?謝謝 – Hamza