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

.NET Maui中如何获取Android设备的序列号?

在.NET Maui中获取Android设备序列号的方案

你提到的Microsoft.Maui.Devices.DeviceInfo确实没有直接提供获取Android设备序列号的API,不过可以通过以下两种方案实现:

方案一:使用平台特定代码(推荐)

通过.NET Maui的依赖注入和平台自定义实现,直接调用Android原生API获取序列号,这是最可靠的方式。

步骤1:在共享项目定义接口

创建一个用于获取序列号的服务接口:

public interface IDeviceSerialNumberService
{
    string GetSerialNumber();
}

步骤2:在Android项目实现接口

在Android项目中添加该接口的实现,注意处理Android版本的权限限制:

using Android.OS;

[assembly: Dependency(typeof(YourAppName.Droid.Services.DeviceSerialNumberService))]
namespace YourAppName.Droid.Services
{
    public class DeviceSerialNumberService : IDeviceSerialNumberService
    {
        public string GetSerialNumber()
        {
            string serialNumber = string.Empty;

            // Android 8.0+ (API 26) 及以上版本
            if (Build.VERSION.SdkInt >= BuildVersionCodes.O)
            {
                serialNumber = Build.Serial;
            }
            // Android 7.1及以下版本
            else
            {
                serialNumber = Build.Serial;
            }

            return serialNumber;
        }
    }
}

步骤3:注册服务

在MauiProgram.cs中注册这个服务:

builder.Services.AddSingleton<IDeviceSerialNumberService>();

步骤4:处理权限

在Android项目的AndroidManifest.xml中添加权限声明:

<uses-permission android:name="android.permission.READ_PHONE_STATE" android:maxSdkVersion="28" />

注意:Android 10(API 29)及以上版本,READ_PHONE_STATE权限无法获取真实序列号,此时Build.Serial会返回固定值(如UNKNOWN),这是系统权限限制,无法绕过。

步骤5:在共享代码中调用

在需要获取序列号的地方注入服务并调用:

private readonly IDeviceSerialNumberService _serialNumberService;

public YourPage(IDeviceSerialNumberService serialNumberService)
{
    _serialNumberService = serialNumberService;
    InitializeComponent();
}

private void GetSerialBtn_Clicked(object sender, EventArgs e)
{
    string serial = _serialNumberService.GetSerialNumber();
    // 使用serial变量
}

方案二:使用兼容.NET Maui的第三方插件

原Xamarin的Xam.Plugin.DeviceInfo已更新为支持.NET Maui的版本,你可以安装Plugin.DeviceInfo.Maui NuGet包,用法和Xamarin中类似:

  1. 安装NuGet包:Install-Package Plugin.DeviceInfo.Maui
  2. 在MauiProgram.cs中初始化:
builder.UseDeviceInfo();
  1. 获取序列号:
string serial = CrossDeviceInfo.Current.SerialNumber;

注意:该插件同样受限于Android系统的权限规则,Android 10+无法获取真实序列号。

内容的提问来源于stack exchange,提问作者Ramiro Pérez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 13:16:07