Android 10 之隐私权限

Android 10 中的隐私权变更 https://developer.android.google.cn/about/versions/10/privacy/changes

从Android 10开始已经无法完全标识一个设备,曾经用mac地址、IMEI等设备信息标识设备的方法,从Android 10开始统统失效。而且无论你的APP是否适配过Android 10。

IMEI等设备信息

从Android10开始普通应用不再允许请求权限android.permission.READ_PHONE_STATE。而且,无论你的App是否适配过Android 10(即targetSdkVersion是否大于等于29),均无法再获取到设备IMEI等设备信息。

从 Android 10 开始,应用必须具有 READ_PRIVILEGED_PHONE_STATE 特许权限才能访问设备的不可重置标识符(包含 IMEI 和序列号)。而普通应用无法申请该权限。

受影响的API:

Build.getSerial();
TelephonyManager.getImei();
TelephonyManager.getMeid()
TelephonyManager.getDeviceId();
TelephonyManager.getSubscriberId();
TelephonyManager.getSimSerialNumber();

—— targetSdkVersion<29 的应用,其在获取设备ID时,会直接返回null
—— targetSdkVersion>=29 的应用,其在获取设备ID时,会直接抛出异常SecurityException

如果您的App希望在Android 10以下的设备中仍然获取设备IMEI等信息,可按以下方式进行适配:


Mac地址随机分配

默认情况下,在搭载 Android 10 或更高版本的设备上,系统会传输随机分配的 MAC 地址。即从Android 10开始,普通应用已经无法获取设备的真正mac地址,标识设备已经无法使用mac地址。

如何标识设备唯一性

方法1、Google解决方案
如果您的应用有追踪非登录用户的需求,可用ANDROID_ID来标识设备。

ANDROID_ID生成规则:签名+设备信息+设备用户
ANDROID_ID重置规则:设备恢复出厂设置时,ANDROID_ID将被重置

String androidId = Settings.Secure.getString(this.getContentResolver(), 
Settings.Secure.ANDROID_ID);

方法2、移动安全联盟SDK
移动安全联盟SDK http://www.msa-alliance.cn/col.jsp?id=120

移动安全联盟(Mobile Security Alliance,简称MSA)于2017年12月4日成立,由中国信息通信研究院联合终端生产企业、安全企业、高等院校、研究机构、互联网企业以及芯片企业、方案企业等产业链中各个环节的重要机构共同发起。




其他资料:
Android 设备唯一标识(多种实现方案)



(部分内容参考于网络,如有不妥,请联系删除~)

你可能感兴趣的:(Android 10 之隐私权限)