MAUI怎么获取设备信息 MAUI DeviceInfo使用方法

发布时间 - 2026-01-28 00:00:00    点击率:
在 .NET MAUI 中通过 Microsoft.Maui.ApplicationModel.DeviceInfo 类可跨平台获取设备信息,支持 Platform、Idiom、Manufacturer、Model、VersionString 和 Name(iOS 16+ 需配置 entitlement)等属性,并建议结合 Idiom 与屏幕指标进行响应式适配。

在 .NET MAUI 中获取设备信息,主要通过 Microsoft.Maui.ApplicationModel.DeviceInfo 类实现,无需第三方库或平台特定代码,开箱即用。

基础设备信息获取

DeviceInfo 提供跨平台的只读属性,涵盖系统、设备和运行环境的关键标识:

  • DeviceInfo.Platform:返回 Platforms.iOSPlatforms.AndroidPlatforms.WinUIPlatforms.MacCatalyst,用于条件逻辑分支
  • DeviceInfo.Idiom:识别设备形态,如 DeviceIdiom.PhoneDeviceIdiom.TabletDeviceIdiom.Desktop,适配 UI 布局很实用
  • DeviceInfo.ManufacturerDeviceInfo.Model:返回厂商名(如 "Samsung")与型号(如 "SM-S918B"),注意 Android 上可能被厂商定制覆盖
  • DeviceInfo.VersionString:系统版本号字符串(如 "17.6.1" 或 "14"),比 DeviceInfo.Version(Version 对象)更易读

iOS 用户自定义设备名支持

从 iOS 16 起,若需获取用户在「设置 → 通用 → 关于本机 → 名称」中设置的设备名(而非默认的 "iPhone" 或 "iPad"),需额外配置:

  • Entitlements.plist 中启用 com.apple.developer.device-information.user-assigned-device-name 权限
  • 调用 DeviceInfo.Name 属性才返回用户设置的名称;否则仍返回系统默认名
  • 该权限仅影响 iOS,Android 和其他平台直接返回设备名(如 Manufacturer + Model 组合)

屏幕与方向辅助判断

DeviceInfo 本身不提供屏幕尺寸或方向,但可配合其他 API 构建完整设备画像:

  • DeviceInfo.Idiom 判断是手机还是平板,再结合 WindowSizeDisplayInfo.Current.Width 做精细适配
  • 监听 DisplayInfo.MainDisplayInfoChanged 事件响应横竖屏切换
  • 避免依赖 DeviceInfo.Platform == Platforms.Android 做所有判断,应优先用 Idiom 和实际屏幕指标,更符合响应式设计原则

注意事项与常见问题

部分属性在模拟器/*器中返回值受限或不准确:

  • Android 模拟器常返回 "Google" 和 "sdk_gphone64_x86_64",不代表真实设备
  • iOS 模拟器的 Devi

    ceInfo.Name
    默认为 "iPhone Simulator",即使配置了 entitlement 也不生效
  • 真机调试时,DeviceInfo.Idiom 在折叠屏设备上可能返回 PhoneTablet,取决于当前展开状态,建议搭配 FoldableInfo 使用

基本上就这些。用好 DeviceInfo 的核心是区分“平台类型”和“设备形态”,别把 Platform 当成 UI 适配唯一依据。


# android  # go  # windows  # app  # iphone  # ipad  # 平板  # mac  # ai  # ios  # win  # apple  # 字符串  # 对象  # 事件  # microsoft  # ui  # 也不  # 运行环境  # 不代表  # 自定义  # 而非  # 第三方  # 本机  # 即用  # 别把  # 用好 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何快速搭建二级域名独立网站?  韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐  Laravel怎么上传文件_Laravel图片上传及存储配置  Laravel如何使用Seeder填充数据_Laravel模型工厂Factory批量生成测试数据【方法】  Laravel PHP版本要求一览_Laravel各版本环境要求对照  教你用AI将一段旋律扩展成一首完整的曲子  小米17系列还有一款新机?主打6.9英寸大直屏和旗舰级影像  实例解析Array和String方法  成都网站制作公司哪家好,四川省职工服务网是做什么用?  ,交易猫的商品怎么发布到网站上去?  香港服务器如何优化才能显著提升网站加载速度?  Linux系统运维自动化项目教程_Ansible批量管理实战  javascript基本数据类型及类型检测常用方法小结  浅析上传头像示例及其注意事项  香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化  Laravel怎么导出Excel文件_Laravel Excel插件使用教程  PHP正则匹配日期和时间(时间戳转换)的实例代码  如何在Windows环境下新建FTP站点并设置权限?  Laravel如何实现用户注册和登录?(Auth脚手架指南)  Laravel Eloquent:优雅地将关联模型字段扁平化到主模型中  如何确保西部建站助手FTP传输的安全性?  如何获取上海专业网站定制建站电话?  Laravel如何设置定时任务(Cron Job)_Laravel调度器与任务计划配置  如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?  详解jQuery停止动画——stop()方法的使用  高性价比服务器租赁——企业级配置与24小时运维服务  微信h5制作网站有哪些,免费微信H5页面制作工具?  大同网页,大同瑞慈医院官网?  HTML5段落标签p和br怎么选_文本排版常用标签对比【解答】  如何在HTML表单中获取用户输入并结合JavaScript动态控制复利计算循环  如何快速选择适合个人网站的云服务器配置?  如何用腾讯建站主机快速创建免费网站?  Laravel如何操作JSON类型的数据库字段?(Eloquent示例)  香港服务器租用每月最低只需15元?  Laravel如何连接多个数据库_Laravel多数据库连接配置与切换教程  Laravel如何处理CORS跨域请求?(配置示例)  谷歌浏览器下载文件时中断怎么办 Google Chrome下载管理修复  微信公众帐号开发教程之图文消息全攻略  Laravel中DTO是什么概念_在Laravel项目中使用数据传输对象(DTO)  Win11怎样安装网易有道词典_Win11安装词典教程【步骤】  如何彻底卸载建站之星软件?  怎样使用JSON进行数据交换_它有什么限制  EditPlus中的正则表达式 实战(4)  nginx修改上传文件大小限制的方法  如何撰写建站申请书?关键要点有哪些?  Laravel Admin后台管理框架推荐_Laravel快速开发后台工具  如何快速辨别茅台真假?关键步骤解析  Laravel如何保护应用免受CSRF攻击?(原理和示例)  如何自定义建站之星模板颜色并下载新样式?  如何在 Go 中优雅地映射具有动态字段的 JSON 对象到结构体