You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Knox/Intune管理企业设备的IMEI程序化获取方案咨询

企业自有设备(Knox/Intune管理)获取IMEI的可行方案

一、三星Knox管理设备的专属方案

Knox SDK提供了企业级设备信息获取能力,不受普通Android权限限制:

  • 集成Knox SDK(推荐4.0及以上版本),在项目中引入对应依赖
  • 在Knox Manage控制台中,为应用配置Knox权限:启用com.samsung.android.knox.permission.KNOX_DEVICE_ADMIN和com.samsung.android.knox.permission.READ_DEVICE_INFO
  • 代码实现示例:
import com.samsung.android.knox.KnoxEnterpriseDeviceManager;
import com.samsung.android.knox.device.DeviceInfo;

// 初始化Knox管理器
KnoxEnterpriseDeviceManager kedm = KnoxEnterpriseDeviceManager.getInstance(context);
if (kedm != null && kedm.isKnoxEnabled()) {
    DeviceInfo deviceInfo = kedm.getDeviceInfo();
    String imei = deviceInfo.getImei();
    // 后续业务逻辑处理
}

二、Intune管理设备的权限配置与代码实现

Intune管理的企业设备,可通过MDM策略直接授予READ_PRIVILEGED_PHONE_STATE权限,步骤如下:

  1. 登录Intune控制台,找到目标应用进入应用权限配置页面
  2. 添加Android权限:选择READ_PRIVILEGED_PHONE_STATE并设置为「允许」,保存策略后等待设备同步
  3. 权限生效后,通过原生TelephonyManager获取IMEI:
import android.content.Context;
import android.telephony.TelephonyManager;
import android.os.Build;

public String getDeviceIMEI(Context context) {
    TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
    String imei = null;
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        imei = tm.getImei();
    } else {
        imei = tm.getDeviceId();
    }
    return imei;
}

注意:必须将应用标记为「企业自有应用」,公共应用无法申请此类特权权限。

三、核心注意事项

  • 仅企业自有且完成MDM注册的设备可获取IMEI,个人设备无权限支持
  • 禁止通过反射或其他绕过权限的方式获取IMEI,会违反Android安全规范且会被MDM拦截
  • 同时适配两种管理环境时,可先检测设备是否启用Knox,再选择对应获取逻辑

内容的提问来源于stack exchange,提问作者jcss

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 21:07:03