Implement navigation app intents

Google Assistant uses three different formats of intents that your navigation app can support. You can achieve interoperability and integrate your app and Google Assistant by declaring the intent filters detailed in this page in your app's manifest. To learn more about intents, see Intent.

The Assistant navigation app Intent class supports the following intents:

  • Navigation intent
  • Search intent
  • Custom action intent

Intent data flow

Figure 1. Intent data flow.

Parameters in intent data

Intent data follows a URI format containing parameters based on the intent you're passing. Some parameters are always supplied in the data. This means you can expect them to always have an explicit value. Optional parameters, however, don't always have a value set in the data. For more information, see Data test.

Offline intents

All intents listed in this page have their offline variants available. You can distinguish them by appending .offline to their scheme. For example, the navigation intent uses the geo.offline scheme. These intent filters in the manifest signify the app's ability to support these actions offline.

Use a navigation intent to fulfill a user's request to navigate to a specific destination. This destination can either be a single location (address) or multiple locations (for example, coffee shops and gas stations). Intent data follows a URI format specified for each intent.

Intent format

The Intent class uses the following format for navigation app intent:

Category: android.intent.category.DEFAULT

Action:

  • Android Auto and Android Automotive OS: androidx.car.app.action.NAVIGATE
  • Other form factors: android.intent.action.NAVIGATE

Scheme: geo

Examples:

  • geo:0,0?q=Googleplex
  • geo:0,0?q=1600+Amphitheatre+parkway&mode=b&intent=add_a_stop
  • geo:0,0?q=coffee+shop&mode=w&intent=navigation
  • geo:1.1,2.2?q=Starbucks+on+Main+Street&mode=w&intent=navigation

Suggested app behavior: Navigation to the specified location starts or the user is asked to choose from multiple options.

Manifest intent filters

Declare the following intent format in your app's manifest file so that Google Assistant knows that your navigation app can receive navigation intents.

All form factors except Android Auto and Android Automotive OS:

<intent-filter>
  <action android:name="android.intent.action.NAVIGATE" />
  <category android:name="android.intent.category.DEFAULT"/>
  <data android:scheme="geo" />
</intent-filter>

Android Auto and Android Automotive OS:

<intent-filter>
  <action android:name="androidx.car.app.action.NAVIGATE" />
  <category android:name="android.intent.category.DEFAULT"/>
  <data android:scheme="geo" />
</intent-filter>

Supplied parameters

The following parameters are expected to be available in the supplied navigation app intent data.

Location query or geographical coordinates

Every navigation intent query contains one or both of these parameters, depending on the type of data requested:

  • Location query

    Refers to the location the user is trying to navigate to. Use this data to resolve the user's destination.

    Parameter key: q
    Value: The user's queried destination.

    Example: geo:0,0?q=Golden+Gate+Bridge
    Interpretation: The user wants to navigate to the Golden Gate Bridge.

  • Geographical coordinates (latitude and longitude)

    Refers to specific coordinates used by the user for navigation.

    Parameter key: geo:lat,long
    Value: The user's queried coordinates.

    Example: geo:1.1,2.2?mode=w&intent=navigation
    Interpretation: The user wants to navigate to coordinates (1.1, 2.2).

Optional parameters

The optional parameters supplied in the navigation app intent data are described in this section.

Intent

Defines the user intent. If this parameter isn't set, then the default user intent is considered as navigation.

Parameter key: intent
Possible values:

  • navigation [default value] - Replaces the destination and starts navigation. Use this for queries like navigate to x.
  • add_a_stop - Adds the stop as the next destination along with previous destinations. Use this for queries like add a stop at x.
  • directions - Shows route directions without starting navigation. Use this for queries like directions to x.

Example: geo:47.61594547836694,-122.20373173098756?q=575+Bellevue+Square,+Bellevue,+WA+98004&intent=add_a_stop Interpretation: The user wants to add a stop to Bellevue Square, Bellevue, with the current coordinates [47.6, -122.2].

Avoid

Defines things to avoid in navigation.

Parameter key: avoid
Possible values:

  • f - ferries
  • h - highways
  • t - tolls

Example: geo:0,0?q=googleplex&avoid=tf
Interpretation: The user wants to navigate to Googleplex avoiding tolls and ferries.

Travel mode

Travel mode represents the method of transportation specified in the query by the user.

Parameter key: mode
Possible values:

  • b - bicycle
  • d - drive
  • x - taxi
  • l - two wheeler
  • r - transit
  • w - walk

Example: geo:0,0?q=Googleplex&mode=r
Interpretation: The user wants to navigate to Googleplex using public transit.

Entry

Used for logging the source of entry.

Possible values: assistant

Example: geo:47.61594547836694,-122.20373173098756?entry=assistant

Search intent

Use a search intent to search for a query and display multiple results along the route while driving.

Intent format

The Intent class uses the following format for search intents:

Category: android.intent.category.DEFAULT

Action: android.intent.action.VIEW

