The code below demonstrates five URI handlers that AIR for Android currently supports:
- tel
- sms
- mailto
- market
- http and https
Invoking applications with URIs is pretty straightforward except in the case of maps. Although AIR does not support the Android "geo" URI intent (it’s not fully supported by Google yet, apparently), the code below demonstrates a very good work-around. Rather than explicitly opening the Maps application with a URI, you can just go to maps.google.com, and Android will ask users if they want to open the URL in the browser or in the Maps application. Simple and effective.
<?xml version="1.0" encoding="utf-8"?>
<s:View xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" title="Home">
<fx:Script>
<![CDATA[
import flash.sensors.Geolocation;
private var geo:Geolocation;
private function onCallAdobe():void
{
navigateToURL(new URLRequest("tel:4085366000"));
}
private function onTextAdobe():void
{
navigateToURL(new URLRequest("sms:4085366000"));
}
private function onEmailChristian():void
{
navigateToURL(new URLRequest("mailto:christian.cantrell@adobe.com?subject=AIR%20Rocks"));
}
private function onSearchMarket():void
{
navigateToURL(new URLRequest("market://search?q=iReverse"));
}
private function onChristiansBlog():void
{
navigateToURL(new URLRequest("http://blogs.adobe.com/cantrell"));
}
private function onGetCurrentLocation():void
{
this.geo = new Geolocation();
this.geo.addEventListener(GeolocationEvent.UPDATE, onLocationUpdate);
}
private function onLocationUpdate(e:GeolocationEvent):void
{
this.geo.removeEventListener(GeolocationEvent.UPDATE, onLocationUpdate);
var long:Number = e.longitude;
var lat:Number = e.latitude;
navigateToURL(new URLRequest("http://maps.google.com/?q="+String(lat)+","+String(long)));
}
]]>
</fx:Script>
<s:VGroup width="100%" height="100%" verticalAlign="middle" horizontalAlign="center" gap="20">
<s:Button label="Call Adobe" click="onCallAdobe();"/>
<s:Button label="Text Adobe" click="onTextAdobe();"/>
<s:Button label="Email Christian" click="onEmailChristian();"/>
<s:Button label="Search the Market" click="onSearchMarket();"/>
<s:Button label="Read Christian's Blog" click="onChristiansBlog();"/>
<s:Button label="Map Your Current Location" click="onGetCurrentLocation();"/>
</s:VGroup>
</s:View>

THAT is beautiful !
thanks .
Thanks for posting this, very helpful. One question that comes to mind: are any of the same calls you mentioned available on iPhone? I realize Apple has been less accommodating than Google in these areas, trying to figure out how to approach dev for both platforms from a single code base.
Pingback: Scott Janousek » Blog Archive » Invoking applications on Android with URIs in Adobe AIR
Hey Christian, is it possible to listen to events at the phone level… and intercept them?
there are some requests out there for text and call blockers / filtering, and there are already some apps out there that do it, but I was just wondering CAN YOU EVEN DO THIS IN AIR? DID THEY ADD HOOKS FOR ANYTHING LIKE THIS?
thanks.
Axel
@Axel: This isn’t currently possible in AIR, but it’s a great feature request. I like the idea. I recommend submitting it here:
http://ideas.adobe.com
I ran this on the simulator (in FB 4.5) and it just tried to go to the browser (Firefox) for tel/sms). Does this only work on the actual smartphone?
@Patrick: I’ve never tried it with the emulator. In fact, it’s so easy to deploy and test AIR apps on devices that I’ve actually never used the emulator at all. But I guess it doesn’t surprise me that it doesn’t work. I’ve tested on devices, and it works fine.
Christian,
Can I use the AIR launchpad to simulate a phone? I don’t have one of those Android 2.2 phone.
Pat
Hey Christian. Enjoyed your session @ MAX!
In regards to the SMS URI – how does one prepopulate the message/body etc. of the text? E.G. – for email it’s simple:
navigateToURL( new URLRequest( “mailto:?subject=” + getSubject() + “&body=” + getBody() ) );
What would be the equivalent for “sms:…” ?
Thanks!
B
Any idea anyone? Would be interested in this as well..
Pingback: AIR for Android and Flex Mobile Resources | Finding Out About
There is a possible hack for SMS. Not perfect but it should work on most phones using Air for Android. I came across it looking for the same solution. The name of the html link says it best
http://www.remotesynthesis.com/post.cfm/sending-text-messages-with-body-text-using-air-for-android-hackish-workaround
Gerry