Navigation intent that would work with maps and waze

RCB picture RCB · Mar 6, 2014 · Viewed 14k times · Source

I'm trying to start a navigation activity with an intent from my app. I want it to start navigation from my location to a point that I provide. I've tried this way

String uri = "geo: "+String.valueOf(latitude) + "," + String.valueOf(longitude);
context.startActivity(new Intent(android.content.Intent.ACTION_VIEW,
                            Uri.parse(uri)));

It works great when I choose to navigate with Waze (it starts with the "start navigation" dialog right away), but doesnt work with maps (only shows the point, not the navigation option)

If I use this way

Intent intent = 
            new Intent(Intent.ACTION_VIEW,
                    Uri.parse("http://maps.google.com/maps?"  + 
                            "&daddr=" + String.valueOf(latitude) + "," 
                             + String.valueOf(longitude)));
context.startActivity(intent);

Its the opposite, starting the navigation with maps and only showing the point with Waze

Thanks!

Answer

Orion picture Orion · Jul 22, 2014

I've done this myself and have had no issues using it the following way:

intent.setData(Uri.parse("geo:" + getLatitude() + "," + 
    getLongitude() + "?q=" + getStreet() + "+" + 
    getHousenumber() + "+" + getPostalcode() + "+" + 
    getCity()));

The difference is that I use "&q=" for the query as stated by Google.

See: https://developer.android.com/guide/components/intents-common.html#Maps