识别Android设备/安装(无物理ID)

识别Android设备/安装(无物理ID),android,hash,unique,identity,Android,Hash,Unique,Identity,问题: 在我的一个Android应用程序中,应该允许用户(通过HTTP请求)更改我服务器上的文本数据,而无需登录或注册 为了防止垃圾邮件和滥用此功能,我想确定我的应用程序的单个安装,以便我可以“禁止”此安装。当然,滥用我的服务的用户可以卸载应用程序并再次下载,或者类似的事情。但这确实是一个障碍,让滥用应用程序变得更加困难 因此,我必须找到一种方法来识别安卓设备或至少一个安装 正如人们所知,Android手机的物理设备ID并不是一个好的解决方案。那么我还能做些什么来实现这一点呢 我的想法: 当应用

问题:

在我的一个Android应用程序中,应该允许用户(通过HTTP请求)更改我服务器上的文本数据,而无需登录或注册

为了防止垃圾邮件和滥用此功能,我想确定我的应用程序的单个安装,以便我可以“禁止”此安装。当然,滥用我的服务的用户可以卸载应用程序并再次下载,或者类似的事情。但这确实是一个障碍,让滥用应用程序变得更加困难

因此,我必须找到一种方法来识别安卓设备或至少一个安装

正如人们所知,Android手机的物理设备ID并不是一个好的解决方案。那么我还能做些什么来实现这一点呢

我的想法:

当应用程序第一次启动时,创建一个(几乎)唯一的当前时间戳哈希(可能是SHA-512)和一个巨大的随机数。然后将此值保存在内部存储器中,并在以后(HTTP请求时)始终使用它来标识此设备或安装

你觉得这个解决方案怎么样?有没有更好的办法

这几乎就是他们的建议,对吗?但它们真的在向内部存储器写入数据吗?他们没有按照建议使用openFileOutput()

最后,一个可能有点愚蠢的问题:

如何使用Android开发者博客上显示的代码?我可以将该公共类添加到我的主activity.java文件中吗


提前非常感谢!:)

在我当前的Android项目中,我使用Bluetooth mac id作为标识符,因为我了解到物理设备id不可靠。当然,我的应用程序非常专业,需要蓝牙和互联网,所以这是可行的

具体地说,我有一种从手机呼叫我的web服务器的方法,传递蓝牙mac ID。我可以检查许可证状态(试用/过期),您可以对照ban方法检查该ID是否被禁止

由于我的应用程序需要蓝牙,这对我来说非常有效,因为[大多数情况下]所有蓝牙mac id都应该是唯一的


只是个主意

对不起,你到底指的是什么?我只知道UUID,这是我已经写过的。谢谢!我看你的情况很好。但总体而言,Android开发者博客警告不要使用物理ID,因为有很多设备具有不同的硬件。