Enterprise Mobility and Android Ecosystem

Enterprise Mobility and Android Ecosystem

True to the statement “A business with no mobile strategy is a business with no strategy” literally every enterprise, no matter what domain it belongs to is already having or planning to have a comprehensive mobile enablement strategy.

Mobile enablement primarily involves making a subset of an enterprise services accessible through mobile device. Examples include providing features such as bank balance enquiry and balance transfers etc. for a bank customer accessible through mobile device. In this article I am going to discuss the kind of support android operating system provides for enterprise mobility.

Considering the fact that mobile devices predominantly play a client role, the level of support available for two features viz. User Interface and Enterprise Connectivity are critical for any mobile operating system to be a good enterprise system client. Specific to mobile devices, these devices being wireless, often go offline due to loss of signal, this makes the availability attribute of mobile application a more serious requirement than a mere application quality attribute. In this article I am going to discuss the three features of User Interface, Enterprise Connectivity and offline data storage on android.

User Interface: Android provides very powerful user interface, provides native and web based UI. Few of the striking strengths of android UI are listed below.

Variety of UI elements: Android provides wide variety of UI elements including text field, all sorts of Buttons and list based UI elements etc.

Configurable UI: In android one can define UI element, configure layouts, colour themes, and styles etc. in XML file, which is easy and intuitive to create and modify and also separates the application code from UI.

Specialist UI elements: Specialist UI elements such as Date and Time picker are available which allow the user to create Date and Timestamp with reduced no of key presses which drastically improves the mobile app usability.

Web based UI: In addition to browser based Internet access android also provides customizable web based UI. This UI is very useful for writing applications using cross platform hybrid technologies such as HTML, JavaScript etc. These languages are more familiar to programmers than the platform specific languages.

Enterprise Connectivity: Android provides HTTP based standard web services and also provides support for ad-hoc XML and JSON data retrieval and parsing.

Web services: Android provides good support for matured SOAP based web services, supporting implementation is KSOAP2. Android also provides support for light weight REST based web services; the supporting implementation is apache HTTP client libraries.

Ad-hoc Connectivity: At times we come across situations where server side data is just wrapped in some ad-hoc XML or JSON structure rather than following a web service standard, to deal with these situations Android also has a very good support to open raw network connection to enterprise server and retrieve data and also has support for parsing XML and JSON documents.

On device Data Storage: Android provides powerful on device storage mechanism with varying levels of sophistication and complexity.

Share Preferences: This is the simplest type of storage mechanism used for storing name value pairs such as application settings.

File IO: This mechanism allows writing to flat files, allows storing bigger chunks of data than name value pairs.

SQLite Database: This is the most sophisticated storage mechanism that allows storing relational entities and provides SQL interface to perform CRUD operations. Often the SQLite database is used to store some part of enterprise data to support offline operations.

Content providers: Content provider is a unique framework that provides cross package data access. Content provider also allows replacing one storage mechanism with another one without modifying the code that accesses the data. It also provides proper division of labour by introducing a layer between the code that requires data and storage mechanism specific code.