Another intentionally crippled API in Android wouldn't exactly be surprising. I run into them all the time as a developer.<p>The initial SDKs had an awesome XMPP implementation that made communicating with programs on other phones incredibly easy. A program could even be started remotely to add a status bar notification that someone is challenging you in a multiplayer game you both have installed, for example. Now there's no public XMPP API at all and you have to include a less integrated Smack API JAR provided by the community. This uses up a lot of the very small amount of data storage space for installing applications and requires you to query the user for user and password information the phone already has anyway. Needless to say the issue thread for this is full of developers complaining and detailing how badly it impacts them and Google doesn't care.<p>Similarly, earlier versions of Android exposed some great APIs for searching for nearby businesses. For example, you could find all pizza places near the user and do something cool with that information in your application. The classes that allowed this were com.google.googlenav.Search and com.google.android.location.GmmGeocoder, but are now inaccesibe. The public GeoCoder class is useless for this. Developers are forced to call the Maps web service, handle all the potential problems and resource issues of opening HTTP connections, and parse XML results when this functionality is already completely written, just no longer exposed. The built in Maps application does this, so Google probably wants to prevent developers from being able to do the same easily.<p>I suppose it is a lot like how Apple rejects apps that "duplicate functionality". Google is trying to cripple third party developers in the same manner, they just do it at the API level.