In questa guida vedremo passo passo come aprire Google Maps su Android utilizzando un Intent, così da lanciare rapidamente la mappa direttamente dalla tua app. Capire come funziona un android intent google maps è fondamentale per integrare percorsi, punti di interesse e funzioni di navigazione in modo professionale. Gli esempi sono scritti in Java e pensati per essere eseguiti e modificati facilmente in Android Studio. Continua a leggere per scoprire il codice completo e imparare a personalizzarlo per il tuo progetto.

A clean, modern tech tutorial illustration showing Android app development with Google Maps integration. The image features a smartphone displaying a Google Maps interface, surrounded by Java code snippets related to Android Intent. Dark background with green and white accents, professional developer tutorial style.

Cos’è un Android Intent?

In Android, un Intent è un messaggio asincrono che consente di richiedere un’azione ad un altro componente del sistema (un’Activity, un Service o un BroadcastReceiver). Si distinguono principalmente due categorie: Intent espliciti e Intent impliciti. Gli Intent espliciti specificano in modo diretto la classe dell’Activity di destinazione (ad esempio new Intent(this, DetailActivity.class)) e vengono usati di solito per navigare tra schermate interne della stessa app. Quelli impliciti, invece, non indicano una classe precisa ma solo l’azione da eseguire e, facoltativamente, i dati da usare per quella azione. Consulta la documentazione ufficiale Android sugli Intent per approfondire questi concetti.

Quando apriamo Google Maps dall’app, utilizziamo un Intent implicito con l’azione Intent.ACTION_VIEW. In questo modo chiediamo al sistema Android: “Trova un’app capace di visualizzare questo tipo di contenuto”. Se forniamo un Uri compatibile con Google Maps (ad esempio un URI geo: o una URI di navigazione), il sistema individua l’app di mappe installata (tipicamente Google Maps) come candidata principale. L’azione ACTION_VIEW è la scelta corretta perché il nostro obiettivo è visualizzare una risorsa geografica (mappa, punto di interesse, percorso), lasciando ad Android il compito di delegare l’operazione all’app più adatta, invece di vincolare il codice a una singola Activity specifica.

Esempio base: aprire Google Maps con un Intent Android

Per avviare Google Maps con un intent,andiamo a creare un oggetto Intent specificandone l’azione con ACTION_VIEW e lo passiamo al metodo startActivity(). Il sistema avvierà Google Maps, e  l’Activity corrispondente.
Ecco il codice:

<?xml version=”1.0″ encoding=”utf-8″?>
<LinearLayout
xmlns:android=”http://schemas.android.com/apk/res/android&#8221;
android:layout_width=”match_parent”
android:layout_height=”match_parent”
android:gravity=”center”
android:orientation=”vertical”>

<TextView
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:textAppearance=”?android:attr/textAppearanceMedium”/>

<Button
    android:id=”@+id/map”
android:text=”MapView”
    android:layout_width=”match_parent”
    android:layout_height=”wrap_content”/>

</LinearLayout>

package com.example.openMap.activities;

import android.app.Activity;
import android.os.Bundle;
import com.example.openMap.R;
import android.widget.*;
import android.view.*;
import android.content.*;

public class MainActivity extends Activity {
Button btn;
Intent intent;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

btn=findViewById(R.id.map);

btn.setOnClickListener(new View.OnClickListener() {
   @Override
public void onClick(View view) {

Intent intent = new Intent(Intent.ACTION_VIEW);



intent.setPackage(“com.google.android.apps.maps”);

startActivity(intent);


}
});

}

}

Come personalizzare l’URI di Google Maps con Android Intent

Il comportamento di Google Maps dipende dal Uri che passiamo all’Intent. Nel codice mostrato sopra l’Intent viene creato con la sola azione ACTION_VIEW e il package impostato a Google Maps, ma senza un Uri specifico. Per ottenere un risultato utile (come aprire una posizione, cercare un indirizzo o avviare la navigazione turn-by-turn) dobbiamo costruire e passare un Uri appropriato a Intent.setData() oppure direttamente al costruttore dell’Intent. Una guida completa sui vari schemi URI supportati è disponibile nella guida ufficiale Google Maps Intents.

Per aprire Google Maps su specifiche coordinate geografiche puoi utilizzare lo schema geo: con latitudine e longitudine:

