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

如何获取Android设备的IMEI 1与IMEI 2?求ADB或C#库可行方案

通过ADB或C#库获取Android设备的IMEI 1与IMEI 2

ADB命令方案

双SIM设备的IMEI读取依赖系统版本、权限及厂商限制,尤其是Android 10+隐私权限收紧后,部分设备会限制非系统场景读取IMEI2。以下是可行的命令尝试:

基础读取命令

  • 读取所有可用IMEI(返回十六进制,需转十进制):
    adb shell service call iphonesubinfo 1
    注:若要读取IMEI2,可将命令中的1改为2,部分设备支持此参数。
  • Android 8.0+直接查看设备信息:
    adb shell dumpsys iphonesubinfo
    部分设备会直接列出Device ID 1和Device ID 2,对应IMEI1与IMEI2。

权限与限制说明

  • 确保设备已开启USB调试并授权当前电脑的调试权限。
  • Android 10及以上,普通ADB权限可能无法读取IMEI2,需尝试root后的ADB shell(adb root),但root会失去设备保修且存在安全风险。
  • 部分厂商(如华为、小米)的隐私策略会直接限制ADB读取IMEI2,此类场景无法通过常规命令绕过。

C#库方案

1. 跨平台调用ADB命令

在C#中直接执行ADB命令并解析输出,适用于桌面端或跨平台场景:

using System.Diagnostics;
using System.Text.RegularExpressions;

public static string GetDeviceIMEI(int simSlot = 1)
{
    var processStartInfo = new ProcessStartInfo
    {
        FileName = "adb",
        Arguments = simSlot == 1 ? "shell service call iphonesubinfo 1" : "shell service call iphonesubinfo 2",
        RedirectStandardOutput = true,
        UseShellExecute = false,
        CreateNoWindow = true
    };

    using var process = Process.Start(processStartInfo);
    if (process == null) return null;

    string output = process.StandardOutput.ReadToEnd();
    process.WaitForExit();

    // 提取十六进制内容并转换为十进制IMEI
    var hexMatch = Regex.Match(output, @"(\d+)");
    return hexMatch.Success ? Convert.ToInt64(hexMatch.Groups[1].Value, 16).ToString() : null;
}

注:需确保ADB路径已加入系统环境变量,或在代码中指定ADB的绝对路径。

2. Android应用内读取(Xamarin/.NET MAUI)

若开发Android应用,可直接调用Android原生API:

using Android.Telephony;
using Android.Content;
using Android.OS;

public static string GetIMEIBySlot(Context context, int slotIndex)
{
    var telephonyManager = (TelephonyManager)context.GetSystemService(Context.TelephonyService);
    if (telephonyManager == null) return null;

    if (Build.VERSION.SdkInt >= BuildVersionCodes.O)
    {
        return telephonyManager.GetImei(slotIndex);
    }
    else
    {
        // 旧版本系统仅支持读取默认SIM的IMEI
        return telephonyManager.Imei;
    }
}

注意:

  • 需在AndroidManifest.xml中添加权限:<uses-permission android:name="android.permission.READ_PHONE_STATE" />。
  • Android 10及以上,非系统应用无法获取IMEI,仅系统签名应用或root设备可读取。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 01:00:01