文档章节

android 设备唯一码的获取,Cpu号,Mac地址

IT丶小生
 IT丶小生
发布于 2014/02/21 16:53
字数 409
阅读 410
收藏 4

0


开发Android应用中,我们常常需要设备的唯一码来确定客户端。

Android 中的几中方法,使用中常常不可靠

1. DEVICE_ID

假设我们确实需要用到真实设备的标识,可能就需要用到DEVICE_ID。通过 TelephonyManager.getDeviceId()获取,它根据不同的手机设备返回IMEI,MEID或者ESN码.


缺点:在少数的一些设备上,该实现有漏洞,会返回垃圾数据


        2. MAC ADDRESS

我们也可以通过Wifi获取MAC ADDRESS作为DEVICE ID

缺点:如果Wifi关闭的时候,硬件设备可能无法返回MAC ADDRESS.。


        3. Serial Number

android.os.Build.SERIAL直接读取

缺点:在少数的一些设备上,会返回垃圾数据

       4. ANDROID_ID

ANDROID_ID是设备第一次启动时产生和存储的64bit的一个数,

缺点:当设备被wipe后该数改变, 不适用。


android 底层是 Linux,我们还是用Linux的方法来获取:

1 cpu号:

文件在: /proc/cpuinfo

通过Adb shell 查看:

adb shell cat /proc/cpuinfo

2 mac 地址

文件路径 /sys/class/net/wlan0/address

adb shell  cat /sys/class/net/wlan0/address                               
xx:xx:xx:xx:xx:aa

这样可以获取两者的序列号, 

方法确定,剩下的就是写代码了

以Mac地址为例:

        String getMac() { 
                String macSerial = null; 
                String str = ""; 
                try { 
                        Process pp = Runtime.getRuntime().exec( 
                                        "cat /sys/class/net/wlan0/address "); 
                        InputStreamReader ir = new InputStreamReader(pp.getInputStream()); 
                        LineNumberReader input = new LineNumberReader(ir); 


                        for (; null != str;) { 
                                str = input.readLine(); 
                                if (str != null) { 
                                        macSerial = str.trim();// 去空格 
                                        break; 
                                } 
                        } 
                } catch (IOException ex) { 
                        // 赋予默认值 
                        ex.printStackTrace(); 
                } 
                return macSerial; 
        }

本文转载自:http://my.oschina.net/hpccn/blog/75357

共有 人打赏支持
IT丶小生
粉丝 0
博文 15
码字总数 0
作品 0
昌平
私信 提问
android 设备唯一码的获取,Cpu号,Mac地址

开发Android应用中,我们常常需要设备的唯一码来确定客户端。 Android 中的几中方法,使用中常常不可靠 DEVICE_ID 假设我们确实需要用到真实设备的标识,可能就需要用到DEVICE_ID。通过 Tele...

韩工
2012/08/29
0
0
移动设备(手机)的唯一ID有哪些

在移动广告领域,设备的ID 是用来追踪一个人的最重要的标识。 对于APP自身产品而言,使用设备唯一ID可以追踪到用户从下载到激活、注册、使用、流失、回归的全流程数据,对产品运营工作非常有...

IVAN_jsjwk
2018/05/29
0
0
android如何获取设备的唯一设备码

在某些项目中,需要记录用户的某些设置,或行为,并上传到服务器,如果无需用户登录注册,就可记录独立这些内容,就需要用到设备的某些独立的序列。(以下部分android需要API8以以上,andro...

卐字旗下的余晖
2013/12/18
0
0
不需要任何权限获得Android设备的唯一ID

Is there a unique Android device ID? Android设备有没有唯一的id?如果有的话,我怎么通过java代码获得这个id? 我读了stack OverStack上每一个答案,谷歌的开发者博客和Android文档,我认...

TCTW
2017/10/25
0
0
android手机获取手机唯一识别号

一些特殊的代码,对于手机还是挺有用的 显示IMEI: #06# 开启语音拨号记录 ##8351## 关闭语音拨号记录 ##8350## 手机信息/设置 ##4636## 现场测试 ##7262626## PUK解锁 (从紧急拨号界面) 05<...

xiahuawuyu
2012/10/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Vue.js开发环境搭建说明(mac)

vue开发环境搭建(mac) 投影放大:cmd + + 安装Node 下载Node 官网下载 https://nodejs.org/en/download/ 安装Node 双击安装包,选择安装目录,比如: /usr/local/bin 安装成功后最好记录一...

Danni3
22分钟前
2
0
Qt编写自定义控件3-速度仪表盘

前言 速度仪表盘,写作之初的本意是用来展示当前测试的网速用的,三色圆环+数码管显示当前速度,Qt自带了数码管控件QLCDNumber,直接集成即可,同时还带有动画功能,其实也可以用在汽车+工业...

飞扬青云
27分钟前
1
0
【论文阅读】Image Super-Resolution via Deep Recursive Residual Network

题目:通过深度递归残差网络实现图像的超分辨率 摘要: 近年来,基于卷积神经网络的模型在单张图像的超分辨率上已经取得了巨大的成功。由于深度网络的强大,这些CNN模型学习了从低分辨率输入...

云烟成雨forever
29分钟前
2
0
为什么强烈建议大家使用枚举来实现单例

关于单例模式,我的博客中有很多文章介绍过。作为23种设计模式中最为常用的设计模式,单例模式并没有想象的那么简单。因为在设计单例的时候要考虑很多问题,比如线程安全问题、序列化对单例的...

群星纪元
48分钟前
11
0
Confluence 6 超过当前许可证期限进行升级

这个页面将会对你在进行 Confluence 升级的时候超过了当前许可证的期限进行升级的情况。 许可证警告 在升级的过程中,你将会在 Confluence 的应用程序日志(log file)中看到类似下面的错误提...

honeymoose
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部