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属性的更多相关文章
- Swift中的类型属性(静态变量)
http://blog.haohtml.com/archives/15098 Swift中的类型属性(静态变量) Posted on 2014/06/13 类型属性语法 在 C 或 Objective ...
- Robocopy是微软Windows Server 2003资源工具包中众多多用途的实用程序之一(它是基于强大的拷贝程序
Robocopy是微软Windows Server 2003资源工具包中众多多用途的实用程序之一(它是基于强大的拷贝程序).没错,Robocopy的功能是拷贝文件,你也许会觉得无聊并且要翻阅下一篇文章 ...
- 如何添加地图控件到Windows Phone 8的页面中
原文 如何添加地图控件到Windows Phone 8的页面中 本主题介绍了各种方法来添加一个地图控件到Windows Phone 8的项目.该地图控件在Windows Phone的SDK 8.0的库 ...
- C# 隐藏 Windows Phone 侦错模式中萤幕右上角的数据条(模拟器、实机可用),截图好方便。
原文:C# 隐藏 Windows Phone 侦错模式中萤幕右上角的数据条(模拟器.实机可用),截图好方便. 一般我们在开发Windows Phone App时,会使用模拟器或是实体的手机开发,在Vi ...
- windows server 2008 R2域中的DC部署 分类: AD域 Windows服务 2015-06-06 21:09 68人阅读 评论(0) 收藏
整个晚上脑子都有点呆滞,想起申请注册好的博客还从来都不曾打理,上来添添生机.从哪里讲起呢,去年有那么一段时间整个人就陷在域里拔不出来,于是整理了一些文档,害怕自己糊里糊涂的脑子将这些东西会在一觉醒来全 ...
- 结合windows消息系统理解C#中WndProc函数和DefWndProc函数
Windows消息系统由3部分组成: 1.消息队列.Windows应用程序的消息是由Windows统一在一个消息队列中管理的. 2.消息循环.应用程序从Windows消息队列中获得自己 ...
- 强势解决:windows 不能在本地计算机中起动Tomcat参考特定错误代码1
Tomcat添加系统服务:service.bat install 启动本服务的时候却提示“windows 不能在本地计算机中起动 Apache Tomcat参考特定错误代码1,若不是Microsoft ...
- 《Python CookBook2》 第一章 文本 - 检查字符串中是否包含某字符集合中的字符 && 简化字符串的translate方法的使用
检查字符串中是否包含某字符集合中的字符 任务: 检查字符串中是否出现了某个字符集合中的字符 解决方案: 方案一: import itertools def containAny(seq,aset): ...
- 动态链接库中分配内存引起的问题-- windows已在XX.exe中触发一个断点
动态链接库中分配内存引起的 本文主要是探讨关于在动态链接库分配的内存在主程序中释放所产生的问题,该问题是我在刚做的PJP工程中所遇到的,由于刚碰到之时感动比较诡异(这也是学识不够所致),所以将它写下来 ...
随机推荐
- Android线程管理(二)——ActivityThread
线程通信.ActivityThread及Thread类是理解Android线程管理的关键. 线程,作为CPU调度资源的基本单位,在Android等针对嵌入式设备的操作系统中,有着非常重要和基础的作用. ...
- UVa 107 - The Cat in the Hat (找规律,注意精度)
题目来源:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=3&pa ...
- Linux网络编程&内核学习
c语言: 基础篇 1.<写给大家看的C语言书(第2版)> 原书名: Absolute Beginner's Guide to C (2nd Edition) 原出版社: Sams 作者: ...
- [转]个人源码管理:如何在本机配置自己的SVN Repository (图解)
本文转自:http://blog.csdn.net/wikijava/article/details/6245588 Repository 即源码的集中存放处,所有修改后提交的源码就是保存在这里,并在 ...
- INFORMATICA 的调优之 INFORMATICA SERVER TUNING
INFORMATICA SERVER的调优我认为主要从两个级别来做,一个是MAPPING级别,一个是SESSION级别. 对于MAPPING级别的调优: 一 对MAPPING数据流向的优化: 1 控 ...
- 《MySQL技术内幕——SQL编程》读书笔记(二)——数据类型
对数据类型的选择将影响与数据库交互的应用程序的性能. 1.通常来说,如果一个页内可以存放尽可能多的行,那么数据库的性能就越好,因此选择一个正确的数据类型至关重要. 2.另一方面,如果在数据库中创建表时 ...
- Oracle 数据库二 基本查询
查询当前用户:show user 查看当前用户下的表:select *from tab; 设置行宽: show linesize;(查看行宽) set linesize 120;(设置行宽) ...
- jQuery Form 表单提交插件-----formSerialize,fieldSerialize,fieldValue,resetForm,clearForm,clearFields的 应用
一.jQuery Form的其他api 1. formSerialize 将表单序列化成查询串.这个方法将返回一个形如: name1=value1&name2=value2的字符串.是否可 ...
- MyEclipse10 离线图文安装SVN插件教程
一.下载SVN插件subclipse 1.下载 下载地址:http://subclipse.tigris.org/servlets/ProjectDocumentList?folderID=2240 ...
- (转载)web测试方法总结
web测试方法总结 一.输入框 1.字符型输入框: (1)字符型输入框:英文全角.英文半角.数字.空或者空格.特殊字符“~!@#¥%……&*?[]{}”特别要注意单引号和&符号.禁止直 ...