如何通过程序识别Android设备?

19

目前,我将MAC地址作为Android设备的标识符。

WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
WifiInfo wInfo = wifiManager.getConnectionInfo();
String mac = wInfo.getMacAddress();

然而,我发现对于一些用户的设备来说,mac是空的。我不太明白为什么会出现这种情况。

如果您能找到原因,那最好不过了!

否则,您能提供另一种识别Android设备的方法吗?


为什么你想要这样做? - iTech
@iTech 用于将每个用户的数据存储在数据库中。 - JackWM
@iTech 如何以编程方式获取该信息?如果用户没有电子邮件帐户或从未登录过怎么办? - JackWM
@JackWM Android用户需要使用Gmail帐户登录。 - Phil
这里有一个很好的解决此问题的来源:http://android-developers.blogspot.co.uk/2011/03/identifying-app-installations.html - JackWM
显示剩余6条评论
2个回答

13
您可以通过IMEI号码唯一地识别任何Android手机。
TelephonyManager telephonyManager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
telephonyManager.getDeviceId();
在您的AndroidManifest.xml文件中添加权限:
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>

在模拟器中,你可能会得到像0000...这样的值。请在真机上检查以获取设备ID。


5
非手机设备将没有唯一的IMEI号码。 - CommonsWare

7

如果你想找到关于Android设备的独特信息,最好的方法是获取其序列号。有几篇其他的帖子介绍如何做到这一点,但最受欢迎的是这里:

如何查找Android设备的序列号?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接