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

Item do Menu "Ver no Mapa"

Quando clico no item "Ver no Mapa" da ListaAlunos, aparece a mensagem: "Unfortunately, Agenda has stopped"

Minha implementação no onCreateContextMenu do ListaAlunos está da seguinte forma:

    @Override
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {

        MenuItem ligar = menu.add("Ligar");

        ligar.setOnMenuItemClickListener(new OnMenuItemClickListener() {

            @Override
            public boolean onMenuItemClick(MenuItem item) {
                Intent irParaTelaDeDiscagem = new Intent(Intent.ACTION_CALL);
                Uri discarPara = Uri.parse("tel:"+aluno.getTelefone());
                irParaTelaDeDiscagem.setData(discarPara);

                startActivity(irParaTelaDeDiscagem);                
                return false;
            }
        });

        MenuItem sms = menu.add("Enviar SMS");
        sms.setOnMenuItemClickListener(new OnMenuItemClickListener() {

            @Override
            public boolean onMenuItemClick(MenuItem item) {
                Intent enviarSMS = new Intent(Intent.ACTION_VIEW);                
                Uri smsPara = Uri.parse("sms:"+aluno.getTelefone());
                enviarSMS.setData(smsPara );

                startActivity(enviarSMS);
                return false;
            }
        });

        MenuItem site = menu.add("Navegar no site");
        site.setOnMenuItemClickListener(new OnMenuItemClickListener() {

            @Override
            public boolean onMenuItemClick(MenuItem item) {
                Intent irParaOSite = new Intent(Intent.ACTION_VIEW);
                Uri localSite = Uri.parse("http://"+aluno.getSite());
                irParaOSite.setData(localSite);                
                startActivity(irParaOSite);
                return false;
            }
        });

        MenuItem deletar = menu.add("Deletar");

        deletar.setOnMenuItemClickListener(new OnMenuItemClickListener() {

            @Override
            public boolean onMenuItemClick(MenuItem item) {
                AlunoDAO dao = new AlunoDAO(ListaAlunos.this);
                dao.deletar(aluno);
                dao.close();                    
                carregaLista();
                return false;
            }
        });        

        MenuItem mapa = menu.add("Ver no mapa");
        mapa.setOnMenuItemClickListener(new OnMenuItemClickListener() {

            @Override
            public boolean onMenuItemClick(MenuItem item) {
                Intent verNoMapa = new Intent(Intent.ACTION_VIEW);
                Uri localizacaoAluno = Uri.parse("geo:0,0?z=14&q=" + aluno.getEndereco());
                verNoMapa.setData(localizacaoAluno);
                startActivity(verNoMapa);
                return false;
            }
        });


        MenuItem email = menu.add("Enviar e-mail");
        email.setOnMenuItemClickListener(new OnMenuItemClickListener() {

            @Override
            public boolean onMenuItemClick(MenuItem item) {
                Intent enviarEmail = new Intent(Intent.ACTION_SEND);
                enviarEmail.setType("message/rtc822");
                enviarEmail.putExtra(Intent.EXTRA_EMAIL, new String[] {"vanessamjansen@gmail.com"});
                enviarEmail.putExtra(Intent.EXTRA_SUBJECT, "Testando Subject");
                enviarEmail.putExtra(Intent.EXTRA_TEXT, "Corpo do email");
                startActivity(enviarEmail);
                return false;
            }
        });

        super.onCreateContextMenu(menu, v, menuInfo);
    }

Alguém saberia porque está dando esse erro com minha implementação?

5 respostas

Olá Vanessa, não sei se você já obteve a sua resposta. Mas após fazer algumas pesquisas, pude notar que o erro pode ser que a nossa AVD não tenha nenhum aplicativo de mapas instalado. Sendo assim, ele não acha nenhuma Atividade para este comando

Uri localizacaoAluno = Uri.parse("geo:0,0?z=14&q=" + aluno.getEndereco());

Portanto, tente substituir este trecho de código, por este:

Uri localizacaoAluno = Uri.parse("http://maps.google.com/maps?q="+aluno.getEndereco());

No meu app, isso deu certo! =)

MenuItem mapa = menu.add("Achar no Mapa");

Intent intentMapa = new Intent(Intent.ACTION_VIEW);
        intentMapa.setData(Uri.parse("geo:0,0?z=14&q="
                + alunoAtPosition.getEndereco()));
        mapa.setIntent(intentMapa);

No AVD não dará erro!, mais não achara aplicação do google maps instalada, tente rodar em um mobile e executara normalmente.

Oi Vanessa!

Você pode mandar a stacktrace aqui também?

o codigo que o guilherme falou funciona no emulador para poder testar, caso você queira testar com um aplicativo de mapas, tente instalar o seu apk em um celular ou tablet que possua um app de mapas.

solução!

Olá Vanessa, tudo bem?

Estou fechando este tópico. Se ainda precisar de ajuda, fique à vontade para criar outro.

Abraços!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software