`

Android 获取唯一机器码的代码

 
阅读更多

做应用时很多时候都得获取到每个设备的机器码

  1. Secure.getString(getContext().getContentResolver(), Secure.ANDROID_ID)
复制代码



或者


所有的设备都可以返回一个TelephonyManager.getDeviceId()
所有的GSM设备可以返回一个TelephonyManager.getSimSerialNumber()
所有的CDMA 设备对于 getSimSerialNumber() 却返回一个空值!
所有添加有谷歌账户的设备可以返回一个 ANDROID_ID
所有的CDMA设备对于 ANDROID_ID 和 TelephonyManager.getDeviceId() 返回相同的值(只要在设置时添加了谷歌账户) 

正常情况下,你想得到设备的唯一序号, TelephonyManager.getDeviceId() 就足够了。
但会暴露DeviceID,最好把这些id加密。加密后的序号仍然可以唯一的识别该设备,
例如,使用 String.hashCode() ,结合UUID:

  1. final TelephonyManager tm = (TelephonyManager) getBaseContext().getSystemService(Context.TELEPHONY_SERVICE);
  2. final String tmDevice, tmSerial, tmPhone, androidId;
  3. tmDevice = "" + tm.getDeviceId();
  4. tmSerial = "" + tm.getSimSerialNumber();
  5. androidId = "" + android.provider.Settings.Secure.getString(getContentResolver(), android.provider.Settings.Secure.ANDROID_ID);
  6. UUID deviceUuid = new UUID(androidId.hashCode(), ((long)tmDevice.hashCode() << 32) | tmSerial.hashCode());
  7. String uniqueId = deviceUuid.toString();
复制代码

最后的deviceID可能是这样的结果: 00000000-54b3-e7c7-0000-000046bffd97

分享到:
评论

相关推荐

    android获取web服务器端session并验证登陆实用.pdf

    "android获取web服务器端session并验证登陆实用.pdf"这篇文档探讨的就是如何在Android应用中实现这一功能,尤其是在处理服务器端的session保持方面。以下是相关知识点的详细说明: 1. **Web服务器端的Session**: ...

    中兴ADB密码算号器.zip_ADB密码算不对_darkhjc_中兴adb 微京_中兴密码_中兴算号

    用户需要输入设备的机器码(可能就是上述的IMEI或MAC地址),软件将根据这个信息计算出正确的密码。 在使用此类工具时,需要注意以下几点安全和合规性问题: 1. **隐私与安全**:确保你从可信赖的源获取并使用此类...

    Android设计思想解读开源框架.pdf

    - **资源索引**:在Android应用打包过程中,所有资源都会被赋予一个唯一的ID,用于在代码中引用。 - **资源加载**:当应用程序需要加载某个资源时,会根据资源ID找到对应的资源文件,并将其加载到内存中供应用程序...

    Android经典面试题大全.doc

    而SVN则是集中式版本控制系统,所有的数据都存储在中央服务器上,客户端只能通过网络访问服务器获取或更新代码。 2. **数据存储方式**:GIT将内容按照元数据的方式存储,使用SHA-1哈希算法确保数据的完整性和安全性...

    基于Android的智能聊天机器人的设计与实现实用文档doc.doc

    《基于Android的智能聊天机器人的设计与实现》 在当今移动互联网时代,智能聊天机器人作为人机交互的重要手段,被广泛应用于各种应用场景中,尤其是在Android平台上。本文档将详细介绍如何设计并实现一个基于...

    Android移动开发技术(慕课版)习题集题库及答案.docx

    它是Android平台上的运行时环境的一部分,负责执行应用程序的字节码文件。Dalvik虚拟机针对移动设备进行了优化,能够有效利用有限的内存资源。 #### 二、判断题解析 1. **电子邮件客户端**:电子邮件客户端不属于...

    emoji图片资源和表情unicode编码

    每个Unicode字符都有一个唯一的数字代码,称为码点。在计算机中,这些码点通常以16进制表示,例如“U+1F600”代表笑脸emoji。 在这个压缩包里,`emoji.json`文件很可能包含了emoji的Unicode码点和对应的信息,如...

    android-class-loading-runtime:博客文章“ Android动态类加载”的示例项目

    从5.0开始, ART引入了AOT(Ahead-of-Time)编译,预先编译.dex文件为机器码,提高了运行效率。 **动态类加载**是Android开发中的一个重要概念,它允许在应用程序运行时加载新的类,提供了一种灵活的扩展机制。例如...

    基于Android的智能聊天机器人的设计与实现.docx

    - 第二篇文章预计将详细介绍如何将获取到的数据整合到Android应用中,这通常涉及UI设计、事件监听、数据绑定等步骤。 - 用户输入信息可能来自EditText等组件,而聊天机器人的回复需要显示在TextView或类似的UI元素...

    coderReader

    1. 一维条形码:最常见的条形码类型,如Code 128、UPC(通用产品代码)和EAN(国际物品编码)。它们只能存储有限数量的数字和字母信息,通常用于零售商品的标识。 2. 二维条形码:如QR码(二维码)、DataMatrix和PDF...

    二维码条码扫描Demo

    Zxing(ZXing,又称为“Zebra Crossing”)是一个开放源代码的多格式一维和二维条码图像处理库,支持多种编码格式,如QR码、Aztec码、PDF417、UPC-A/E、EAN-8/13、Code 39、Code 128等。这个库包含了从图像中识别...

    百度语音识别

    这意味着文件包含了一整套的前后端源代码,用户需要先完成一个步骤,即前往百度官方平台申请注册码(APP_ID)。这个注册码是免费的,它用于唯一标识你的应用程序,并且是使用百度语音识别服务所必需的。将注册码添加...

    Apk

    4. **优化**:对于 ART(Android Runtime)环境,系统会预先编译 Dex 文件为机器代码,以提高运行效率。 5. **启动**:用户可以通过点击应用图标来启动应用,系统会找到对应的主 Activity 并运行。 **调试与反编译...

    I9000知识v

    11. **IMEI码验证**:IMEI码是手机的唯一标识,通过输入*#06#获取,然后在进行码片复位后再次检查,确保IMEI码不变且与包装盒一致。 二、翻新机的危害 购买翻新机可能会导致以下问题: - 性能不稳定,由于部件来自...

    2012年春江苏省计算机三级偏软考试真题及参考答案

    中间代码与机器语言代码在指令结构上必须一致:错误。 - **答案解析:** 正确答案是D。 **19. 存储媒体** - **选项分析:** - A. 文字、图形:这些是数据,而非存储实体。 - B. 磁盘、光盘:属于存储实体。 ...

Global site tag (gtag.js) - Google Analytics