因使用定制Android系统的RFID巴枪
RFID巴枪注册,使用的是外包装的序列号,在进入APP需要本地与注册信息作校验.校验通过才允许使用APP.

1.常规获取Android设备信息.

  • 获取IMEI号

    • Android设备可以通过设置界面、拨号*#06# 进行查看
    • APP通过TelephonyManager获取对应的DeviceId.即IMEI号.
  • 获取序列号

    首先,序列号分为多种.设备序列号,SIM序列号等…

    • Android设备可以通过设置界面进行查看
    • APP通过TelephonyManager获取SimSerialNumber(CDMA设备,返回可能为"")、或者Build.SERIAL获取、或者反射调用ro.serialno获取.

//通过反射获取ro.serialnopublic static 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;}

当设备被定制过,亦或者以上获取的序列号都和外包装/设置信息里面的序列号对应不上怎么办?

2.获取常规API无法获取的Android设备信息

注意一下 第三种,通过反射获取序列号的方法.反射调用的是android.os.SystemProperties -> ro.serialno,获取serial.

那么是不是也可以通过反射获取我想要的参数呢,比如说,我这个和其他获取的序列号对应不上的"序列号".

反射调用这个类,那么必须首先要知道android.os.SystemProperties里面有哪些方法,保存着哪些值.

通过执行 adb shell getprop来进行查看…
emmm…
看看我都看到了什么?
获取Android设备常规参数信息(SN,IMEI)及定制信息_第1张图片
ro.serialno信息
获取Android设备常规参数信息(SN,IMEI)及定制信息_第2张图片
获取Android设备常规参数信息(SN,IMEI)及定制信息_第3张图片
屏幕分辨率,ro.serialno,运行内存, 这gsm-serialno有点眼熟啊,这特么不就是我需要的值么.

既然知道了,通过什么来获取对应的值,那就好办了,只需要把ro.serialno换成gsm-serialno即可,再截取一下.


3.总结

如果通过公开API获取Android设备的常用信息不能够满足需求的话,不妨adb shell prop看看你要的值对应的是哪一个,然后直接通过反射获取吧.

更多相关文章

  1. Android 蓝牙通信开发(一) 搜索蓝牙设备
  2. Android 应用程序查找设备的方法——以串口为例
  3. Android 读取系统信息
  4. Android设备一对多录屏直播--(UDP组播连接,Tcp传输)
  5. 电脑控制Android设备的软件——Total Control
  6. Android系统信息获取 之七:获取IP地址和MAC地址
  7. Android之如何获取Android设备的唯一识别码笔记
  8. 开发Android程序使用USB连接真机调试时找不到设备的解决办法
  9. 稳定获取Android设备唯一码(UUID)的解决方案

随机推荐

  1. PHP实现腾讯短网址生成api接口实例
  2. 深入理解PHP+Mysql分布式事务与解决方案
  3. 访问器属性原理与应用场景,演示获取dom元
  4. 怎么画动漫人物头发?教你画出自然的头发
  5. centos7 安装MariaDB 10.6
  6. jsp 自定义标签实例
  7. AJAX自学练习 无刷新从数据库后台取数据
  8. AJAX 自学练习 请求与显示
  9. scratch怎么绘制十个交叉重叠的圆形?
  10. Ai怎么制作多圆形嵌套效果的图形