当前位置: 移动技术网 > IT编程>移动开发>Android > Android应用获取设备序列号的方法

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

2019年07月24日  | 移动技术网IT编程  | 我要评论

岐山传2.0隐藏英雄,限制分级,重生之经济帝国

软硬件环境

  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应用中同样可以通过上述方法去获取相应的值。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网