Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Abrir google maps ao clicar em botão

Olá, Criei um pequeno aplicativo como teste para tentar abrir o google maps ao clicar em um botao e o mesmo nao abre apos efetuar o click. Gostaria de saber o que estaria faltando em meu código.

package com.example.maps;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {

    Button btnMapa;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        btnMapa = findViewById(R.id.btnMapa);

       mapa();

    }

    public void mapa(){
        Intent intentMapa = new Intent(Intent.ACTION_VIEW);
        intentMapa.setData(Uri.parse(" -22.939004, -47.052572 "));

    }
}
2 respostas
solução!

Fala Bruno, beleza?

tem 2 problemas:

1 - O intent do google maps não está montado corretamente. O correto de acordo com a documentação é:

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

2 - Você precisa mandar abrir o intent com o método abaixo:

 startActivity(mapIntent);

Código completo:

Uri gmmIntentUri = Uri.parse("geo:37.7749,-122.4194");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
if (mapIntent.resolveActivity(getPackageManager()) != null) {
    startActivity(mapIntent);
}

Link útil: Documentação do google maps para intents:

https://developers.google.com/maps/documentation/urls/android-intents

Ótima explicação, só tive um único "problema"

colocando a latitude e longitude como você mencionou...

Uri gmmIntentUri = Uri.parse("geo:37.7749,-122.4194");

percebi que ao abrir o Google Maps ele não mostrava um ponto. Resolvi da seguinte forma: adicionei logo apos o geo: os caracteres ?q= , ficando assim:

Uri gmmIntentUri = Uri.parse("geo:?q=37.7749,-122.4194");

deste modo o Maps marcava o ponto.

2 Teria como eu escolher com qual aplicativo ele ira abrir a rota? Google Maps, Waze, etc ? Li sobre o createChooser(); mas não obtive sucesso.

Desde já agradeço.