2022最新android设备uuid、udid使用教程​

2023-10-31

前言​

udid:​

UDID是Unique Device Identifier的缩写,中文意思是设备唯一标识.​

uuid:​

UUID是Universally Unique Identifier的缩写,中文意思是通用唯一识别码.​

简言之:udid对应某个硬件设备,一个硬件设备的唯一标识。而uuid除了表达硬件的唯一标识,还能用来标识软件的标识,比如手机上不同的app的UUID是互斥的​

android设备怎么获得udid呢?​

这里面,我们主要目的是想获得一台android设备对一个的一个唯一的标识码,即udid.​

对于Android平台而言,没有稳定的API可以让开发者获取到这样的设备ID。​

开发者通常会遇到这样的困境:随着项目的演进,越来越多的地方需要用到设备ID;然而随着Android版本的升级,获取设备ID却越来越难了。​

加上Android平台碎片化的问题,获取设备ID之路,可以说是步履维艰。​

获取设备标识的API屈指可数,而且都或多或少有一些问题。​

android设备id通常有以下几种(但是不一定唯一,刷机后可能就变了)​

1. IMEI​

IMEI本该最理想的设备ID,具备唯一性,恢复出厂设置不会变化(真正的设备相关),可通过拨打*#06# 查询手机的imei码。​

然而,获取IMEI需要 READ_PHONE_STATE 权限,估计大家也知道这个权限有多麻烦了。​

尤其是Android 6.0以后, 这类权限要动态申请,很多用户可能会选择拒绝授权。我们看到,有的APP不授权这个权限就无法使用, 这可能会降低用户对APP的好感度。​

而且,Android 10.0 将彻底禁止第三方应用获取设备的IMEI(即使申请了 READ_PHONE_STATE 权限)。所以,如果是新APP,不建议用IMEI作为设备标识;​

如果已经用IMEI作为标识,要赶紧做兼容工作了,尤其是做新设备标识和IMEI的映射。​

2. 设备序列号(SN号)​

在Android 7.1或更早系统(SDK<=25),java可通过android.os.Build.SERIAL获得,由厂商提供。​

如果厂商比较规范的话,设备序列号+Build.MANUFACTURER应该能唯一标识设备。但现实是并非所有厂商都按规范来,尤其是早期的设备。​

最致命的是,Android 8.0及 以上(SDK>=26),android.os.Build.SERIAL 总返回 “unknown”;若要获取序列号,可调用Build.getSerial() ,但是需要申请 READ_PHONE_STATE 权限。​

到了Android 10.0(SDK>=29)以上,则和IMEI一样,也被禁止获取了。​

android ndk获取sn号方法:​

//读取序号​

__system_property_get("ro.serialno",m_szDevID);​

LOGE("%s", m_szDevID);​

大多android设备都有wifi模块,因此,wifi模块的MAC地址就可以作为设备标识。基于隐私考虑,官方不建议获取​

获取MAC地址也是越来越困难了,Android 6.0以后通过 WifiManager 获取到的mac将是固定的:02:00:00:00:00:00​

7.0之后读取 /sys/class/net/wlan0/address 也获取不到了(小米6)。​

4. ANDROID_ID​

Android ID 是获取门槛最低的,不需要任何权限,64bit 的取值范围,唯一性算是很好的了。​

但是不足之处也很明显:​

1、刷机、root、恢复出厂设置等会使得 Android ID 改变;​

2、Android 8.0之后,Android ID的规则发生了变化:​

对于升级到8.0之前安装的应用,ANDROID_ID会保持不变。如果卸载后重新安装的话,ANDROID_ID将会改变。​

对于安装在8.0系统的应用来说,ANDROID_ID根据应用签名和用户的不同而不同。ANDROID_ID的唯一决定于应用签名、用户和设备三者的组合。​

两个规则导致的结果就是:​

第一,如果用户安装APP设备是8.0以下,后来卸载了,升级到8.0之后又重装了应用,Android ID不一样;​

第二,不同签名的APP,获取到的Android ID不一样。​

其中第二点可能对于广告联盟之类的有所影响(如果彼此是用Android ID对比数据的话),所以Google文档中说“请使用Advertising ID”,​

