2015-08-03 183 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