原文:Windows Phone:如何检查WMAppManifest中的Capability属性

在Windows Phone应用中有一个应用程序清单(WMAppManifest.xml),其中对于不同的应用可以设定Capability来告知需要哪些特性或功能,详细内容可以参考官方文档: http://msdn.microsoft.com/zh-CN/library/windowsphone/develop/jj206936(v=vs.105).aspx

比如说,开发一个不需要麦克风的应用,就不需要ID_CAP_MICROPHONE标记,一般来说也都清理得差不多,但又有时候需要检查,比如我们在写一个触发震动的操作类库时候碰巧需要判定ID_CAP_SENSORS时该怎么办呢,微软没有提供相应的检查接口,所以只好自己来解决。

下面是针对于WP7的检查,WP8上也通用,只不过需要检查WP8自己特殊Capability,需要自己加一些代码。

/// <summary>
/// For Windows Phone 7
/// </summary>
static class CapabilityHelper
{private const string WMAppManifest = "WMAppManifest.xml";private const string ID_CAP_CONTACTS = "ID_CAP_CONTACTS";  private const string ID_CAP_NETWORKING = "ID_CAP_NETWORKING";  private const string ID_CAP_IDENTITY_DEVICE = "ID_CAP_IDENTITY_DEVICE";  private const string ID_CAP_IDENTITY_USER = "ID_CAP_IDENTITY_USER";  private const string ID_CAP_LOCATION = "ID_CAP_LOCATION";  private const string ID_CAP_SENSORS = "ID_CAP_SENSORS";  private const string ID_CAP_MICROPHONE = "ID_CAP_MICROPHONE";  private const string ID_CAP_MEDIALIB = "ID_CAP_MEDIALIB";  private const string ID_CAP_GAMERSERVICES = "ID_CAP_GAMERSERVICES";  private const string ID_CAP_PHONEDIALER = "ID_CAP_PHONEDIALER";  private const string ID_CAP_PUSH_NOTIFICATION = "ID_CAP_PUSH_NOTIFICATION";  private const string ID_CAP_WEBBROWSERCOMPONENT = "ID_CAP_WEBBROWSERCOMPONENT";  private const string CAPABILITIES = "Capabilities";  private const string NAME = "Name";  static CapabilityHelper()  {try{Check();}catch(Exception ex){Console.WriteLine(ex.ToString());}}static void Check(){using (var xmlreader = XmlReader.Create(WMAppManifest)){while (xmlreader.Read()){switch (xmlreader.NodeType){case XmlNodeType.Element:if (xmlreader.Name == "Capability"){var value = xmlreader.GetAttribute(NAME);switch (value){case ID_CAP_NETWORKING:IsNetworkingCapability = true;break;case ID_CAP_IDENTITY_DEVICE:IsDeviceIdentityCapability = true;break;case ID_CAP_IDENTITY_USER:IsUserIdentityCapability = true;break;case ID_CAP_LOCATION:IsLocationCapability = true;break;case ID_CAP_SENSORS:IsSensorsCapability = true;break;case ID_CAP_MICROPHONE:IsMicrophoneCapability = true;break;case ID_CAP_MEDIALIB:IsMediaLibCapability = true;break;case ID_CAP_GAMERSERVICES:IsGamerServicesCapability = true;break;case ID_CAP_PHONEDIALER:IsPhoneDialerCapability = true;break;case ID_CAP_PUSH_NOTIFICATION:IsPushNotificationCapability = true;break;case ID_CAP_WEBBROWSERCOMPONENT:IsWebBrowserComponentCapability = true;break;case ID_CAP_CONTACTS:IsContactsCapability = true;break;default:break;}}break;default:break;}} }  }public static bool IsNetworkingCapability { get;private set; }public static bool IsDeviceIdentityCapability { get; private set; }public static bool IsUserIdentityCapability { get; private set; }public static bool IsLocationCapability { get; private set; }public static bool IsSensorsCapability { get; private set; }public static bool IsMicrophoneCapability { get; private set; }public static bool IsMediaLibCapability { get; private set; }public static bool IsGamerServicesCapability { get; private set; }public static bool IsPhoneDialerCapability { get; private set; }public static bool IsPushNotificationCapability { get; private set; }public static bool IsWebBrowserComponentCapability { get; private set; }public static bool IsContactsCapability { get; private set; }
}

希望能够给一些朋友带来帮助。

