DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 
DevWare  
Novidade: DevMedia lança o DevWare - Saiba mais!

Como fazer uma ligação telefônica: Android

Nesse artigo aprenderemos como fazer uma ligação telefônica, e ainda como preencher o controle ListView por uma entidade.

[fechar]

Você não gostou da qualidade deste conteúdo?

(opcional) Você gostaria de comentar o que não lhe agradou?

Nesse artigo aprenderemos como fazer uma ligação telefônica, e ainda como preencher o controle ListView por uma entidade.  

Para fazer uma ligação precisamos de permissão do Sistema Operacional e para isso no arquivo AndroidManifest.xml devemos colocar a permissão android.permission.CALL_PHONE, veja sua implementação completa abaixo.

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

      package="br.com.LigacaoPessoa"

      android:versionCode="1"

      android:versionName="1.0">

    <application android:icon="@drawable/icon" android:label="@string/app_name">

        <activity android:name=".LigacaoPessoa"

                  android:label="@string/app_name">

            <intent-filter>

                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />

            </intent-filter>

        </activity>

    </application> 

      <uses-permission android:name="android.permission.CALL_PHONE"></uses-permission> 

    <uses-sdk android:minSdkVersion="7" />

</manifest>


Vamos começar criando uma entidade pessoa, conforme listagem abaixo.

public class EntidadePessoa {

 

      private int cdPessoa;

      private String Nome;

      private String Telefone;

     

      public String getTelefone() {

            return Telefone;

      }

      public void setTelefone(String telefone) {

            Telefone = telefone;

      }

      public int getCdPessoa() {

            return cdPessoa;

      }

      public void setCdPessoa(int cdPessoa) {

            this.cdPessoa = cdPessoa;

      }

      public String getNome() {

            return Nome;

      }

      public void setNome(String nome) {

            Nome = nome;

      }

     

      public EntidadePessoa(int cdPessoa, String Nome, String Telefone)

      {

            this.cdPessoa=cdPessoa;

            this.Nome = Nome;      

            this.Telefone = Telefone;

      }

     

      @Override

      public String toString() {

            // TODO Auto-generated method stub

            return cdPessoa + "-" + Nome + "-" + Telefone;

      }

}

 

Logo em seguida criaremos a classe pessoa que fará o preenchimento das mesmas.

import java.util.ArrayList;

import java.util.List;

 

public class Pessoa {

 

      public List<EntidadePessoa> getPessoa()

      {

            EntidadePessoa pessoa1 = new EntidadePessoa(1, "Fernando", "123");

            EntidadePessoa pessoa2 = new EntidadePessoa(1, "Maria", "456");

            EntidadePessoa pessoa3 = new EntidadePessoa(1, "José","789");

           

            List<EntidadePessoa> Pessoas = new ArrayList<EntidadePessoa>();

           

            Pessoas.add(pessoa1);

            Pessoas.add(pessoa2);

            Pessoas.add(pessoa3);

           

            return Pessoas;

      }

}

No arquivo layout/main.xml, deveremos inserir o controle ListView, veja seu código abaixo.

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:orientation="vertical"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    >

<TextView 

    android:layout_width="fill_parent"

    android:layout_height="wrap_content"

    android:text="@string/hello"

    />

<ListView android:id="@+id/listPessoas"

              android:layout_width="fill_parent"

              android:layout_height="wrap_content"></ListView>

</LinearLayout>


         

Na classe que representa a tela e a implementação de um Activity, inserimos o código abaixo.

import java.util.List;

import android.app.Activity;

import android.content.ActivityNotFoundException;

import android.content.Intent;

import android.net.Uri;

import android.os.Bundle;

import android.util.Log;

import android.view.ContextMenu;

import android.view.MenuItem;

import android.view.View;

import android.view.ContextMenu.ContextMenuInfo;

import android.widget.AdapterView;

import android.widget.AdapterView.OnItemLongClickListener;

import android.widget.ArrayAdapter;

import android.widget.ListView;

 

public class LigacaoPessoa extends Activity {

     

      private List<EntidadePessoa> Pessoas ;

    private int _posicao;

     

