android – Navigation intent that would work with maps and waze-ThrowExceptions

Exception or error:

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!

How to solve:

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

###

This is simple way and works on both of them:

String uri = "geo: latitude,longtitude ?q= latitude,longtitude";
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(uri)));

I hope this will be useful

###

ok Google maps

    final String uri="http://maps.google.com/maps?f=d&hl=de&geocode=&saddr=" + Global.lattaxi + "," + Global.lontaxi + "&daddr=" + Global.latcliente + "," + Global.loncliente + "&ie=UTF8";
     final Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri));

    intent.setComponent(new ComponentName(
            "com.google.android.apps.maps",
            "com.google.android.maps.MapsActivity"));
    startActivity(intent);

Leave a Reply

Your email address will not be published. Required fields are marked *