[Wap] 识别访问手机的能力

 

[Wap] 识别访问手机的能力

Code

日期

关键词

codeproject.com

2005-7-28

Wap ASP.NET MobileCapabilities

 

概念

我们通过以下代码可以获取手机的能力,从而针对不同能力的手机做出显示彩色还是黑白色的图片,显示的字体是否可以为彩色等等。
 

还可以进一步通过System.Web.Mobile.MobileCapabilities 的成员函数

System.Boolean HasCapability ( System.String delegateName , System.String optionalParameter )来查询手机是否支持某一特性,代码如下:

bool bHasWBMP =                
   ((MobileCapabilities)Request.Browser).HasCapability("PreferredImageMime", "image/vnd.wap.wbmp");
log.Info("Has WBMP?" + bHasWBMP.ToString());


MobileCapabilities Codes

asp.net页面中安排如下代码即可通过log4net打印出手机的MobileCapabilities

 代码:

private void Page_Load(object sender, System.EventArgs e)

        {  

            if(!IsPostBack)

            {

                log.Info("-============ 输出MobileCapabilities Begin ==============-");

                Type myType =(typeof(System.Web.Mobile.MobileCapabilities));

                System.Reflection.PropertyInfo[] myPropertyInfo =

                    myType.GetProperties(System.Reflection.BindingFlags.Public|System.Reflection.BindingFlags.Instance);

                DisplayPropertyInfo(myType, myPropertyInfo);

                log.Info("-============ 输出MobileCapabilities End ==============-");

            }

 

。。。}

 

 

void DisplayPropertyInfo(Type t,System.Reflection.PropertyInfo[] myPropertyInfo)

        {

            // Display information for all properties.

            System.Web.Mobile.MobileCapabilities m=( System.Web.Mobile.MobileCapabilities)Request.Browser;

            for(int i=0;i<myPropertyInfo.Length;i++)

            {

                Object result=new Object();

                System.Reflection.PropertyInfo myPropInfo = (System.Reflection.PropertyInfo)myPropertyInfo[i];

                try

                {

                    result = t.InvokeMember (myPropInfo.Name, System.Reflection.BindingFlags.GetProperty|System.Reflection.BindingFlags.GetField, null, m, new object [] {});

                }

                catch (System.MissingMethodException e)

                {

                    result =e.Message;

                }

                log.Info ("[" + myPropInfo.Name+ " ]:<" + result+">");

            }

        }

 

 

下面日志对应的手机型号是

Nokia7610/2.0 (4.0424.4ch) SymbianOS/7.0s Series60/2.1 Profile/MIDP-2.0 Configuration/CLDC-1.0

 输出的日志如下

- -============ 输出MobileCapabilities Begin ==============-
 - [MobileDeviceManufacturer ]:<Nokia>
 - [MobileDeviceModel ]:<Unknown>
 - [GatewayVersion ]:<Nokia WAP Gateway 4.0/CD3/4.0.04)>
 - [GatewayMajorVersion ]:<4>
 - [GatewayMinorVersion ]:<0>
 - [PreferredRenderingType ]:<wml11>
 - [PreferredRenderingMime ]:<text/vnd.wap.wml>
 - [PreferredImageMime ]:<image/vnd.wap.wbmp>
 - [ScreenCharactersWidth ]:<20>
 - [ScreenCharactersHeight ]:<4>
 - [ScreenPixelsWidth ]:<90>
 - [ScreenPixelsHeight ]:<40>
 - [ScreenBitDepth ]:<1>
 - [IsColor ]:<False>
 - [InputType ]:<telephoneKeypad>
 - [NumberOfSoftkeys ]:<2>
 - [MaximumSoftkeyLabelLength ]:<5>
 - [CanInitiateVoiceCall ]:<True>
 - [CanSendMail ]:<False>
 - [HasBackButton ]:<False>
 - [RendersWmlDoAcceptsInline ]:<False>
 - [RendersWmlSelectsAsMenuCards ]:<False>
 - [RendersBreaksAfterWmlAnchor ]:<True>
 - [RendersBreaksAfterWmlInput ]:<True>
 - [RendersBreakBeforeWmlSelectAndInput ]:<False>
 - [RequiresPhoneNumbersAsPlainText ]:<True>
 - [RequiresUrlEncodedPostfieldValues ]:<False>
 - [RequiredMetaTagNameValue ]:<>
 - [RendersBreaksAfterHtmlLists ]:<True>
 - [RequiresUniqueHtmlInputNames ]:<False>
 - [RequiresUniqueHtmlCheckboxNames ]:<False>
 - [SupportsCss ]:<False>
 - [HidesRightAlignedMultiselectScrollbars ]:<False>
 - [IsMobileDevice ]:<True>
 - [RequiresAttributeColonSubstitution ]:<False>
 - [CanRenderOneventAndPrevElementsTogether ]:<False>
 - [CanRenderInputAndSelectElementsTogether ]:<True>
 - [CanRenderAfterInputOrSelectElement ]:<True>
 - [CanRenderPostBackCards ]:<False>
 - [CanRenderMixedSelects ]:<True>
 - [CanCombineFormsInDeck ]:<True>
 - [CanRenderSetvarZeroWithMultiSelectionList ]:<True>
 - [SupportsImageSubmit ]:<False>
 - [RequiresUniqueFilePathSuffix ]:<True>
 - [RequiresNoBreakInFormatting ]:<False>
 - [RequiresLeadingPageBreak ]:<False>
 - [SupportsSelectMultiple ]:<True>
 - [SupportsBold ]:<False>
 - [SupportsItalic ]:<False>
 - [SupportsFontSize ]:<False>
 - [SupportsFontName ]:<False>
 - [SupportsFontColor ]:<True>
 - [SupportsBodyColor ]:<True>
 - [SupportsDivAlign ]:<True>
 - [SupportsDivNoWrap ]:<False>
 - [RequiresContentTypeMetaTag ]:<False>
 - [RequiresDBCSCharacter ]:<False>
 - [RequiresHtmlAdaptiveErrorReporting ]:<False>
 - [RequiresOutputOptimization ]:<False>
 - [SupportsAccesskeyAttribute ]:<False>
 - [SupportsInputIStyle ]:<False>
 - [SupportsInputMode ]:<False>
 - [SupportsIModeSymbols ]:<False>
 - [SupportsJPhoneSymbols ]:<False>
 - [SupportsJPhoneMultiMediaAttributes ]:<False>
 - [MaximumRenderedPageSize ]:<1397>
 - [RequiresSpecialViewStateEncoding ]:<False>
 - [SupportsQueryStringInFormAction ]:<True>
 - [SupportsCacheControlMetaTag ]:<True>
 - [SupportsUncheck ]:<True>
 - [CanRenderEmptySelects ]:<True>
 - [SupportsRedirectWithCookie ]:<True>
 - [SupportsEmptyStringInCookieValue ]:<True>
 - [DefaultSubmitButtonLimit ]:<1>
 - [ClrVersion ]:<0.0>
 - [Type ]:<Unknown>
 - [Browser ]:<Nokia>
 - [Version ]:<0.0>
 - [MajorVersion ]:<0>
 - [MinorVersion ]:<0>
 - [Platform ]:<Unknown>
 - [TagWriter ]:<System.Web.UI.Html32TextWriter>
 - [EcmaScriptVersion ]:<0.0>
 - [MSDomVersion ]:<0.0>
 - [W3CDomVersion ]:<0.0>
 - [Beta ]:<False>
 - [Crawler ]:<False>
 - [AOL ]:<False>
 - [Win16 ]:<False>
 - [Win32 ]:<False>
 - [Frames ]:<False>
 - [Tables ]:<False>
 - [Cookies ]:<False>
 - [VBScript ]:<False>
 - [JavaScript ]:<False>
 - [JavaApplets ]:<False>
 - [ActiveXControls ]:<False>
 - [BackgroundSounds ]:<False>
 - [CDF ]:<False>
 
