Android获取设备唯一标识

2023-05-16

一、IMEI:国际移动设备识别码的缩写,其总长为15位,每位数字仅使用0~9的数字。
双卡双待会有两个IMEI值,并且在Android10以后就无法获取到了,而且在模拟器中是可以修改的,所以该值无法作为识别设备唯一的标识。(如果只带有Wifi的设备或者音乐播放器没有通话的硬件功能的话就没有这个IMEI值)
IMEI的获取方式:
1、Android6.0以前,无需任何权限通过getDeviceId()方法获取到IMEI码(GSM设备返回的是IMEI码,CDMA设备返回的是MEID码或者ESN码);
2、Android6.0-Android8.0之间,需要申请READ_PHONE_STATE权限通过getDeviceId()方法获取到IMEI码;
3、Android8.0及以上,可以通过getImei()方法获得(getDeviceId方法在Android 8.0及之后的版本已经被废弃了)
4、Android10及以上,targetSdkVersion小于29的话,有权限可以获取到Imei,大于等于29就会报异常了

二、Mac
手机Wifi或蓝牙的MAC地址
并不是所有的设备都有wifi和蓝牙,且需要权限,在 Android 6.0(API 级别 23)到 Android 9(API 级别 28)中,本地设备 MAC 地址(如 WLAN 和蓝牙)无法通过第三方 API 使用。WifiInfo.getMacAddress() 方法和BluetoothAdapter.getDefaultAdapter().getAddress() 方法都会返回 02:00:00:00:00:00

三、ANDROID_ID
可以通过 Settings.System.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID)获取到,当设备恢复出厂设置,或者Root过的话,该值会被改变。

四、PsuedoID
该方式是通过拼接硬件信息获取到的,网上有很多demo,代码如下:
代码
该方法也无法保证唯一性,但是概率极低就是。

解决方案:
Android 8.0以下 判断设备唯一性可用 PsuedoID + DeviceId
Android 8.0及以上 判断设备唯一性可用 PsuedoID + ANDROID_ID

