1、基本方式

/*** 获取手机的设备号.* @param context 上下文* @return 设备号*/@SuppressLint("HardwareIds")public static String getIMEIDeviceId(Context context) {String deviceId;//如果sdk版本大于等于29if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {deviceId = Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID);} else {final TelephonyManager mTelephony = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {if (context.checkSelfPermission(Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {return "";}}assert mTelephony != null;if (mTelephony.getDeviceId() != null) {if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {deviceId = mTelephony.getImei();} else {deviceId = mTelephony.getDeviceId();}} else {deviceId = Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID);}}return deviceId;}

2、官方推荐

if (context.applicationInfo.targetSdkVersion >= 29 && Build.VERSION.SDK_INT >= 29 ){//大于等于29使用特殊方法getUniqueID(context);}private fun getUniqueID(context: Context): String? {var id: String? = nullval androidId = Settings.Secure.getString(context.contentResolver, Settings.Secure.ANDROID_ID)if (!Tool.isEmpty(androidId) && "9774d56d682e549c" != androidId) {try {val uuid = UUID.nameUUIDFromBytes(androidId.toByteArray(charset("utf8")))id = uuid.toString()} catch (e: Exception) {e.printStackTrace()}}if (Tool.isEmpty(id)) {id = getUUID()}return if (Tool.isEmpty(id)) UUID.randomUUID().toString() else id}private fun getUUID(): String? {var serial: String? = nullval m_szDevIDShort = "35" + Build.BOARD.length % 10 + Build.BRAND.length % 10 + (if (null != Build.CPU_ABI) Build.CPU_ABI.length else 0) % 10 + Build.DEVICE.length % 10 + Build.DISPLAY.length % 10 + Build.HOST.length % 10 + Build.ID.length % 10 + Build.MANUFACTURER.length % 10 + Build.MODEL.length % 10 + Build.PRODUCT.length % 10 + Build.TAGS.length % 10 + Build.TYPE.length % 10 + Build.USER.length % 10 //13 位if (Build.VERSION.SDK_INT <= 29) {try {serial = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {Build.getSerial()} else {Build.SERIAL}//API>=9 使用serial号return UUID(m_szDevIDShort.hashCode().toLong(), serial.hashCode().toLong()).toString()} catch (exception: java.lang.Exception) {serial = "serial" // 随便一个初始化}} else {serial = Build.UNKNOWN // 随便一个初始化}//使用硬件信息拼凑出来的15位号码return UUID(m_szDevIDShort.hashCode().toLong(), serial.hashCode().toLong()).toString()}

Android获取设备号SSAID (Android ID) 和 IMEI相关推荐

  1. Android 获取设备号

    前言 最近在对接口的时候 根据后台要求生成设备唯一id 作为key android 获取设备号比较简单 这里记录一下 实现 /*** 获取设备号* @param context* @return*/p ...

  2. android获取设备的型号,Android获取手机设备信息

    Android的设备信息获取很简单,导入android.os.Build,在Build类 中有你需要的所有信息. 如果如要经常查阅,可以收藏此文章,需要时点开看一看 下面我打印了一些信息,查查单词的中 ...

  3. android获取卡号号码,Android银行卡扫描获取银行卡号

    ard.io开源的银行卡扫描的三方库真的是很好用啊. 首先需要在你的module的gradle的依赖文件中添加依赖 compile 'io.card:android-sdk:5.5.1' 2 清单文件 ...

  4. airtest获取设备号和获取设备宽度、高度、绝对坐标 相对坐标、滑动屏幕

    def setup_function():# 连接当前设备# HUAWEI honor 10 分辨率:2280*1080# OPPO R15 分辨率:2280*1080# Vivo x21 分辨率:2 ...

  5. Android获取设备ID号

    Android获取设备ID号 Android有多种方式可以获取设备ID,但是每一种总会有一点限制,为此,整合几种方式在一起,这样就万无一失了 public class DeviceIdFactory ...

  6. Android获取设备各项信息(设备id、ip地址、设备名称、运行商、品牌、型号、分辨率、处理器、国家码、系统语言、网络类型、oaid、android版本、操作系统版本、mac地址、应用程序签名..)

    Android获取设备各项信息(设备id.ip地址.APP应用名称.设备名称.运行商.品牌.型号.分辨率.处理器.国家码.系统语言.网络类型.oaid.android版本.操作系统版本.mac地址.应 ...

  7. android设备id完美解决方法,安卓获取渠道名渠道id Android获取设备唯一标识的终极解决方法,防止安卓7.0时崩溃问题...

    一,先说获取渠道名(这里以友盟为例) /* * 4.5.1新加渠道名字段,用来传给后台去统计各个渠道下载量 * */ public static String getSource() { //获取渠道 ...

  8. Android 获取设备ID,手机厂商,运营商,联网方式,获取系统语言,获取时区

    权限 <uses-permission android:name="android.permission.READ_PHONE_STATE" /> 安卓6.0需动态获取 ...

  9. Android 通过串口获取设备号 android串口测试工具 完整解析

    前言 android 工业平板RK3399-all 调试有关串口的设备 如何获取对应的串口设备及串口名字 先来一张图说明 获取串口 SerialPortFinder mSerialPortFinder ...

  10. Android -- 获取设备硬件信息

    Android – 获取设备硬件信息 通过 Build 获取指定字段信息: 信息 方法 例子 主板 Build.BOARD PAR 系统定制商 Build.BRAND HUAWEI 硬件名称 Buil ...

最新文章

  1. 百度黄埔学院计划第四期来了!
  2. PHP中session的工作原理
  3. vue post请求后台django接口Forbidden (CSRF token missing or incorrect.)
  4. java 内省 反射_Java的反射和内省
  5. String str=Hello 与 String str=new String(“Hello”)一样吗?
  6. python怎么切换中文键盘_python模拟键盘输入 切换键盘布局过程解析
  7. mysql5.7设置不区分大小写
  8. python将矩阵顺时针旋转90度_python 二维数组90度旋转的方法
  9. cshop是什么开发语言_mes用什么语言开发?mes开发平台
  10. Codevs No.1553 互斥的数
  11. 近世代数-群论基础二
  12. BT种子下载软件uTorrent Pro v3.5.5.45972
  13. 怎么创建自己的博客网站
  14. 战地2服务器怎么虚拟人数,战地2如何修改人数
  15. 复合函数求导定义证明_复合函数求导法则证明方法的探讨
  16. QAxObject保存Excel表格
  17. 如何看待测试过程中的漏测发生
  18. HCSA-08 威胁防护介绍、ARP防护、网络攻击防护、病毒过滤、入侵防御、边界流量过滤
  19. php --interface接口的使用方法
  20. lanswich交换机VLAN配置

热门文章

  1. Java 程序员月薪3.8万,需要技术达到什么水平?
  2. codeforces竞赛1141题解
  3. 搜索结果排列html模板,搜索结果页优化-城市模板
  4. LeetCode | 0665. Non-decreasing Array非递减数列【Python】
  5. 使用TTP223触摸传感器和Arduino UNO开发板实现触摸控制灯泡
  6. 点餐app的初步总结
  7. [OpenHarmony RK3568] (三)蓝牙芯片适配
  8. java容器之Map
  9. Xshell 下载地址
  10. MPICH2 bcast广播函数使用