适配指导 | 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。
适配方案:各场景提供应对方案,比如数据分析使用UUID,广告跟踪使用Advertising ID,但这些ID用户都可以选择重置,保护了用户的隐私。
1. Android ID:
当设备首次启动时,系统会随机生成一个64位的数字,并以16进制字符串的形式保存到手机系统中,当手机恢复出厂设置后,Android ID会被重置,这是Android ID与Device ID的主要区别。
Android ID获取代码:
Settings.System.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID);
2. UUID:
作用域是应用内部,可通过该ID进行应用的数据分析。但用户可以清除应用数据或重新安装应用进行重置,这样可以防止将不同应用的用户行为进行关联,对用户隐私进行保护。
UUID创建方法:
3. Advertising ID:
在不同应用中均可使用,适合广告相关的场景。但Advertising ID使用前提是Google Play服务可用,如果Google Play服务不可用,将抛出GooglePlayServicesNotAvailableException异常。
Advertising ID获取代码:
参考链接:
https://developers.google.cn/android/reference/com/google/android/gms/ads/identifier/AdvertisingIdClient
4. 接入由移动安全联盟提供的SDK:
第三方应用可通过移动安全联盟(MSA)提供的移动智能终端补充设备标识系统统一调用SDK获取OAID(匿名设备标识符)、VAID(开发者匿名设备标识符)和AAID(应用匿名设备标识符)。该SDK根据“移动智能终端补充设备标识体系”技术要求,计划开发并发布支持多厂商的统一的补充设备标识。
注:具体内容请查看参考文档 :移动智能终端补充设备标识体系统一调用SDK开发者说明文档.pdf
联系我们:
如果您对Android Q适配有任何问题,可以发邮件到下面的邮箱与我们联系。
欢迎发邮件到:rdtpservice@samsung.com
邮件主题:三星Android Q适配
=====================
现三星测试平台已开放真机调试,如暂时短缺相关型号手机的开发者可以通过此平台进行真机调试。
点击下方地址进行访问:
http://support-cn.samsung.com/App/DeveloperChina/Static/rdtp
感谢您的关注和参与!
您还可关注“三星开发者”公众号查看相关开发者指引。