不过大家都知道,Google的服务在国内用不了。​

对Android ID做了约束,对隐私保护起到一定作用,并且用来做APP自己的活跃统计也还是没有问题的。​

总结​

目前用到的还是以sn号和mac地址为主,还有的会用soc号作为android设备的udid​

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

2022最新android设备uuid、udid使用教程​ 的相关文章

  • Windows 7 64位android AVD启动错误:无法分配内存:8

    我刚刚更新到 Android SDK Tools r20 并尝试在 android 4 1 和 WXGA 上创建 avd 但是当我启动 AVD 时收到错误消息 配置 ini hw mainKeys no hw lcd density 320
  • 单元测试定位服务

    我有一个位置跟踪服务 正在尝试对其进行单元测试 我正在尝试使用 locationManager addTestProvider 和 setTestProviderLocation 方法来实现此目的 但是 我似乎无法通过提供程序获取任何位置并
  • 将 match_parent 转换为“0dp”

    当我使用android layout height match parent or android layout width match parent 作为约束布局中子项的高度 宽度并构建 Gradle 文件 它会自动更改为android
  • Android 和 Facebook 共享意图

    我正在开发一个 Android 应用程序 并且有兴趣了解如何使用 Android 的共享意图在应用程序内更新应用程序用户的状态 浏览过 Facebook 的 SDK 后 这似乎很容易做到 但是我很想允许用户通过常规的共享意图弹出窗口来做到这
  • Jenkins 上的 XCode 项目陷入“codesign”

    我使用 Jenkins 与 XCode 插件进行持续集成 有一个 Jenkins 坚持的项目 usr bin codesign force sign 接下来是旋转器 永远旋转 我以前从未见过这个 以前有人见过这个吗 是配置文件问题还是证书问
  • 如何根据 ListActivity 中长按的项目设置特定的上下文菜单?

    我有一个列表活动 我选择手动添加第一个项目 即 添加新项目 我已经注册了整个列表视图的上下文菜单 使用registerForContextMenu getListView 直接进入onCreate 当建立上下文菜单时 系统调用onCreat
  • 动态添加的 RemoteView 上的布局权重

    在我的小部件中 我使用以下内容将项目 R layout widget item 动态添加到我的主小部件布局中定义的 LinearLayout 中 Main widget layout RemoteViews views new Remote
  • 片段和通知:针对通知中的不同活动;取决于屏幕配置

    问题 如何决定做什么Activity a Notification如果目标可能取决于配置 屏幕尺寸 方向等 则应启动 就像人们使用时经常出现的情况一样Fragments Details 让我们考虑一下新闻阅读器示例 http develop
  • Android Ant项目参考

    我有一个 Android 项目 它有一个 Java 项目文件夹引用 我是用eclipse开发的 现在我想用Ant编译 我想在 build xml 中添加内容以包含引用 假设您的项目名为 HelloListview 比如说 并且您希望所有 A
  • 三星 Galaxy Note 上的布局

    我有一个奇怪的问题 只出现在 Samsung Galaxy Note 上 我有横向和纵向布局 正常和大 如下 http developer android com guide practices screens support html h
  • 为什么 CheckBox 检查不能以编程方式与 Kotlin 一起使用?

    我想这个问题以前可能有人问过 但这个问题也发生在我身上 所以我在这里再次询问 看看我们能否找到解决方案 所以基本上问题是以编程方式检查复选框不与 Kotlin 代码一起工作 为了解释一下 我正在分享我的代码和问题的屏幕截图 filterCo
  • 当我想用它来进行单独的 apk 测试时,出现“android.support.test.espresso 不存在”

    我需要在没有源代码的情况下对 Android 应用程序进行一些自动测试工作 我发现 Robotium 和 espresso 都可以完成这项工作 我决定使用 espresso 因为它有 Google 支持 我想使用相同的签名对目标 apk 和
  • 如何从文本视图制作多页 PDF?

    我从 iPhone 应用程序生成了一个 PDF 文件 虽然大多数文档只有一页 但我希望能够检测文本是否超出 边距 如果是 则将其添加到下一页 我对此很陌生 所以不太确定如何做到这一点 下面是代码 有什么建议么 void drawBorder
  • 从 Social.framework(iOS6) 获取 Facebook 访问令牌

    我需要检索我在 设置 应用程序中设置的系统帐户的 Facebook 访问令牌 我知道 Social framework iOS6 知道我所有的 FB 帐户信息 并且我可以使用 SLRequest 类对 Graph API 执行 API 调用
  • 将 jstring 转换为 QString

    我正在调用一个返回字符串的 Java 函数 QAndroidJniObject obj QAndroidJniObject callStaticObjectMethod
  • 连续按钮的自定义 arrayadapter 和 onclicklistener

    我有一个自定义数组适配器 我想为每一行中的按钮添加一个 onclicklistener 当我单击按钮时 我希望图像资源发生变化 一切正常 除了当我单击按钮时图像发生变化但另一行中的另一个按钮的图像也会发生变化 感谢您的帮助 这是我的代码 p
  • ACTION_MEDIA_BUTTON 的广播接收器不起作用

    我正在为 Android 操作系统版本 4 0 3 ICS 编写 Android 应用程序 问题是我没有从 BroadcastReceiver 的 onReceive 方法中的 Log d 获得输出 这意味着我的应用程序没有正确处理广播 我
  • Android:将“内部”链接添加到 TextView 的一部分,该链接链接到我的代码中的操作

    正如标题所解释的 我想添加链接到我的TextView 有这两个警告 我希望链接能够作用于TextView 不是完整的 类似于AHTML 中的锚点 我希望链接指向我的代码中的操作 而不是网站 我可以在我的活动中定义一个方法 或者实现一个OnC
  • 重叠堆叠图像视图

    我正在尝试将图像视图堆叠在一起 70 重叠 我使用了一个frameLayout 并给每个elemnet填充了10 它有效 但是当涉及到处理事件时 这个填充让我很痛苦 有没有更好的重叠视图的方法 使用不同的布局 等 我正在为 Android
  • 按字符串删除所有重音符号

    surnameField text Fal l opo remove space and apostrophe NSString surnarmeInput surnameField text stringByReplacingOccurr

