技术文档2019-11-06

适配指导 | Android Q Device ID权限变更

    Android Q为加强用户的隐私保护,对系统标识符进行了限制。我们在测试中发现很多应用需要对该变更进行适配,本文将对发现的问题进行说明,以便应用开发者更好的选择适配方案。 


    变更:从 Android Q 开始,应用必须具有 READ_PRIVILEGED_PHONE_STATE 特许权限才能访问设备的不可重置标识符(包含 IMEI 和序列号)。而这个权限只可能赋予给预装在系统分区的应用,所以将影响大部分应用。

     

    影响:对依赖设备信息的业务产生影响,包括用户统计、数据分析、个性化推荐、广告等。如果应用没有READ_PRIVILEGED_PHONE_STATE 特许权限,获取Device ID将会出现以下三种情况。


    -TargetSdkVersion>=28的应用,会发生SecurityException。 

    -TargetSdkVersion<28的应用,如果获得了 READ_PHONE_STATE权限,获取Device ID将会返回null 或占位符。 

    -TargetSdkVersion<28的应用,同时没有获得 READ_PHONE_STATE权限,会发生SecurityException。


    111.jpg


    适配方案:各场景提供应对方案,比如数据分析使用UUID,广告跟踪使用Advertising ID,但这些ID用户都可以选择重置,保护了用户的隐私。

    222.png




    1.     Android ID

    当设备首次启动时,系统会随机生成一个64位的数字,并以16进制字符串的形式保存到手机系统中,当手机恢复出厂设置后,Android ID会被重置,这是Android IDDevice ID的主要区别。


    Android ID获取代码:

    Settings.System.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID);

     

    2.     UUID

    作用域是应用内部,可通过该ID进行应用的数据分析。但用户可以清除应用数据或重新安装应用进行重置,这样可以防止将不同应用的用户行为进行关联,对用户隐私进行保护。

     

    UUID创建方法:

    333.png


    3.     Advertising ID

    在不同应用中均可使用,适合广告相关的场景。但Advertising ID使用前提是Google Play服务可用,如果Google Play服务不可用,将抛出GooglePlayServicesNotAvailableException异常。

     

    Advertising ID获取代码:

    444.jpg


    参考链接:

    https://developers.google.cn/android/reference/com/google/android/gms/ads/identifier/AdvertisingIdClient



    4.     接入由移动安全联盟提供的SDK

    第三方应用可通过移动安全联盟(MSA)提供的移动智能终端补充设备标识系统统一调用SDK获取OAID(匿名设备标识符)、VAID(开发者匿名设备标识符)和AAID(应用匿名设备标识符)。该SDK根据“移动智能终端补充设备标识体系”技术要求,计划开发并发布支持多厂商的统一的补充设备标识。

    555.jpg

    注:具体内容请查看参考文档 :移动智能终端补充设备标识体系统一调用SDK开发者说明文档.pdf





    联系我们:


    如果您对Android Q适配有任何问题,可以发邮件到下面的邮箱与我们联系。

    欢迎发邮件到:rdtpservice@samsung.com

    邮件主题:三星Android Q适配





    =====================

    现三星测试平台已开放真机调试,如暂时短缺相关型号手机的开发者可以通过此平台进行真机调试。

    点击下方地址进行访问:

    http://support-cn.samsung.com/App/DeveloperChina/Static/rdtp

    感谢您的关注和参与!

    您还可关注“三星开发者”公众号查看相关开发者指引。

    666.png