      /** Called when the activity is first created. */

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);       

      

        final ListView listaPessoas = (ListView)findViewById(R.id.listPessoas);

   

        Pessoa pessoa = new Pessoa();

       

       Pessoas = pessoa.getPessoa();

      

       // adapter que sera o source para a listview

        ArrayAdapter<EntidadePessoa> adapter = new ArrayAdapter<EntidadePessoa>(this,android.R.layout.simple_list_item_1, Pessoas);

       

        //seta o adapter para o listview

        listaPessoas.setAdapter(adapter);

       

        //evento para o click

        listaPessoas.setOnItemLongClickListener(new OnItemLongClickListener() {

 

                  @Override

                  public boolean onItemLongClick(AdapterView<?> arg0, View arg1,

                             int posicao, long id) {

                        _posicao = posicao;

                        // TODO Auto-generated method stub

                        //registra o menu após o click

                        registerForContextMenu(listaPessoas);

                        return false;

                  }

        });

    }

   

    @Override

    public void onCreateContextMenu(ContextMenu menu, View v,

            ContextMenuInfo menuInfo) {

      // TODO Auto-generated method stub

      super.onCreateContextMenu(menu, v, menuInfo);

       //cria o menu para fazer a ligação     

      menu.add(0,0,0, "Ligar");

    }

   

    @Override

    public boolean onContextItemSelected(MenuItem item) {

      // TODO Auto-generated method stub

     

      if(item.getItemId()==0)

      {

            try

            {  

                  //Tipos de chamadas

                  //ACTION_DIAL

                  //ACTION_CALL

                 

                  Intent chamada = new Intent(Intent.ACTION_DIAL);

           

                  //pega a posição da pessoa

                  chamada.setData(Uri.parse("tel:" + Pessoas.get(_posicao)));

                  startActivity(chamada);

            }

            catch(ActivityNotFoundException act)

            {

                  Log.e("Exemplo de chamada", "falha", act);

            }

      }

     

      return super.onContextItemSelected(item);

 

    }

}

Após executarmos a aplicação devemos ter o resultado conforme imagem abaixo.




Ao clicar em um nome na listagem veremos o menu com a opção Ligar, conforme imagem abaixo.



No método onContextItemSelected da classe LigacaoPessoa, criamos um Intent passando no seu construtor o tipo de ligação,  ACTION_DIAL ou  ACTION_CALL. ACTION_DIAL abre a janela com a opção de alterar o telefone, já ACTION_CALL, faz a ligação direta, veja seus exemplos abaixo.



Espero que tenham gostado e até a próxima



Fernando Rodrigues Da Silva
MCTS - Pós graduado em Engenharia de Software. Trabalha com a plataforma .NET há 9 anos, atualmente trabalha na FCamara.
O que você achou deste post?

    2 COMENTÁRIOS

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.



Fabio Baroni
Fernando, boa noite !

Muito bom o seu Post. Estou aprendendo a desenvolver programas para Android. Ja fiz algumas aplicacoes, inclusive uma agenda, mas achei a sua mais interessante.

Fui estudando o seu codigo e colando o Eclipse. Deu alguns errinhos e fui corrigindo autimaticamente pelo Eclipse. Porem o programa não roda quando faço a simulação, apresenta um erro.

Você teria o codigo fonte desses arquivos para me enviar ? Nao sei se o Eclipse colocou coisa onde não deveria e por isso nao roda.
Meu e-mail é: emeiodofabio@gmail.com

Grato,

Fabio
[há +1 ano] - Responder

 

[autor] Fernando Rodrigues Da Silva
Boa tarde, Fabio, tudo bem?

Eu não tenho mais esse fonte.

Mas que erro acontence, para que eu posso ajuda-lo.

Qualquer coisa pode me mandar para meu e-mail.

nando_dasilva@ig.com.br

abs
[há +1 ano] - Responder
 
Cursos relacionados
Publicidade
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]


Este post está fechado. Saiba mais sobre a assinatura MVP!
[Fechar] Você precisa estar logado para dar seu feedback.

Clique aqui para efetuar o login

Caso não tenha um cadastro DevMedia, clique aqui para se cadastrar (gratuito)
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2013 - Todos os Direitos Reservados a web-03