美文网首页Android
Android 获取 sn 详解,以及测试报告~

Android 获取 sn 详解,以及测试报告~

作者: 蒙多喝醉了 | 来源:发表于2020-06-06 22:33 被阅读0次

    1.小结:

    1.Android 9及以上无法获取sn,Android 9以下不需要权限即可获取
    2.获取到的参数相对稳定不变
    3.不同手机参数长度可能不同
    
    补充:新增获取方法:Build.getSerial()
    1.可以获取到多数Android 9及以上手机sn
    2.sn获取值与实际值可能不符(少数)
    3.使用此方法有局限性,SDK编译版本26起步:compileSdkVersion 26
    

    2.获取参数的代码:

        /**
         * 获取SN
         * @return
         */
        public static String getSN() {
            String serial = "";
            //通过android.os获取sn号
            try {
                serial = android.os.Build.SERIAL;
                if (!serial.equals("")&&!serial.equals("unknown"))return serial;
            }catch (Exception e){
                serial="";
            }
    
            //通过反射获取sn号
            try {
                Class<?> c =Class.forName("android.os.SystemProperties");
                Method get =c.getMethod("get", String.class);
                serial = (String)get.invoke(c, "ro.serialno");
                if (!serial.equals("")&&!serial.equals("unknown"))return serial;
    
                //9.0及以上无法获取到sn,此方法为补充,能够获取到多数高版本手机 sn
                if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) serial = Build.getSerial();
            } catch (Exception e) {
                serial="";
            }
            return serial;
        }
    

    3.测试,不同手机的获取结果:

    注:这里的权限☞
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    
    华为Android7.0:
    无论是否有权限:
    sn获取:XPUDU173230257** 参数稳定
    sn获取:XPUDU173230257**
    
    vivo Android7.1:
    无论是否有权限:
    sn获取:BIEQ9TEYOFUOO7** 参数稳定
    sn获取:BIEQ9TEYOFUOO7**
    
    酷派 Android7.1:
    无论是否有权限:
    sn获取:1dabb4** 参数稳定
    sn获取:1dabb4**
    
    华为Android8.0:
    无论是否有权限:
    sn获取:SNMBB183055041** 参数稳定
    sn获取:SNMBB183055041**
    
    华为Android8.0:
    无论是否有权限:
    sn获取:68U5T184030156** 参数稳定
    sn获取:68U5T184030156**
    
    vivo 8.1
    无论是否有权限,均获取不到
    无论是否有权限:
    sn获取:KZ9DBQKBVGCIYH** 参数稳定
    sn获取:KZ9DBQKBVGCIYH**
    
    oppo 9.0
    无论是否有权限,均获取不到
    sn:unknown
    
    vivo 9.0
    无论是否有权限,均获取不到
    sn:unknown
    
    三星 9.0
    无论是否有权限,均获取不到
    sn:unknown
    
    华为Android10
    无论是否有权限,均获取不到
    sn:unknown
    
    华为Android10
    无论是否有权限,均获取不到
    sn:unknown
    

    4.尝试获取Android 9及以上版本的 sn

    • 4.1 获取方法中新增方法:
    //此方法局限性: SDK编译版本26起步: compileSdkVersion 26
        
    serial = Build.getSerial();
    
    • 4.2测试
    Log.e(TAG, "sn:"+getSN());
    
    OPPO 9.0
    无权限时:sn:
    有权限时:sn:RK55JFEQ4LM74T**
    
    vivo 9.0
    无权限时:sn:
    有权限时:sn:42858e**
    
    三星 9.0
    无权限时:sn:
    有权限时:sn:483fce** (与实际值不符,但唯一)
    
    华为Android10
    无权限时:sn:
    有权限时:sn:8UJ4C19B270175**
    
    华为Android10
    无权限时:sn:
    有权限时:sn:unknown
    

    相关文章

      网友评论

        本文标题:Android 获取 sn 详解,以及测试报告~

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