android-cn / android-discuss

Android 问题交流讨论坛, 微信公众号:codekk, 网站:
https://github.com/android-cn/android-discuss/issues
Apache License 2.0
4.08k stars 537 forks source link

求助各位大神,怎么得到手机的唯一标识【注意:不是所有的手机都能得到IMEI及Mac地址】或者其他的折中方式 #175

Open 120660021 opened 9 years ago

120660021 commented 9 years ago

【需求是:一个手机一天只能登录2个不同的账号,所以需要得到用户手机的唯一标示并传递给服务器做判断】本来以为可以使用安卓机的IMEI 但是发现不是所有手机都能得到 ,然后又获取mac地址,也是一样 ,发现有的也获取不到,希望得到各位的帮助,小弟在此万分感谢

R1NC commented 9 years ago

目前貌似没有完美的解决方式,只能各种方式结合使用,尽量适配:

  1. 首先尝试读取IMEI、Mac地址、CPU号等物理信息(有不少工具可以修改IMEI);
  2. 如果均失败,可以自己生成UUID然后保存到文件(文件也可能被篡改或删除);

如何验证安卓设备唯一性确实是个比较麻烦的问题: 之前用一个拼车软件,新用户送红包。我一同学就通过Xposed修改IMEI,然后在淘宝购买微信账号,好长一段时间上下班打的不花钱。

抛砖引玉,欢迎有更好解决方案的不吝赐教。

120660021 commented 9 years ago

结合使用我使用过,坑的比较严重哈、哈哈,好多mac地址获取到的是00000000000000,我是用try catch 方式做的 ,我以为获取不到mac地址会出现异常,谁知道返回这么多0,导致获取mac地址获取到0的用户无法登录,本身软件限制一台手机只能登录2个手机号 一直被这个问题困扰,希望大牛帮助解决

120660021 commented 9 years ago

没有人知道吗,额

sfshine commented 9 years ago

1.android id 2.imei 3.mac 4.如果再没有就uuid生成一个保存起来

l123456789jy commented 9 years ago

获取手机号呢!

zhdh2008 commented 9 years ago

@l123456789jy 手机号一般拿不到的,这属于用户隐私,或者最直接的方式是让用户自己填写

philofly commented 9 years ago

如果取不到,可以以当前进入app的系统时间作为唯一标识。

wozuihighwa commented 9 years ago

手机号码绑定,用验证码验证绑定,再结合其他能获取到的。

caowen commented 9 years ago

如果读取不到就生成一个随机的字符串缓存到本地,读取字符串就行了

elderSword commented 9 years ago

这个问题之前遇到过,直接贴代码 public static String getDeivceId(Context mActivity) { TelephonyManager telephonyManager = (TelephonyManager) mActivity.getSystemService(Context.TELEPHONY_SERVICE); final String deviceId = telephonyManager.getDeviceId(); final String androidId = Secure.getString(mActivity.getContentResolver(), Secure.ANDROID_ID); String uuid = ""; if (deviceId != null) { uuid = deviceId; } else { if (!"9774d56d682e549c".equals(androidId)) { uuid = androidId; } else { uuid = UUID.randomUUID().toString(); } } return uuid; }

TobyTeng commented 9 years ago

为何不直接使用uuID,还要在Android ID、IMEI、MAC地址都不靠谱后才使用?

zeng1990java commented 9 years ago

http://www.cnblogs.com/lqminn/p/4204855.html 这篇博客讲的比较清楚,各方面都有考虑到

120660021 commented 9 years ago

@Trinea 求助Trinea大神 ,Android ID、IMEI、MAC地址都不靠谱,uuID清空缓存数据也就没了,怎么做到唯一的设备id呢 ?万分感谢

EvlinLee commented 9 years ago

http://stackoverflow.com/questions/2785485/is-there-a-unique-android-device-id