Uri gmmIntentUri = Uri.parse("geo:37.7749,-122.4194");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

Quando invece vogliamo cercare un indirizzo testuale (ad esempio una città o una via), possiamo usare lo schema geo:0,0?q= seguito dall’indirizzo codificato. In questo caso Google Maps interpreterà il testo come una query di ricerca:

Uri gmmIntentUri = Uri.parse("geo:0,0?q=Roma");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

La navigazione turn-by-turn verso una destinazione si avvia con lo schema google.navigation:, specificando il parametro q con l’indirizzo o le coordinate:

Uri gmmIntentUri = Uri.parse("google.navigation:q=Piazza+Navona,+Roma");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

Manifest:
<uses-permission android:name=”android.permission.INTERNET” />

Gestire Google Maps non installato: Android Intent

Quando si utilizzano Intent impliciti è buona pratica verificare che esista almeno un’Activity in grado di gestirli, prima di chiamare startActivity(). Nel caso di Google Maps, se l’app non è installata o non è disponibile nessuna app capace di gestire l’URI richiesto, la chiamata diretta a startActivity() genererebbe un’eccezione ActivityNotFoundException. Per evitare crash indesiderati, possiamo usare il metodo resolveActivity() dell’oggetto PackageManager. Approfondisci il funzionamento consultando la documentazione di PackageManager.

Uri gmmIntentUri = Uri.parse("geo:0,0?q=Roma");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");

if (mapIntent.resolveActivity(getPackageManager()) != null) {
    // Almeno un'app può gestire l'Intent: è sicuro chiamare startActivity
    startActivity(mapIntent);
} else {
    // Nessuna app compatibile trovata: qui possiamo mostrare un messaggio
    // all'utente o proporre di installare Google Maps dal Play Store
}

Questo controllo rende il comportamento dell’app più robusto, perché evita interruzioni improvvise nel caso in cui l’ambiente dell’utente non corrisponda alle nostre aspettative (ad esempio dispositivi senza Google Play Services o con Google Maps disinstallato). Integrare sempre questo tipo di verifica quando si dipende da app esterne aumenta l’affidabilità percepita dell’applicazione e migliora l’esperienza complessiva dell’utente.

Articoli correlati

Mostrare un Marker su Google Maps

Mostrare un marker su una posizione specifica in Google Maps senza usare l’SDK è semplice con lo schema geo:lat,lng?q=lat,lng(Etichetta): Google Maps aprirà la mappa centrata sulle coordinate e mostrerà un pin con l’etichetta (nome del luogo) che hai specificato.

double lat = 41.902782;  // Roma
double lng = 12.496366;
String label = "Roma";

String uriBegin = "geo:" + lat + "," + lng;
String query = lat + "," + lng + "(" + Uri.encode(label) + ")";
String encodedQuery = Uri.encode(query);
String uriString = uriBegin + "?q=" + encodedQuery;

Uri gmmIntentUri = Uri.parse(uriString);
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

In questo esempio passiamo a Google Maps sia le coordinate esatte sia un’etichetta leggibile per l’utente. L’uso di Uri.encode() è fondamentale per gestire correttamente spazi e caratteri speciali nel nome del luogo.

Aprire Google Maps con Street View

Tramite lo schema google.streetview:cbll=lat,lng è possibile aprire direttamente Street View su una posizione specifica, mostrando all’utente la vista a livello strada del punto indicato, quando disponibile.

double lat = 41.890251;  // Colosseo
double lng = 12.492373;

Uri gmmIntentUri = Uri.parse("google.streetview:cbll=" + lat + "," + lng);
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");

if (mapIntent.resolveActivity(getPackageManager()) != null) {
    startActivity(mapIntent);
} else {
    // Nessuna app compatibile con Street View trovata
}

Come buona pratica, usiamo resolveActivity() per verificare che esista un’app in grado di gestire l’Intent Street View, evitando crash nel caso in cui l’utente non abbia Google Maps o Street View installati.

Scegliere la Modalità di Trasporto

Quando avvii una navigazione con Google Maps, puoi suggerire la modalità di trasporto preferita (a piedi, in auto, in bici o con i mezzi pubblici) usando il parametro &directionsmode=walking|driving|bicycling|transit. Ecco un esempio completo:

