首页
社区
课程
招聘
[求助]Android 8上面获取手机的序列号
发表于: 2018-9-13 15:52 5104

[求助]Android 8上面获取手机的序列号

2018-9-13 15:52
5104
把Android8系统的手机使用adb工具输入:adb shell getprop ro.serialno的命令可以得到正确的序列号。但是c代码中使用__system_property_get来获取ro.serialno属性在
Android8上一直失败,这个函数可以用在Android4.4~7.0上。
请教一下,有谁知道如何在Android8上获取手机的序列号吗?

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 4
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
Build.SERIAL不行吗?
2018-9-13 15:57
0
雪    币: 4
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
 @RequiresPermission(Manifest.permission.READ_PHONE_STATE)
    public static String getSerial() {
        IDeviceIdentifiersPolicyService service = IDeviceIdentifiersPolicyService.Stub
                .asInterface(ServiceManager.getService(Context.DEVICE_IDENTIFIERS_SERVICE));
        try {
            return service.getSerial();
        } catch (RemoteException e) {
            e.rethrowFromSystemServer();
        }
        return UNKNOWN;
    }
2018-9-13 16:01
0
雪    币: 53
活跃值: (106)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
 需要read_phone权限
2018-9-13 17:10
0
雪    币: 11
活跃值: (10)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
5
XtraLove Build.SERIAL不行吗?
XtraLove,你好。要有READ_PHONE_STATE的权限,申请权限后直接用java的代码  String serialNum = android.os.Build.SERIAL;就可以获取到的。我想问的是C代码。因为这部分读取序列号的操作在.so中完成,用了NDK中函数__system_property_get("ro.serialno",serialID),这个函数一直获取不到数据,用这个函数可以获取到其他属性的数据,比如"ro.build.version.sdk"等,就是独独获取不到"ro.serialno",很奇怪。
2018-9-13 17:18
0
雪    币: 11
活跃值: (10)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
6
自问自答,java代码能访问的话,直接在c中GetStaticObjectField访问静态域就可以了,现成的函数__system_property_get不可以就不用了
    jstring jserial = (jstring)env->GetStaticObjectField(env->FindClass("android/os/Build"),
                                        env->GetStaticFieldID( env->FindClass("android/os/Build"),
                                                               "SERIAL", "Ljava/lang/String;"));
2018-9-13 17:59
0
雪    币: 781
活跃值: (63)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
会不会是ro.serialno这地路径的问题
2018-9-15 17:01
0
游客
登录 | 注册 方可回帖
返回
//