随机推荐

  • Nginx转发超简单实现

    使用场景 用Nginx做转发 实现更好的服务器管理 此处实现多域名转发 假设服务器分配 客户访问机器IP 192 168 137 70 Nginx接收访问请求 并转发到49服务器 真实服务机器IP 192 168 137 49 IIS或者A
  • push c语言什么作用,“c语言”中,“pop函数”和“push函数”的作用分别是什么?...

    这个算是数据结构的内容讲解的是一个叫做栈类型的数据结构 这个数据结构的特点就是后进先出 最后放进去的数据最先拿出来 pop函数就是拿出数据的操作 push是放入是数据的操作 内容拓展 pop函数呵push函数的使用 include incl
  • 利用fgets实现行数读取

    首先在shell下man fgets include
  • opencv实现图片裁剪和缩放

    1 格式转换 yuv2rgb include
  • 5.揭秘angular2学习 ------- 管道

    管道简介 管道是什么 Angular的管道可以看作成是一个数据格式化展示的工具 管道可以将数据格式化显示 而不改变源数据 比如关于日期的展示 对于源数据使用管道1可以以yyyy MM dd来展示 也可以使用管道2展示成Feb 28 2017
  • 在HM和VTM上实现无损压缩

    1 HM 方法一 在命令行输入增加 TransquantBypassEnableFlag 1 CUTransquantBypassFlagForce 1 HM16 9中对应的命令行 方法二 直接在cfg里面修改 把TransquantByp
  • C代码创建多通道WAV音频文件

    C代码创建多通道WAV音频文件 算法调试经常需要在PC端进行仿真输出 涉及到多通道 或者每一级算法的输出对比 这时需要多通道的WAV文件生成 代码 这里给出的是默认16bit单点数据位长 可以自己修改下 改成自己想要的位长 file wav
  • Socket长连接与短连接

    长连接与短连接 所谓长连接 指在一个TCP连接上可以连续发送多个数据包 在TCP连接保持期间 如果没有数据包发送 需要双方发检测包以维持此连接 一般需要自己做在线维持 短连接是指通信双方有数据交互时 就建立一个TCP连接 数据发送完成后 则
  • MBA-day13 逻辑学 模态推理(可能与必然的推理)

    1 基本概念 模态判断 是反应事物的可能性或必然性的判断 根据判断所反应的事物的可能性还是必然性 可以把模态判断分为可能判断与必然判断 模态命题 可能命题 必然命题 可能肯定命题 可能否定命题 必然肯定命题 必然否定命题 2 模态判断的负判
  • 第63讲:Python编程案例之猴子吃桃

    文章目录 1 需求描述以及分析 2 递推方式实该该程序 3 递归方式实现该程序 1 需求描述以及分析 需求描述 猴子第一天摘了若干个桃子 第一天吃了若干个桃子中的一半 觉得不过瘾 又多吃了一个 第二天早上又将第一天剩下的桃子吃了一半 并且也
  • IDEA中修改workspace.xml内容,保存后自动被删除

    最近在做一个SpringBoot的分布式项目 由于项目里面有多个启动器 每次查找启动类文件来启动服务效率就很低 于是想到用Run Dashboard来管理启动类 由于是新的电脑装的IDEA没有自动开启这个工具 因此需要手动开启一下 开启方式
  • 【Docker】安装Presto连接Hive、mysql、oracle、postgresql、SQL server等7种类型数据库

    目录 1 简介 2 下载安装 1 下载镜像 2 下载presto客户端jar文件 3 将hadoop配置拷贝到容器 4 新增hive properties配置文件 5 重启容器 在linux命令行下 3 测试连接 4 其他类型数据库配置连接
  • Java 两点经纬度计算距离和角度

    角度 计算两点对于正北方向的朝向角度 0 360 param start format latitude 30 longitude 120 param end private static double bearing List
  • UEFI入门必读的12本书

    作者简介 罗冰 系统安全 特别是物理隔离领域 专家 主导开发网络隔离卡 双网隔离机 国产隔离系统 单向光传输等各类安全产品 拥有十几项发明和实用新型专利 致力于UEFI技术的研究 实践和推广 在CSDN和知乎上设有 UEFI开发探索 专栏
  • UE4(unreal engine4)蒙太奇动画删除不想要的帧数

    UE4系列文章目录 文章目录 UE4系列文章目录 前言 一 问题原因 二 具体操作步骤 前言 UE4 unreal engine4 蒙太奇动画删除不想要的帧数 当我们在UE4中导入一个fbx骨骼动画 当我们想要截取动画中某些不想用的帧时 点
  • 软件版本号命名规范_产品版本命名的规范与规则

    上一篇文章我们对产品的版本迭代的方法进行了一些总结 本篇文章我会针对产品的版本命名 验收 发布这三个层面 来总结一下我自己的想法 希望能对大家有所帮助 01 产品版本命名的规范与规则 1 1 版本命名规范 软件版本号由主版本号 次版本号 修
  • springboot后台获取不到前台Vue日期问题解决

    一 实体类字段写法如下 JsonFormat pattern yyyy MM dd timezone GMT 8 private Date sendTime Vue使用element ui写法
  • 4.2、Flink任务怎样读取文件中的数据

    目录 1 前言 2 readTextFile 已过时 不推荐使用 3 readFile 已过时 不推荐使用 4 fromSource FileSource 推荐使用 1 前言 思考 读取文件时可以设置哪些规则呢 1 文件的格式 txt cs
  • (二)程序语言设计基础

    目录 1 程序设计语言概述 1 1 基本概念 1 1 1 低级语言和高级语言 1 1 2 编译程序和解释程序 1 1 3 程序设计语言的定义 1 1 4 程序设计语言的分类 1 2 程序设计语言的基本成分 1 2 1 数据成分 1 2 2
  • 2022最新android设备uuid、udid使用教程​

    前言 udid UDID是Unique Device Identifier的缩写 中文意思是设备唯一标识 uuid UUID是Universally Unique Identifier的缩写 中文意思是通用唯一识别码 简言之 udid对应某