double lat = 45.464203;  // Milano
double lng = 9.189982;
String mode = "walking"; // walking, driving, bicycling, transit

String uri = "google.navigation:q=" + lat + "," + lng + "&directionsmode=" + mode;
Uri gmmIntentUri = Uri.parse(uri);

Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

La modalità scelta tramite directionsmode viene trattata come un suggerimento: l’utente può comunque modificarla dall’interfaccia di Google Maps. Assicurati di passare una delle stringhe supportate (walking, driving, bicycling, transit) per evitare comportamenti imprevisti.

Domande Frequenti (FAQ)

Come aprire Google Maps senza installare l’SDK Maps?

Aprire Google Maps non richiede di integrare l’SDK Maps nella tua app. È sufficiente utilizzare un Intent implicito con azione ACTION_VIEW e uno degli URI supportati da Google Maps (ad esempio geo: o google.navigation:). In questo modo deleghi completamente il rendering della mappa all’app Google Maps già installata sul dispositivo, riducendo la complessità del tuo progetto e evitando di gestire chiavi API, billing e lifecycle delle mappe dentro la tua Activity.

Su dispositivi privi di Google Play Services è fondamentale non forzare il package (evitando setPackage("com.google.android.apps.maps")) e verificare sempre resolveActivity() prima di chiamare startActivity(). Come alternativa, puoi aprire una mappa in un browser usando una normale URL HTTPS di Google Maps. Tuttavia, se è presente un’altra app di mappe compatibile che dichiara il supporto agli stessi schemi URI (come geo:), l’Intent può comunque essere gestito.

Qual è la differenza tra geo: e google.navigation:?

Lo schema geo: serve principalmente per visualizzare una posizione sulla mappa o eseguire una ricerca geografica: puoi passare coordinate (es. geo:lat,lng) oppure una query testuale (es. geo:0,0?q=indirizzo). Diversamente, google.navigation: è pensato per avviare direttamente la navigazione turn-by-turn verso una destinazione, richiedendo il parametro q con indirizzo o coordinate (es. google.navigation:q=lat,lng). In sintesi: geo: mostra la mappa, google.navigation: avvia la guida.

È possibile aprire un punto di interesse (POI) su Google Maps?

Aprire un punto di interesse specifico (ad esempio un locale, un monumento o un POI salvato) è possibile usando le coordinate insieme a un’etichetta, come visto nella sezione sui marker, oppure utilizzando una query descrittiva con lo schema geo:0,0?q=. Ad esempio geo:0,0?q=Museo+Nazionale+Scienza+e+Tecnologia,+Milano aprirà Google Maps e mostrerà i risultati corrispondenti, mettendo in evidenza il POI più rilevante. Se conosci l’ID del luogo (place ID), puoi anche usare URL HTTPS di Google Maps per aprire direttamente la scheda del luogo nel browser.

Come aprire Google Maps in modalità satellite?

Attualmente, per aprire Google Maps in modalità satellite tramite Intent non esiste un parametro Android ufficiale e stabile per impostare direttamente il tipo di mappa (normale, satellite, ibrida) come avviene con l’SDK. In generale, l’app Google Maps ricorda l’ultimo tipo di mappa scelto dall’utente e lo riutilizza alla successiva apertura. Se ti serve un controllo completo e garantito sulla modalità satellite, la soluzione più affidabile è integrare l’SDK Maps nella tua app e impostare il tipo di mappa via codice (ad esempio googleMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE)), invece di affidarti agli Intent.

Conclusioni

In sintesi, per aprire Google Maps in modo corretto ed efficace con un android intent google maps è essenziale sfruttare un Intent implicito con azione ACTION_VIEW, delegando al sistema la scelta dell’app più adatta e mantenendo il codice disaccoppiato da una singola Activity. La personalizzazione dell’URI geo: consente di gestire coordinate, ricerche testuali e punti di interesse con grande flessibilità, mentre lo schema google.navigation: abilita la navigazione turn-by-turn verso una destinazione specifica. Infine, integrare il controllo tramite resolveActivity() prima di invocare startActivity() è una buona pratica imprescindibile per evitare crash, gestire in modo sicuro l’assenza di app compatibili e garantire un’esperienza utente stabile e professionale.