Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在我的特定情况下唯一地识别设备_Android - Fatal编程技术网

Android 在我的特定情况下唯一地识别设备

Android 在我的特定情况下唯一地识别设备,android,Android,我知道这是一个循环的话题->我只是有一个更具体的情况,它适用于,我想挑选你的大脑 我正在编写一个应用程序,在第一次启动时要求用户填写用户名。此用户名被发送到我的服务器,检查其唯一性,并与mysql生成的UUID一起输入数据库。此用户名还用于为用户创建虚拟目录,因此用户“evan”将获得example.com/evan。UUID被发送回本地存储的手机(尚未设置存储类型,当前使用sqlite) 该应用程序从不要求输入密码。手机存储我的服务器生成的UUID,并在初始引导后将此ID与存储的用户名一起发送

我知道这是一个循环的话题->我只是有一个更具体的情况,它适用于,我想挑选你的大脑

我正在编写一个应用程序,在第一次启动时要求用户填写用户名。此用户名被发送到我的服务器,检查其唯一性,并与mysql生成的UUID一起输入数据库。此用户名还用于为用户创建虚拟目录,因此用户“evan”将获得example.com/evan。UUID被发送回本地存储的手机(尚未设置存储类型,当前使用sqlite)

该应用程序从不要求输入密码。手机存储我的服务器生成的UUID,并在初始引导后将此ID与存储的用户名一起发送,以识别用户。我喜欢不使用密码的想法,因为密码只是打开了太多潘多拉的盒子,不管我是希腊裔美国人,我宁愿避开潘多拉

我喜欢这种方法,因为如果用户在出厂时重新设置手机并将其交给他人,下一个人就不会登录到老人的帐户。我不喜欢这种方法,因为我担心当人们从手机上删除数据并创建新帐户时,有多少URL会死掉(我不确定他们会出于什么原因这么做)

我非常想避免与想要返回URL的客户打交道。那是一个实习生,他应该花更多的时间给我倒咖啡

我固执的哥哥抱怨说,账户不会从一台设备转移到另一台设备:“如果我买了一部新手机,想要我的旧账户和url怎么办?”

我已经想到了一些解决方案,比如在我的用户表中添加一个“last Loggin in”变量,我可以每天刮一刮,以发布早于X天的URL。或者我可以在应用程序中提供一个“删除我”选项,让人们手动发布他们的URL。或者,我可以添加一个“我正在转移此帐户”选项,允许用户接收他们可以写下的唯一代码,购买新手机,安装我的应用程序,输入他们的旧用户名,并输入生成的代码以确认他们的身份

我想如果有人手动删除我的应用程序的数据,他们应该失去他们的帐户。我还可以添加一些卸载代码来发布URL(??我想无论如何,我对卸载一无所知。)


这些就是我正在处理的问题。任何有创意的提示/信息/解决方案都会很棒。

当我第一次登录时,我会让应用程序将IMEI或MEID与uid一起发送,以便您可以将其存储在服务器中

getSystemService(Context.TELEPHONY_SERVICE).getDeviceId();

如果应用程序被删除并重新安装,或者如果应用程序数据被删除,用户可以再次登录(可能会有一个按钮“现有用户”和其他“新用户”)。然后,您的服务器将使用相应的设备id检查uid。如果它们匹配,则该帐户将再次授权,uid将再次存储在数据库中


我能想到的唯一问题是设备是否没有sim卡。如果没有IMEI,您可以默认获取WIFI MAC地址(设备需要一种方式来访问您的服务器,因此很可能会有两种方式中的一种)。如果没有IMEI和MAC地址(我想这是非常罕见的事件),那么您可以请求添加电子邮件地址以进行确认。您应该非常了解所有这些选项。

也许我遗漏了一些东西,但是如果存储了UUID并且必须输入用户名,那么这与存储用户名并让他们输入密码有什么不同(除了用户名通常不如密码强)?UUID的作用不是和“记住的”密码一样吗?用户名只有在第一次启动时才会被询问。从那时起,应用程序通过发送存储的用户名和存储的UUID来加载,而无需任何必要的输入。我认为在每次启动后发送存储的用户名和存储的UUID有点多余。我的数据库已经存储了此人的UUID及其用户名,因此我的客户端只能发送UUID。这是一个进步,但其他问题仍然存在。谢谢你的观察。我一直觉得获取设备ID是不可靠的:也许实施密码对我来说是最简单的解决方案…@Evan我在回答中添加了一段新的内容非常感谢,我将把所有的选择结合到一个尽可能防弹的方法中。我想我仍然需要处理转帐问题。使用给定的方法,新设备(带旧用户)无法进行自我验证。@Evan使用唯一代码的解决方案应该有效(发送到电子邮件地址,而不是直接发送到应用程序,因为人们会松开这张纸)