备注:
1、获取DeviceId是需要权限的,如果用户用户拒绝了权限,我们可以不让使用,或者其它值代替DeviceId(暂未想到,哈哈~~)
2、PsuedoID方法中,获取serial,在大于等于26的api中都是返回unknow(https://developer.android.com/reference/android/os/Build.html#SERIAL)
3、谷歌建议使用AndroidID(https://developer.android.com/training/articles/user-data-ids)

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

Android获取设备唯一标识 的相关文章

随机推荐

  • C++教程

    C 43 43 教程 xff1a 源码 参考网址 xff1a C 43 43 简介 编程宝库 1 include lt iostream gt 2 using namespace std 3 4 int main 5 6 cout lt l
  • Linux命令执行命令自动输入y

    echo y rm i cc root 64 bogon shell touck cc bash touck 未找到命令 root 64 bogon shell touch cc root 64 bogon shell ll cc rw r
  • 查看Oracle数据库版本号

    Oracle 1 select from v version 2 select from product component version 3 set serveroutput on exec dbms output put line d
  • SQL Server2008官方下载地址

    官网地址 xff1a https www microsoft com zh cn download details aspx id 61 30438
  • C#+vs2019windos窗口实现数字图像基础处理(灰度化,二值化,对比度,亮度)

    目录 一 灰度化二 亮度三 对比度四 可变阈值二值化五 自适应二值化 一 灰度化 在三原色理论中 xff0c 所有颜色都是以红 绿 蓝三原色按不同比例混合构成的 xff0c 不同的红 绿 蓝三原色比例构成了不同的颜色 而灰度数字图像指的是图
  • 达梦数据库常见问题总结

    http www itpub net forum php mod 61 viewthread amp tid 61 1557982
  • Linux命令手动清除缓存echo 3 > /proc/sys/vm/drop_caches

    缓存cache占用过大 CPU达到85 以上 释放掉被系统Cache占用的数据命令 xff1a echo 3 gt proc sys vm drop caches 第一行 xff1a 从操作系统 OS 来看 xff1a 计算机共计 4040
  • MIB Browser failed to register OCX components..解决方法

    1 关闭操作系统的防火墙 xff0c 或者在高级选项里添加入站规则 xff0c 允许UDP 162端口消息进入即可 2 以管理员身份运行 bin mgmibbpe exe
  • Navicat For MongoDB安装及破解

    安装包转载网址 xff1a https blog csdn net qq 40737025 article details 82919700 baidu云 请求头自己加上中间有中文就自己去掉 xff0c 防止屏蔽 pan baidu com
  • C# Winform应用程序调用Microsoft RDP client control实现远程连接(VS2013)

    试了好一会 xff0c 终于成功了 xff01 先说问题 xff1a 1 控件已成功添加到工具箱中 但未在活动设计器中启用 注册控件 xff1a regsvr32 C Windows System32 mstscax dll VS2013提
  • C++中枚举enum详解

    转载博客地址 xff1a https blog csdn net bruce 0712 article details 54984371 众所周知 xff0c C C 43 43 语言可以使用 define和const创建符号常量 xff0
  • Android Rust JNI系列教程(一) 环境配置

    序 本系列文章将从rust环境搭建开始 逐步带大家了解使用rust进行Android JNI开发的基本技能 相关文章共分为如下几步 Rust JNI环境搭建 创建第一个Rust JNI项目Rust与Android互相调用Rust 调用And
  • 私人网盘nextcloud配置问题解决

    安装流程 配置流程非常简单 xff0c 主要是参考了下面这篇博文配置 xff0c 在宝塔面板下安装nextcloud xff0c 非常简单 博文跳转 https www vpsss net 5780 html 大概总结以下步骤 xff1a
  • Linux下使用rclone挂载网盘到本地

    Linux下使用rclone挂载网盘到本地 Rclone是一个支持挂载多数国外网盘的工具 Rclone官网传送们 目前Rclone支持挂载的网盘有 xff1a Google Drive Dropbox Google Cloud Storag
  • kvm 虚拟化安装 Ubuntu 18.04 server

    本文续上篇 裸金属服务器 kvm 虚拟化安装 win10 继续记录使用 KVM 在 Centos 7 5 裸金属服务器上安装 Ubuntu 18 04 Server的过程及遇到的问题 资源准备 首先要配置好 KVM 环境 xff0c 上文已
  • 创建回调函数

    1 新建一个空的工程 xff0c 在工程中随便创建一个类 xff0c 比如 h文件 import lt UIKit UIKit h gt typedef void resultBlock void 64 interface MyView U
  • 虚拟机的复制

    虚拟机的复制 xff08 1 xff09 虚拟机复制需要的两个重要文件 etc libvirt qemu xml文件 虚拟机的配置文件 xff0c 前端管理文件 xff0c 可以使用前端文件回到相应位置寻找后端硬盘文件 var lib li
  • 关于C++循环依赖问题的理解

    简介 如果有两个类 xff0c 类A和类B xff0c A类中有一个B类的对象b作为数据成员 xff0c B类中又有一个A类对象a作为数据成员 xff0c 像这样的情况就叫做循环依赖 那么如何解决类之间的循环依赖问题呢 xff1f 代码实例
  • AndroidStudio配置maven阿里云镜像

    写1行不行 xff0c 要写5行 xff0c 不要写 jcenter google xff0c 半天完不了 Android配置maven阿里云镜像 海阔天空185的博客 CSDN博客 android maven 阿里云 buildscrip
  • Android获取设备唯一标识

    一 IMEI xff1a 国际移动设备识别码的缩写 xff0c 其总长为15位 xff0c 每位数字仅使用0 xff5e 9的数字 双卡双待会有两个IMEI值 xff0c 并且在Android10以后就无法获取到了 xff0c 而且在模拟器