我正在尝试在Android O上获取该设备的序列号,我环顾四周并发现:
1. Build.SERIAL is deprecated so we have to use Build.getSerial();
2. ro.serialno is no more accessible: "Access denied finding property "ro.serialno""
关于第一种方法,我的问题是它需要READ_PHONE_STATE
,并且必须在运行时询问。我需要一种方法来做到这一点,而不影响用户体验任何想法如何做到这一点?
有可能吗?
答案 0 :(得分:0)
该值已弃用,未隐藏;甚至是这个,仅适用于targetSdkVersion 26
及更高版本的应用。这意味着如果你定位Android N,你仍然可以在没有运行时权限的情况下使用它。此外,如果你使用targetSdkVersion 23
或更少,你可以在没有弹出窗口的情况下请求READ_PHONE_STATE
权限。然后,当应用程序升级到目标Oreo时,系统将已获得授予此app_id的权限。
这就是说,我必须承认,在我们被迫将targetSdkVersion
推送到24
之前,我们一直担心运行时权限弹出窗口,但我们的担忧被证明是毫无根据的。我们的使用模式没有发生重大变化。
最后,我还建议不要依赖Build.SERIAL
。作为远程指纹,adid已足够;在指纹必须在udid重置后仍然存活的情况下,Build.SERIAL
确实可以为root设备或破解的APK提供保护。