android - 识别 Android 设备/安装(没有物理 ID)

标签 android hash unique identity

问题:

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

为了防止垃圾邮件和滥用此功能,我想标识我的应用程序的单个安装,以便我可以“禁止”此安装。当然,滥用我的服务的用户可以卸载应用程序并重新下载或类似的东西。但这确实是一个障碍,使滥用该应用程序变得更加困难。

所以我必须找到一种方法来识别 Android 设备或至少是单个安装。

一目了然 herehere Android 手机的物理设备 ID 不是一个好的解决方案。那么我还能做些什么来实现这一目标?

我的想法:

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

您如何看待该解决方案?有没有更好的方法?

这几乎就是Android Developers Blog建议,对吗?但他们真的在写入内部存储吗?他们没有按照建议使用 openFileOutput() here .

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

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

非常感谢您! :)

最佳答案

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

具体来说,我有一种方法可以通过手机调用我的网络服务器,并传入蓝牙 mac ID。我可以检查许可证状态(用于试用/过期),您可以在其中检查禁止方法以查看该 ID 是否被禁止。

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

只是一个想法。

关于android - 识别 Android 设备/安装(没有物理 ID),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7111863/

相关文章:

android - bundle 额外发送错误的字符串

android - 获取日期范围内的日期数组

Ruby - 如何将大型多维哈希数组转换为 CSV 格式

security - 如何在我的登录密码中添加盐?

xml - XML 模式中的唯一约束

javascript - 获取唯一移动网络客户的数量

MySQL - 唯一行,仅对应于 3 个表之一

java - 从通知栏打开目录

android - 使用深度/通用链接时,iOS 上是否存在 "App Picker"?

algorithm - 计算用于填充 SHA-256 消息的 k