Windows Phone:如何检查WMAppManifest中的Capability属性相关推荐

  1. 【Unity3D】材质 Material ( 材质简介 | 创建材质 | 设置材质属性 | 对 3D 物体应用材质 | 资源拖动到 Inspector 检查器中的 Material 属性中 )

    文章目录 一.材质 Material 简介 二.创建材质 三.设置材质属性 四.对 3D 物体应用材质 五.资源拖动到 Inspector 检查器中的 Material 属性中 一.材质 Materi ...

  2. 活动目录实战之一 windows 2008 r2 安装域中第一台域控制器

    windows 2008R2已经出来很长时间了,想写一下关于活动目录的一些知识.例如:我们应该如何安装域内第一台域控制器呢,找了很多文章,觉得胖哥这篇文章写的非常好,图文并茂,并且把原理讲的也非常清楚 ...

  3. Robocopy是微软Windows Server 2003资源工具包中众多多用途的实用程序之一(它是基于强大的拷贝程序...

    Robocopy是微软Windows Server 2003资源工具包中众多多用途的实用程序之一(它是基于强大的拷贝程序).没错,Robocopy的功能是拷贝文件,你也许会觉得无聊并且要翻阅下一篇文章 ...

  4. php 是否包含 大写,PHP检查字符串中是否包含大写字符

    PHP检查字符串中是否包含大写字符,也就是判断指定字符串中是否全为小写.我们可以通过for循环以及strlen().ord()函数来实现. 下面我们就结合具体的代码示例,给大家介绍PHP检查字符串中是 ...

  5. 如何添加地图控件到Windows Phone 8的页面中

    原文 如何添加地图控件到Windows Phone 8的页面中 本主题介绍了各种方法来添加一个地图控件到Windows Phone 8的项目.该地图控件在Windows Phone的SDK 8.0的库 ...

  6. Windows 或 Windows 服务器上的 hyper-v 中升级虚拟机版本

    适用于: Windows server 2022.Windows 10 Windows server 2019,Windows Server 2016 通过升级配置版本,使最新的 Hyper-v 功能 ...

  7. C# 隐藏 Windows Phone 侦错模式中萤幕右上角的数据条(模拟器、实机可用),截图好方便。...

    原文:C# 隐藏 Windows Phone 侦错模式中萤幕右上角的数据条(模拟器.实机可用),截图好方便. 一般我们在开发Windows Phone App时,会使用模拟器或是实体的手机开发,在Vi ...

  8. 计算机已从异常中恢复,win7经常遇到windows已从异常关机中恢复的解法

    win7操作系统 的用户经常会遇到这样的提示"windows已从异常关机中恢复,windows可以线上检查是否有问题的解决方案"怎么回事呢?这是由于操作系统的自我保护机制所决定的. ...

  9. 阻止的计算机代码是什么意思,“阻止Windows准确地检查此计算机的许可证。错误代码:0x.....”是怎么回事?...

    一般有二种情况会出现如下提示: (1)登陆时,提示一个问题阻止windows正确检查此机器的许可证 错误代码为:0x80070002 解决方法:进入安全模式,在安装光盘里找到oembios.bi_和e ...

最新文章

  1. 故障发生前为什么敏捷团队的成功?
  2. Linux宝塔面板介绍 Centos安装宝塔面板教程
  3. kubernetes-Pod结构
  4. mongodb 搜索速度_MongoDB数据库查询性能提高40倍的经历分享
  5. 【VBS】网页脚本的放置位置与载入时机
  6. OllyDbg笔记-异常忽略相关设置
  7. 【gRPC基础知识】快速部署
  8. 20款超酷的404错误页面(上)
  9. 贪心算法详解(C++)
  10. 使用JAVA文件上传的几种方式
  11. 今年-计划写一本java方面的书籍-初稿正式完成
  12. win10 安装mysql 卡死_win10安装Mysql5.5卡住假死
  13. 选择与循环:剪刀石头布_剪刀石头布十大奢侈家具,创造高端精致生活就是这么简单!...
  14. QT常用函数和总结(持续更新)
  15. 波士顿法律第一至五季/全集Boston Legal迅雷下载
  16. 2022世界杯看球指南
  17. 本周最新文献速递20220508
  18. Android开发已经到了要烧香求职的地步了?
  19. NVIDIA下载问题
  20. SAP 教程之 05 如何创建 IDOC 基本类型文档?

热门文章

  1. OpenCV_颜色直方图的计算、显示、处理、对比及反向投影
  2. Iphone是革了传统互联网的命
  3. mac mtu测试_一个关于MTU的现象,请兄弟们看看是不是确实是这样。 - 网络管理论坛 - 51CTO技术论坛_中国领先的IT技术社区...
  4. 系统策略禁止安装python_Win10系统如何禁止自动安装捆绑软件?
  5. python源码学习_【Python学习】Python源码阅读(一)
  6. python django flask_Flask 与 Django 的简单对比
  7. 识别哈希算法类型hash-identifier
  8. Xamarin iOS开发实战中册 (内部资料)C#苹果应用开发
  9. 测试页打印失败0x0000045a_激光打印机就该选这样的,联想领像L100DW评测
  10. 使用非侵入性脑机接口和计算机视觉引导对机器人手臂进行共享控制