Thursday, April 23, 2015

Discover the Hidden Face of Your Android!

If you have an Android device with a customized OS or ROM, your UI would be significantly different from what a genuine Android version would offer. However, unless the developers of your device are clever enough to get rid of all the old stuff, you can easily get an idea of what your device had to offer before it was customized, and maybe even gain access to some useful apps or functions that have been disabled in the customized version.

You will have to write a small Android app, just a few lines of code. Create a standard Android app project with a main activity, and include the following code in the onCreate() method (or in a UI event handler, if you like to have some fancy UI):

	Intent mainIntent = new Intent("android.intent.action.MAIN");
	startActivity(mainIntent);

When the code gets run, an app picker (intent chooser dialog) will come up, showing all activities in your phone that have been registered for the MAIN intent. You would most probably see a lot of new options which had not been seen before, probably because they are registered only for more specific intents like VIEW, or do not belong to the LAUNCHER category so that they were, well, not launchable.

In my case (a Mlais MX28 with a factory-installed modded ROM), using this trick, I discovered some totally unexpected, quite useful stuff:

  • a logger app (MTKLogger) that allows generation and saving of mobile, modem and network logs (including TCP dumps); I had seen this app earlier (although it didn't appear in the app list), but it was not launchable, even via the OS app manager.
  • a built-in testing tool that allows direct access to the phone's Wi-Fi API functions and configuration, battery information and network details including a ping test
  • a viewer showing SIM information for each of my SIMs (although the device is dual SIM, there was no built-in facility to check their individual IMEI numbers)
  • the genuine About Phone page that had been replaced with a custom version; I had been missing the famous JellyBean splitter ever since I got hands on my phone, simply because there was no Android version entry to tap 7 times in the About Phone section

I came across a load of other activities, many of which didn't show anything, and some of which crashed on launching. There were also some installer and configuration actions as well, which had probably been left behind by the phone mod process.

Ironically, there were also an NFC and an Android Beam page, although my device has no such capabilities; maybe the developer just left the activities behind and only removed the references from the modded Settings page.

Remember that all these things came up for just the MAIN intent; I'm dying to find out what the load of other Android intents—official and unofficial, documented and undocumented—would bring up. It should be quite simple to find out; just a change in the intent name string literal in the above code.

So, go ahead and try it out if you have a customized phone (most of you would, since almost every smartphone manufacturer offers a proprietary UI these days); your phone too may have some nice surprises in store for you!