美文网首页
Android 8.0获取设备序列号解决方案

Android 8.0获取设备序列号解决方案

作者: android开发菜鸟 | 来源:发表于2019-01-22 17:40 被阅读0次

    Android8.0以下通常使用反射的方式读取SN号码

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

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

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

    Android升级到8.0之后再用此方法会一直报 Access denied finding property "ro.serialno"这个错,原因是android O为了更好的管理用户的隐私做了一些调整,比如说刚才的那个问题。并且说在Android的未来版本中,针对Android O的应用会将Build.SERIAL视为“设备序列号”,用Build.SERIAL获取了。小编在这里写了一个4.0-8.0+的设备的获取序列号的适配方法。

    /**

        * 获取手机序列号

        *

        * @return 手机序列号

        */

        @SuppressLint({"NewApi", "MissingPermission"})

        public static String getSerialNumber() {

            String serial = "";

            try {

                if (Build.VERSION.SDK_INT > Build.VERSION_CODES.N) {//8.0+

                    serial = Build.SERIAL;

                } else {//8.0-

                    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();

                LogUtils.e("e", "读取设备序列号异常:" + e.toString());

            }

            return serial;

        }

    csdn可以参考Android8.0以下通常使用反射的方式读取SN号码

    相关文章

      网友评论

          本文标题:Android 8.0获取设备序列号解决方案

          本文链接:https://www.haomeiwen.com/subject/bkdrjqtx.html