There is no single technology that allows you to write an application once for all of them.
There are several reasons:
Each platform has its own architecture and libraries for doing common things like gui, access to equipment, etc.
Most of them use different languages. iPhone uses Objective-C, Java for Android, etc.
There was try-J2ME technology, but it does not seem to have rich features for the platform.
, - HTML5 ( -). , - , ..