Scheme: geo

Example: geo:0,0?q=restaurants+nearby

Suggested app behavior: Open a list of locations that fit the user query.

Manifest intent filters

Declare the following intent format in your app's manifest file so that Google Assistant knows that your navigation app can receive search intents:

<intent-filter>
  <action android:name="android.intent.action.VIEW" />
  <category android:name="android.intent.category.DEFAULT"/>
  <data android:scheme="geo" />
</intent-filter>

Supplied parameters

The following parameters are expected to be available in the supplied search intent data.

Location query

A location query is the location the user is searching for while driving. This query can be imprecise or along an active navigation route.

Parameter key: q
Value: The user's search term, which could be a location type such as coffee shop or college but could also have quantifiers such as -near me or -with best rating.

Example: geo:0,0?q=restaurants+nearby
Interpretation: The user wants to search nearby restaurants.

Custom action intent

Use a custom intent for custom actions like reporting accidents and ending navigation. The main action type is defined by the act query parameter. You can set additional parameters depending on the action type.

Intent format

The Intent class uses the following format for custom action intent:

Category: android.intent.category.DEFAULT

Action: android.intent.action.VIEW

Scheme: geo.action

Example: geo.action:?act=report&accident_type=major

Manifest intent filters

Declare the following intent format in your app's manifest file to let Google Assistant know that your navigation app can receive custom action intents.

<intent-filter>
  <action android:name="android.intent.action.VIEW" />
  <category android:name="android.intent.category.DEFAULT"/>
  <data android:scheme="geo.action" />
</intent-filter>

Supplied parameters

The following parameters are expected to be available in the supplied Custom Action intent data:

Action type

It defines the type of custom action a user wants to perform.

Parameter key: act

Examples:

  • geo.action:?act=report_crash&accident_type=major
    Interpretation: The user wants to report a major accident.

  • geo.action:?act=mute
    Interpretation: The user wants to mute voice instructions.

  • geo.action:?act=exit_navigation
    Interpretation: The user wants to exit the current navigation.

Suggested app behavior: Fulfill the requested action on the navigation app or show an unsupported action message.

The following figure depicts an example of key-value pairs in the response query:

Custom action intent data flow

Figure 2. Custom action intent data flow.

Key-value pair:

"act": "report_crash"
"road_direction": other_side"

Every custom action always has an act parameter as the key. In the aforementioned example code, some actions can have additional key-value pairs. For example, act=report_crash supports these additional keys: accident_type and road_direction.

The key accident_type can support two values, minor and major.

Possible values

The table lists possible values that Google Assistant can pass as the action the user is trying to fulfill on the navigation app.

Value Description Optional parameter keys Optional parameter values
allow_ferries Change route preference to allow ferries.
allow_highways Change route preference to allow highways.
allow_tolls Change route preference to allow tolls.
apply_electric_vehicle_connector_filter Only show EV charging locations that match the car's connector.
apply_electric_vehicle_fast_charging_filter Only show EV charging locations that are fast chargers.
apply_electric_vehicle_payment_filter Only show EV charging locations that require payment.
avoid_ferries Change route preference to avoid ferries.
avoid_highways Change route preference to avoid highways.
avoid_tolls Change route preference to avoid tolls.
clear_search_results Clear search results on the map.
distance_to_destination Show distance to the destination.
distance_to_next_turn Show distance to the next turn.
eta Show ETA to the destination.
exit_navigation Exit or cancel navigation.
follow_mode Change map view to follow mode.
go_back Go back to previous map action.
hide_satellite Change map setting to hide satellite info.
hide_traffic Change map setting to hide traffic info.
mute Mute voice guidance.
query_current_road Show what is the current road the user is on.
query_destination Show what is the destination.
query_next_turn Show what is the next turn.
remove_electric_vehicle_connector_filter Remove filtering for EV charging locations that match the car's connector.
remove_electric_vehicle_fast_charging_filter Remove filtering for EV charging locations that are fast chargers.
remove_electric_vehicle_payment_filter Remove filtering for EV charging locations that require payment.
report_crash Report crashes. accident_type minor
major
road_direction this_side
other_side
report_hazard Report hazards. hazard_type animal
broken_traffic_light
construction
flooding
fog
hail
ice
missing_sign
object_on_road
pothole
roadkill
snow
vehicle
weather
road_direction this_side
other_side
location_on_road on_road
on_shoulder
report_police Report police activity. road_direction this_side
other_side
report_road_closure Report road closures. road_closure_type partial
full
report_traffic Report traffic. traffic_type moderate
heavy
standstill
road_direction this_side
other_side
resume_navigation Resume navigation.
route_overview Show route overview.
show_alternates Show alternative routes.
show_directions_list Show turn-by-turn instructions.
show_satellite Show satellite info on the map.
show_traffic Show traffic on the map.
time_to_destination Show ETA to destination.
time_to_next_turn Show ETA to next turn.
unmute Unmute voice guidance.