android下获取设备唯一标识原本非常简单(至少不会像iOS一样禁用这个,禁用那个),但是由于设备的多样性需要考虑的东西也对应复杂起来。

先附上完整代码

protected static final String PREFS_FILE = "gank_device_id.xml";

protected static final String PREFS_DEVICE_ID = "gank_device_id";

protected static String uuid;

static public String getUDID()

{

if( uuid ==null ) {

synchronized (GankMainActivity.class) {

if( uuid == null) {

final SharedPreferences prefs = s_instance.getSharedPreferences( PREFS_FILE, 0);

final String id = prefs.getString(PREFS_DEVICE_ID, null );

if (id != null) {

// Use the ids previously computed and stored in the prefs file

uuid = id;

} else {

final String androidId = Secure.getString(s_instance.getContentResolver(), Secure.ANDROID_ID);

// Use the Android ID unless it's broken, in which case fallback on deviceId,

// unless it's not available, then fallback on a random number which we store

// to a prefs file

try {

if (!"9774d56d682e549c".equals(androidId)) {

uuid = UUID.nameUUIDFromBytes(androidId.getBytes("utf8")).toString();

} else {

final String deviceId = ((TelephonyManager) s_instance.getSystemService( Context.TELEPHONY_SERVICE )).getDeviceId();

uuid = deviceId!=null ? UUID.nameUUIDFromBytes(deviceId.getBytes("utf8")).toString() : UUID.randomUUID().toString();

}

} catch (UnsupportedEncodingException e) {

throw new RuntimeException(e);

}

// Write the value out to the prefs file

prefs.edit().putString(PREFS_DEVICE_ID, uuid).commit();

}

}

}

}

return uuid;

}

1、正常情况下可以通过((TelephonyManager) s_instance.getSystemService( Context.TELEPHONY_SERVICE )).getDeviceId();  来获取,但是某些平板电脑此函数会返回空

2、通过 Secure.getString(s_instance.getContentResolver(), Secure.ANDROID_ID);   也可以获取到一个id,但是android2.2或者是某些山寨手机使用这个也是有问题的,它会返回一个固定的值 9774d56d682e549c

3、如果前两个都没有获取到udid,那么就在程序启动的时候创建一个随机的uuid,然后保存起来。这个算是兼容方案,当然这样的设备并不会很多。

android设备udid,Android下获取设备唯一标识(UDID, DeviceID)相关推荐

  1. Android 利用阿里UTD库 获取手机唯一标识

    因为上传服务器基本上都会用到唯一标识,类似于设备id,uid等其实都可以但是有时候因为手机的原因这个唯一标识可能会为空或者会出现重复的情况,翻翻找找想着想支付宝,淘宝这样的应用是怎么获取的呢,阿里其实 ...

  2. Vue获取浏览器唯一标识

    `登陆时候可能需要向后台传输一个唯一标识符 具体实现思路如下: 1.引入js <!-- 获取唯一标识 --> <script type="text/javascript&q ...

  3. Windows获取系统唯一标识UUID

    Windows获取系统唯一标识UUID  (也叫CSP UUID) 命令行 wmic csproduct get uuid C/C++ 使用CoCreateGuid函数,可以参考官方:https:// ...

  4. 获取电脑唯一标识,硬盘序列号,主板序列号,CPU序列号

    在生产环境中,有时候会需要获取电脑唯一标识进行程序管理验证,比如一个程序,在A电脑上面只能允许正常登陆一年,到期后提示联系管理员等情况.就是获取电脑唯一标识后将该值存入授权数据库,默认给当前电脑的使用 ...

  5. android设备udid,Android下获取设备唯一标识(UDID, DeviceID...)

    http://blog.csdn.net/langresser_king/article/details/9373051 1.正常情况下可以通过((TelephonyManager) s_instan ...

  6. Android 设备获取物理唯一标识码

    唯一标识码这东西在网络应用中非常有用,例如检测是否重复注册之类的. import android.provider.Settings.Secure; private String android_id ...

  7. python获取机器唯一标识_开发中常用工具 - 获取设备的唯一标识、UDID、UUID、keychain保存UUID、判断网络...

    UDID 全名:Unique Device Identifie(设备唯一标识符) 说明:UDID,即设备唯一标识符,这是除序列号之外每台iOS设备的独一无二的号码.UDID只是和设备相关的,是用来区分 ...

  8. Android 手机上获取物理唯一标识码

    唯一标识码这东西在网络应用中非常有用,例如检测是否重复注册之类的. 本文转自:http://blog.csdn.net/zhang31jian/article/details/23787037 imp ...

  9. 唯一标识 微信小程序_微信小程序获取用户唯一标识(不用授权)

    在做微信小程序开发时,根据应用的需要,可能会要求获得用户不同的信息和硬件设备不同的使用权限.前者比如:用户标识.头像.昵称.姓别.地址.手机号码等,后者包括:地理位置.手机相册.摄像头等.根据小程序现 ...

最新文章

  1. 开源图像编辑器 GIMP 开发者透露 2019 年计划
  2. wxWidgets:使用控件
  3. 落在我手里,今天你能嫁出去算我输!
  4. html 页面重复度高,html – CSS背景渐变重复问题
  5. 分布式、中间件、消息队列的工作模式
  6. 说说emit(上)基本操作
  7. Python菜鸟入门:day10模块介绍
  8. DP练习(初级):ZigZag
  9. zoj1022 Parallel Expectations(DP)
  10. Flink的Table和SQL的基本API
  11. pillow安装出错的解决办法
  12. mac vmware fusion 12 免费证书序列
  13. 一种FlashBuilder不能启动的解决方法
  14. Vmware 的一些序列号
  15. 如何压缩css代码,在开发中怎么压缩js和css?有哪些办法?
  16. 华为不提示连接计算机,求告知为什么现在华为用usb连电脑手机不显示
  17. kaggle中关于图像的比赛整理
  18. syn c 语言程序,C语言实现SYN Flood
  19. 字节笔试题(含答案)
  20. Ktor实现Https双向认证

热门文章

  1. 面试准备—vue核心之虚拟DOM(vdom)
  2. 计算机科学与技术英译,计算机科学与技术外文翻译、中英对照、英汉互译.doc...
  3. 两个Python小游戏
  4. Azure Kubernetes(AKS)云部署平台
  5. DotNetBar SuperTabItem 打开与关闭子窗体
  6. 一周热图|蔡依林助力蒂佳婷;戚薇亮相上海时装周大秀;自然堂携手赵今麦推新品...
  7. 输出第一行1个 *,第二行 3个*.....
  8. 苹果CMS10内核 番茄视频模板 苹果CMS二开模板 会员系统 卡密系统
  9. 愿有人陪你颠沛流离(读书摘要)
  10. Swin Transformer Object Detection 目标检测、问题汇总