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 its 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 C# 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 String _strName, _strValue;
public Capability(String strCapabilityType, String strValue)
{
_strName = strCapabilityType;
_strValue = strValue;
}
public String CapabilityType { get { return _strName; } }
public String Value { get { return _strValue; } }
}
Double click on the Mobile Web Form in Form View and start adding code to the Form_Load event as explained below.
- Declare and instantiate an object of class MobileCapabilities.
System.Web.Mobile.MobileCapabilities currentCapabilities;
currentCapabilities = (MobileCapabilities)Request.Browser;
- 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.
PropertyInfo[] oTypePropertyInfo;
oTypePropertyInfo = currentCapabilities.GetType().GetProperties();
ArrayList oAcap = new ArrayList();
for ( int i=0 ; i < oTypePropertyInfo.Length; i++)
{
oAcap.Add(new Capability(oTypePropertyInfo[i].Name, currentCapabilities
oTypePropertyInfo[i].Name]));
}
- Use the populated ArrayList to Bind to the ObjectList control as shown below.
ObjectList1.DataSource = oAcap;
ObjectList1.DataBind();
ObjectList1.LabelField = " CapabilityType";
Compile the sample and test your Mobile Devices Capabilities.
Figure 2: The sample in action