Android应用获取设备序列号的方法

作者:djstavaV 时间:2021-07-17 00:55:31 

软硬件环境

  1. Macbook Pro MGX 72

  2. Android studio 2.1.2

  3. Android 5.1.1

前言

上一篇介绍了如何获取ethernet的MAC地址,对于厂商来讲,除了MAC号,还有一项数据也很重要,那就是机器序列号,它是机器出厂时确定的,也是主要标识,每台机器都不一样。

要想获取到序列号,必须要先知道序列号从哪里来,写到了哪里。一般情况下,序列号都是厂商自己定义的一串字串,字串中的某几位会有不同含义,比如厂商的ID、出厂时间、机器类型等,另外,运营商定义的序列号几乎也是遵循这样的规律。

出厂时序列号的烧录

这个是烧录程序做的事情。首先,需要设计好flashmap,一般来讲,会拿出一块独立的分区用来存储这些固化信息,这些信息一经烧录,就不会去改变。Android镜像中的boot.img、system.img、userdata.img等等也是存放在这样的分区中。Android系统的烧录,一般会采用fastboot去做,简单、方便、快捷。

uboot获取序列号

序列号写入到了flash后,uboot就有办法获取到,然后uboot就可以将其以(key,value)的形式传递给kernel,当然传给kernel的参数并非只有序列号,所以如果你需要传一些自定义的数据,同样也可以通过这种方法去实现。在Android中,传递的是androidboot.ro.serialno。

android app中获取序列号

综上所述,在App中去获取序列号,实际上就是去获取android ro属性中的某个值,明白了这点,事情就好办了。看下面的代码实现


private String getSerialNumber(){

String serial = null;

try {

Class<?> c =Class.forName("android.os.SystemProperties");

Method get =c.getMethod("get", String.class);

serial = (String)get.invoke(c, "ro.serialno");

} catch (Exception e) {

e.printStackTrace();

}

return serial;

}

一点扩展

android中的init.hardware.rc,其中(hardware)是各芯片厂商自己的标识。在这个文件中,可以通过setprop命令设置一些系统属性信息,比如mac、厂商id等,然后在android应用中同样可以通过上述方法去获取相应的值。

来源:http://blog.csdn.net/djstavav/article/details/52047796

标签:Android,设备,序列号
0
投稿

猜你喜欢

  • spring boot 集成 shiro 自定义密码验证 自定义freemarker标签根据权限渲染不同页面(推荐

    2023-07-28 17:39:16
  • Android 自定义TextView实现文本内容自动调整字体大小

    2023-11-07 11:47:40
  • C#实现功能强大的中国农历日历操作类

    2023-06-05 04:13:59
  • idea中Maven镜像源详细配置步骤记录(对所有项目)

    2022-12-17 14:27:56
  • Java利用栈实现简易计算器功能

    2022-05-08 16:57:25
  • Android仿腾讯视频实现悬浮窗效果

    2021-06-16 00:49:23
  • Java 给PDF签名时添加可信时间戳的方法

    2022-04-03 12:38:48
  • 一篇文章带你了解JVM垃圾回收

    2023-08-06 23:42:20
  • 详解Android WebView监听console错误信息

    2021-08-29 18:20:40
  • springboot ErrorPageFilter的实际应用详解

    2023-11-24 01:02:59
  • c# 调用Surfer软件,添加引用的具体操作方法

    2023-12-06 17:05:37
  • C# 并行和多线程编程——认识和使用Task

    2022-03-28 05:48:04
  • Java设计模式之备忘录模式

    2023-08-24 06:17:05
  • IKAnalyzer结合Lucene实现中文分词(示例讲解)

    2022-10-13 03:24:44
  • C#中登录窗体和欢迎窗体关闭方法分析

    2023-03-23 03:58:25
  • MVVM简化的Messager类实例代码

    2023-12-23 07:37:50
  • Java注解与反射原理说明

    2021-06-18 01:56:00
  • Java ynchronized重量级锁的核心原理详解

    2022-06-22 17:24:30
  • Java Ehcache缓存框架入门级使用实例

    2022-08-23 20:51:54
  • C#从DataTable获取数据的方法

    2022-09-16 03:20:59
  • asp之家 软件编程 m.aspxhome.com