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

Android: Erro ao tentar efetuar uma ligação

Toda vez que tento fazer uma ligação um erro é gerado e a aplicação é encerrada. Polo que pude entender, a aplicação não esta encontrado uma classe que faça uma ligação.

Implementação do item de menu

 mnOn.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(MenuItem item) {
                Intent intente = new Intent("tel:"+Intent.ACTION_CALL);
                Uri uri = Uri.parse(student.getTelefone());
                intente.setData(uri);
                startActivity(intente);
                return false;
            }
        });

Erro:

11-09 19:40:00.963      893-893/cadastro.caelum.curso.com.br.cadastrocaelum E/AndroidRuntime﹕ FATAL EXCEPTION: main
    android.content.ActivityNotFoundException: No Activity found to handle Intent { act=tel:android.intent.action.CALL dat=99443232 }
            at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1545)
            at android.app.Instrumentation.execStartActivity(Instrumentation.java:1416)
            at android.app.Activity.startActivityForResult(Activity.java:3351)
            at android.app.Activity.startActivityForResult(Activity.java:3312)
            at android.app.Activity.startActivity(Activity.java:3522)
            at android.app.Activity.startActivity(Activity.java:3490)
            at cadastro.caelum.curso.com.br.cadastrocaelum.LisStudentActivity$4.onMenuItemClick(LisStudentActivity.java:104)
            at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:144)
            at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:874)
            at com.android.internal.view.menu.MenuDialogHelper.onClick(MenuDialogHelper.java:167)
            at com.android.internal.app.AlertController$AlertParams$3.onItemClick(AlertController.java:924)
            at android.widget.AdapterView.performItemClick(AdapterView.java:298)
            at android.widget.AbsListView.performItemClick(AbsListView.java:1086)
            at android.widget.AbsListView$PerformClick.run(AbsListView.java:2859)
            at android.widget.AbsListView$1.run(AbsListView.java:3533)
            at android.os.Handler.handleCallback(Handler.java:615)
            at android.os.Handler.dispatchMessage(Handler.java:92)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:4745)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:511)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
            at dalvik.system.NativeStart.main(Native Method)
2 respostas
solução!

Oi Marlon,

sua interpretação da stacktrace está correta. De fato, o Android não encontrou uma activity capaz de responder à action tel:android.intent.action.CALL.

Na realidade, a action da intent deve ser somente android.intent.action.CALL (sem o tel:).

Esse tel: deve ser passado, junto com o telefone do aluno, como conteúdo dessa Intent, assim:

Intent intent = new Intent(Intent.ACTION_CALL);
Uri uri = Uri.parse("tel:" + aluno.getTelefone());
intent.setData(uri);
startActivity(intent);

Abraço.

Muito obrigado!

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