- -============
输出MobileCapabilities End ==============-


 

设备能力表格(FROM MSDN)

下面是asp.net mobile control所列出的设备属性表(来自于

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/mwsdk/html/mwlrfDeviceSpecificElement.asp

):

Property

WML

Browser

Yes

CanCombineFormsInDeck

Yes

CanInitiateVoiceCall

Yes

CanRenderEmptySelects

Yes

CanRenderInputAndSelectElementsTogether

Yes

CanRenderMixedSelects

Yes

CanRenderOneventAndPrevElementsTogether

Yes

CanRenderPostbackCards

Yes

CanRenderSetvarZeroWithMultiSelectionList

Yes

CanSendMail

Yes

DefaultSubmitButtonLimit

Yes

GatewayMajorVersion

Yes

GatewayMinorVersion

Yes

GatewayVersion

Yes

HasBackButton

Yes

HidesRightAlignedMultiselectScrollbars

No

InputType

Yes

IsColor

Yes

IsMobileDevice

Yes

Item

Yes

MaximumRenderedPageSize

Yes

MaximumSoftKeyLabelLength

Yes

MobileDeviceManufacturer

Yes

MobileDeviceModel

Yes

NumberOfSoftkeys

Yes

PreferredImageMime

Yes

PreferredRenderingMime

Yes

PreferredRenderingType

Yes

RendersBreakBeforeWmlSelectAndInput

Yes

RendersBreaksAfterHtmlLists

No

RendersBreaksAfterWmlAnchor

Yes

RendersBreaksAfterWmlInput

Yes

RendersWmlDoAcceptsInline

Yes

RendersWmlSelectsAsMenuCards

Yes

RequiredMetaTagNameValue

No

RequiresContentTypeMetaTag

No

RequiresAttributeColonSubstitution

No

RequiresHtmlAdaptiveErrorReporting

Yes

RequiresLeadingPageBreak

Yes

RequiresNoBreakInFormatting

Yes

RequiresOutputOptimization

No

RequiresPhoneNumbersAsPlainText

Yes

RequiresSpecialViewStateEncoding

Yes

RequiresUniqueFilePathSuffix

Yes

RequiresUniqueHtmlCheckboxNames

No

RequiresUniqueHtmlInputNames

Yes

RequiresUrlEncodedPostfieldValues

Yes

ScreenBitDepth

Yes

ScreenCharactersHeight

Yes

ScreenCharactersWidth

Yes

ScreenPixelsHeight

Yes

ScreenPixelsWidth

Yes

SupportsAccesskeyAttribute

No

SupportsBodyColor

No

SupportsBold

No

SupportsCacheControlMetaTag

Yes

SupportsCss

Yes

SupportsDivAlign

No

SupportsDivNoWrap

No

SupportsFontColor

No

SupportsFontName

No

SupportsFontSize

No

SupportsImageSubmit

No

SupportsIModeSymbols

No

SupportsInputIStyle

No

SupportsInputMode

No

SupportsItalic

No

SupportsJPhoneMultiMediaAttributes

No

SupportsJPhoneSymbols

No

SupportsQueryStringInFormAction

Yes

SupportsSelectMultiple

No

SupportsUncheck

Yes

 

编写者

日期

关键词

郑昀@ultrapower

2005-7-28

Wap ASP.NET MobileCapabilities

 

posted @ 2005-07-28 15:59  旁观者  阅读(1788)  评论(4编辑  收藏  举报