Introduction
This sample is a utility to determine the capabilities of a Mobile Device. The MobileCapabilities class available in the Mobile Internet Toolkit provides a list of useful information on the client device. You can use this class to determine whether the target client device supports certain functionality.
Our sample consists of a Mobile Web Form, which displays the capabilities of the client device. The MobileCapabilities class is created on Page Load and the Capability information is available programmatically. We make use of Reflection at run time to peek into the Device Capabilities class and extract it's properties and the corresponding values into an ArrayList object. The capabilities and their values for the mobile device are then displayed in user-friendly format in an ObjectList control using Data Binding.
Create a new project of Type "Visual Basic Project" using Template "Mobile Web Application". In the default Mobile Web Form that is created along with the project, insert a Label and an ObjectList control as shown in Figure 1.

Figure 1: Designing the Mobile Web Form
Now we will define our class, which will be used to hold the capability information. Add the following code to the code view just above the class definition for the Mobile Web Form.
Class
Capability
Private _strName, _strValue As [String]
Public Sub New(ByVal strCapabilityType As [String], ByVal strValue As [String])
_strName = strCapabilityType
_strValue = strValue
End Sub 'New
Public ReadOnly Property CapabilityType() As [String]
Get
Return _strName
End Get
End Property
Public ReadOnly Property Value() As [String]
Get
Return _strValue
End Get
End Property
End Class 'Capability
Double click on the Mobile Web Form in Form View and start adding code to the Form_Load event as explained below.
(1) Declare and instantiate an object of class MobileCapabilities.
Dim
currentCapabilities As System.Web.Mobile.MobileCapabilities
currentCapabilities = CType(Request.Browser, MobileCapabilities)
(2) Get the properties and the corresponding values of the MobileCapabilities object in Capability objects (define in the beginning of the sample). We make use of Reflection to achieve this. This is a better alternative to hard-coding the property names and querying for the values. An ArrayList object is used to contain a collection of these Capability objects.
Dim oTypePropertyInfo() As PropertyInfo
oTypePropertyInfo = currentCapabilities.GetType().GetProperties()
Dim oAcap As New ArrayList
Dim i As Integer
For i = 0 To oTypePropertyInfo.Length - 1
oAcap.Add(New Capability(oTypePropertyInfo(i).Name, currentCapabilities(oTypePropertyInfo(i).Name)))
Next i