带工作配置文件的托管设备:如何获得读取特权设备标识符的权限
Android 工作配置文件场景下读取特权设备标识符的解决方案
核心前提
你的MDM应用必须是工作配置文件的Profile Owner,这是获取特权标识符权限的基础,需通过EMM标准注册流程完成配置。
具体实现步骤
声明特权权限:在应用的
AndroidManifest.xml中添加以下权限声明:<uses-permission android:name="android.permission.READ_PRIVILEGED_PHONE_STATE" />该权限属于系统特权权限,普通应用无法获取,但作为Profile Owner的MDM应用会被系统自动授予,无需用户手动授权。
调用DevicePolicyManager专属API:通过
DevicePolicyManager提供的方法直接获取所需标识符:- 获取IMEI/MEID(适用于Android 11+):
DevicePolicyManager dpm = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE); String imei = dpm.getImei(0); // 0代表第一个SIM卡槽,多卡槽设备可调整索引 - 获取设备序列号(适用于Android 11+):
DevicePolicyManager dpm = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE); String serialNumber = dpm.getSerialNumber();
- 获取IMEI/MEID(适用于Android 11+):
注意事项
- 仅Profile Owner身份的MDM应用可调用上述API,工作配置文件中的普通应用无法访问这些特权标识符。
- Android 12及以上版本中,部分旧API(如
getDeviceId())已被弃用,建议使用getImei()等针对性方法。 - 确保你的EMM注册流程正确完成Profile Owner的配置,否则系统不会授予对应的特权权限。
内容的提问来源于stack exchange,提问作者Claudio de Souza
相关产品推荐
相关产品推荐

