识别

2011-08-18 89 views
3

问题Android装置/安装(没有物理ID):识别

以我Android应用中的一个,用户应被允许更改文本我的服务器上的数据(通过HTTP请求),而不被要求登录或注册。

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

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

正如人们可以阅读herehere一个Android手机的物理设备ID不是一个好的解决方案。那么我还有什么可以做到这一点?

我的想法:

当应用程序被启动的第一次,创造了当前时间戳和一个巨大的随机数的(几乎)唯一散列(也许SHA-512)。然后将此值保存在内部存储器上,并始终用它来标识此设备或稍后安装(在HTTP请求上)。

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

这几乎是Android Developers Blog的建议,对不对?但他们真的在写内部存储吗?它们不像建议的here那样使用openFileOutput()。

而且,最后一个问题,可能是一个有点傻:

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

非常感谢您提前! :)

+0

为什么不使用Guid? –

+0

对不起,你指的是什么?我只知道UUID,这是我已经写过的。 – caw

回答

1

在我当前的Android项目中,我使用蓝牙MAC ID作为标识符,因为我读到的有关物理设备ID不可靠的内容。当然,我的应用程序非常专业,无论如何都需要蓝牙和互联网,所以这个工作。

具体而言,我有一种方法,从手机拨打我的网络服务器,传递蓝牙MAC ID。我可以查看许可证状态(试用/过期),在那里你可以检查禁止方法以查看该ID是否被禁止。

由于我的应用程序需要蓝牙,所以这对我来说非常合适,因为[主要]所有的蓝牙MAC ID都应该是唯一的。

只是一个想法。

+1

谢谢!我看到你的情况,这工作正常。但总的来说,Android开发博客警告不要使用物理ID,因为有大量不同硬件的设备。 – caw