I am surprised that there is no Android Hidden Features post yet in the Hidden Features series that I've been tracking for a while now.

The Hidden Features series is great for people who are new to a certain language. It shows the ropes and certain valuable tricks, all in one place. I think it's a brilliant idea. Even experts sometimes find tricks they'd never heard about.

I am starting Android development and I'd love to hear about its hidden features, tips, tricks, and pitfalls.

This question exists because it has historical significance, but it is not considered a good, on-topic question for this site, so please do not use it as evidence that you can ask similar questions here. This question and its answers are frozen and cannot be changed. More info: help center.

6 Answers
6

Hopefully there aren't too many hidden, hidden features - but here's some of the less well known and non-intuitive features available for Android that will definitely make your life easier and your apps better.

All the source code for the platform and all the non-Google native apps is available for you to browse, download, borrow, or steal from the Android Open Source project.

Using the resources framework, creating localized versions of your app is as simple as adding a new annotated subfolder (Eg. values-fr) that contains an XML file with strings in a different language (Eg. French). Android will choose the right folder at runtime for you.

The same resources framework lets you use alternate layouts for different hardware configurations, screen pixel densities, and input devices just by dropping them in named folder.

Since Android 1.6, your app can produce results that will appear in the results from a homescreen Quick Search Box search. This is known as custom search suggestions.

They can request an unknown application to complete an action without needing to know which application(s) can fulfill that request

Your app can fulfill requests from unknown apps to complete actions without needing to know which apps will make the requests. Play this right and you can create the 'default' Twitter app, or booking app, etc.

Using Alarms you can set your app to complete tasks at predetermined times, even if your app isn't running.

You can save a lot of battery life using the setInexactRepeating method to schedule regular events (like server polling or updates). It will synchronize alarms from multiple apps to occur at the same time rather than adhoc.

Using the Preferences framework you can create settings screens for your apps in the same style as the system settings. You can even incorporate system settings screens (Eg. Security and Location) into your application's settings hierarchy.

our designer was particularly impressed with draw9patch which helped design stretchable buttons. He gave me assets from there, and I changed from a background colour to a 9-patch drawable and now we have a custom button, rounded corners, etc stretched to fit the text.

ddms, which is also integrated into the Eclipse plugin. It's immensely powerful, but I use it to take screenshots.

adb - interact with your device or emulator from the command line. I use this to follow the logs from my device in a terminal window on my desktop, though I have found it useful for installing and uninstalling apps which are misbehaving.

sqlite3 - great for interacting with an installed database, and trying out queries.

Another hidden feature is that these docs are available offline as part of the SDK. At first I was loading up a few pages every day for my morning train ride but didn't need to do that anymore after I found them in the SDK directory.

If you use Eclipse, you will notice that it doesn't format XML files very well and when it does, it's very inconsistent (sometimes it splits the attributes by new lines, sometimes it doesn't). To fix it, you can press Ctrl-Shift-F (auto-format). The rules Ctrl-Shift-F uses are in Window->Preferences->XML->XML Files->Editor.

There is also idunnolol.com/android/drawables.html with a full documentation on all the xml features for shapes. Shapes can be very important to do round courner backgrounds that change color when clicked or make xml defined gradients instead of custom background drawables.
– JanuszJul 21 '10 at 7:19

is it possible to add a number of shapes to one xml document. e.g. a couple of circles and rectangles?
– skyfootNov 4 '10 at 16:18