Como Enviar e Receber SMS Em Um Aplicativo Android _ Tutoriandroid

download Como Enviar e Receber SMS Em Um Aplicativo Android _ Tutoriandroid

of 6

Transcript of Como Enviar e Receber SMS Em Um Aplicativo Android _ Tutoriandroid

  • 17/10/13 Como enviar e receber SMS em um Aplicativo Android | Tutoriandroid

    www.tutoriandroid.com/2012/05/como-enviar-e-receber-sms-em-um.html 1/6

    T U T O R I A N D R O I D

    Tutoriais acerca do desenvolvimento de

    aplicativos e jogos para Android.

    F A C E B O O K B A D G E

    Gustavo Carvalho

    Create Your Badge

    P O S T A G E N S P O P U L A R E S D A S E M A N A

    Como publicar no Google Play

    Desenvolvendo jogos para Android - Parte 1 -

    Criando elementos grficos

    Como enviar e receber SMS em um Aplicativo

    Android

    Como criar Interfaces para o Android - Parte 1

    P O S T A G E N S

    2012 (27)

    Agosto (1)

    Julho (5)

    Junho (2)

    Maio (5)

    Como criar um jogo estilo plataforma

    Lidando com tarefas pesadas com

    AsyncTask

    Como fazer uma Splash Screen

    Como enviar e receber SMS em um

    Aplicativo Android...

    Como publicar no Google Play

    Abril (3)

    Maro (4)

    Fevereiro (3)

    Janeiro (4)

    M A R C A D O R E S

    action bar (1)

    activity (6)

    admob (2)

    T E R A - F E I R A , 8 D E M A I O D E 2 0 1 2

    Como enviar e receber SMS em um Aplicativo AndroidSMS, que significa Short Message Service (Servio de

    Mensagens Curtas), se popularizou nos

    dispositivos mveis h bastante tempo e no Brasil ficou

    popularmente conhecido como Torpedo. Consiste no

    envio de mensagens com at 160 caracteres para um

    celular.

    Em suas aplicaes para Android voc pode querer ou

    precisar fazer uso deste recurso. A plataforma Android

    fornece bons mtodos de envio e recebimento de SMS

    pela aplicao e isso importante pois alm de poder

    enviar um SMS sua aplicao pode ler um SMS e

    executar alguma ao a partir dele, ou seja, voc pode

    usar SMS para que aplicativos em dispositivos distintos

    troquem informaes e executem aes remotamente.

    Se voc deseja apenas enviar um SMS simples, onde o

    usurio possa modificar a mensagem antes de enviar, escolher da agenda o contato e voc no precisar ter

    controle de saber se o SMS foi enviado ou no e nem precisa salvar essas informaes ento o melhor jeito

    usar o aplicativo de mensagens do prprio dispositivo do usurio, pois alm de abstrair muito o seu trabalho

    como desenvolvedor tambm facilita a vida do usurio oferecendo uma interface que ele j conhece.

    Ento o que precisamos fazer apenas chamar o aplicativo de mensagens com o texto que queremos passar

    e/ou o nmero:

    Intent smsIntent = new Intent(Intent.ACTION_VIEW);

    smsIntent.setType("vnd.android-dir/mms-sms");

    smsIntent.putExtra("address", "NUMERO DO TELEFONE");

    smsIntent.putExtra("sms_body","MENSAGEM A SER ENVIADA");

    startActivity(smsIntent);

    Feito isso a mensagem e nmero passado para outra aplicao e no nos preocupados com o

    envio propriamente dito. Usei essa estratgia no aplicativo Mensagens para Celular.

    Mas se voc quiser enviar o SMS direto da sua aplicao o processo um pouco mais complexo mas ainda

    bastante simples. Primeiro pega-se a instancia do SmsManager:

    SmsManager smsManager = SmsManager.getDefault();

    Depois utiliza o seguinte comando se voc tiver certeza que sua mensagem ter menos de 160 caracteres:

    smsManager.sendTextMessage("07187853344", null, "Mensagem que estou enviando", n

    ull, null);

    Sendo os parmetros:

    Nmero que ir receber o SMS;

    "Centro de servio" usado, use null;

    A mensagem a ser enviada;

    Um PendingIntent que ser "broadcastada" quando o SMS for enviado;

    Um PendingIntent que ser "broadcastada" quando o SMS for recebido;

    Se voc no tem certeza se sua mensagem ser menor que 160 caracteres use o seguinte mtodo:

    smsManager.sendMultipartTextMessage ("07187853344", null, smsManager.divideMessa

    ge("Mensagem muito grande que estou enviando"), null, null);

    Buscar..

    T U T O R I A N D RO I D

    Home Apps Contato Sobre

    Refil para Purificador degua Puri-Ice, Puritronicou Purimix - LatinaWalmart

    S hoje!Oportunidade nica.Grandes Ofertas.

    R$55,90

  • 17/10/13 Como enviar e receber SMS em um Aplicativo Android | Tutoriandroid

    www.tutoriandroid.com/2012/05/como-enviar-e-receber-sms-em-um.html 2/6

    ambiente de desenvolvimento (1)

    animation (2)

    api 14 (2)

    api 7 (2)

    app widget (1)

    armazenamento (2)

    AsyncTask (1)

    avanado (6)

    background (3)

    configuraes (2)

    design (1)

    game (9)

    game engine (3)

    google play (2)

    handler (2)

    imagem (3)

    iniciante (7)

    intent (3)

    interface (1)

    intermediario (11)

    live wallpaper (1)

    menu (2)

    mercado (2)

    no-tutorial (2)

    plataforma (1)

    projeto (1)

    SharedPreferences (2)

    sms (1)

    som/musica (2)

    splash screen (1)

    sprite (3)

    SQLite (1)

    thread (4)

    toast (1)

    ui design (1)

    ux design (1)

    view (2)

    I N S C R E V E R - S E

    S E G U I D O R E S

    Participar deste siteGoogle Friend Connect

    Membros (35) Mais

    J um membro? Fazer login

    O parmetros so os mesmos o que muda agora que usamos uma funo para quebrar a mensagem caso

    seja necessrio, e passamos tambm uma lista de PendingIntent ao invs de apenas uma (uma

    PendingIntent para cada pedao da mensagem). Usei essa estratgia no aplicativo Amor por SMS.

    Para usar esses mtodos necessrio declarar uma permisso no AndroidManifest:

    Aproveitando que estamos no AndroidManifest, para receber mensagens necessario declarar:

    E declarar tambm o BroadcastReceiver que ir receber a chegada do SMS. Coloque isso antes de

    :

    Feito isso vamos criar nossa classe SmsReceiver:

    public class SmsReceiver extends BroadcastReceiver

    {

    @Override

    public void onReceive(Context context, Intent intent)

    {

    Bundle bundle = intent.getExtras();

    SmsMessage[] msgs = null;

    String str = "";

    if (bundle != null)

    {

    Object[] pdus = (Object[]) bundle.get("pdus");

    msgs = new SmsMessage[pdus.length];

    for (int i=0; i

  • 17/10/13 Como enviar e receber SMS em um Aplicativo Android | Tutoriandroid

    www.tutoriandroid.com/2012/05/como-enviar-e-receber-sms-em-um.html 3/6

    s isso. Mas as possibilidades so imensas! Por exemplo, um aplicativo que responde automaticamente com

    a posio ao receber um SMS, fazer algum tipo de jogo a 2 usando SMS para comunicao, etc.

    POSTADO POR GUSTAV O CARV ALHO S 08:0 0

    M ARCADORES: INTENT, INTERM EDIARIO , S M S

    2 3 c o m e n t r i o s :

    Sandro Ricardo at 22 de agosto de 2012 22:50 disse...

    Muito bom tutorial deu certinho aqui. aproveitando gostaria de perdir uma ajuda, como fez pra cria a opcao

    enviar para outras midias no seu app amor por sms, quando precionamos a mensagem q desejamos

    enviar???

    agradeco desde ja

    abs

    sandro

    Gustavo Carvalho at 23 de agosto de 2012 13:26 disse...

    @Sandro muito simples. Exemplo:

    Intent intent = new Intent(Intent.ACTION_SEND);

    intent.setType("text/plain");

    intent.putExtra(Intent.EXTRA_TEXT, "Essa a String a ser compartilhada. Substitua pela String que

    quiser");

    startActivity(Intent.createChooser(intent, getString(R.string.selecionar_midia)));

    Thiago at 26 de setembro de 2012 12:28 disse...

    fiz como tutorial de envio sms direto testei

    , nao esta enviando nao para um numero fictcio no emulador . o que pode ter dado errado? Obg

    Gustavo Carvalho at 1 de outubro de 2012 11:21 disse...

    @Thiago: No entendi muito bem, mas acho que no tem como enviar sms pelo emulador.

    Natural Esttica at 28 de outubro de 2012 13:22 disse...

    Este comentrio foi removido pelo autor.

    Renan Barbosa at 28 de outubro de 2012 13:24 disse...

    Ol Gustavo, timo tutorial, sou iniciante em Android e consegui fazer a aplicao enviar e receber sms,

    mas tenho um seguinte problema, eu preciso passar um dado recebido por mensagem para uma

    MapActivity, por exemplo, eu recebo um sms com coordenadas de um mapa, ento pego essas coordenadas

    na classe BroadcastReceiver e mando para uma Activity que contem um MapView e que ir exibir estas

    coordenadas, por um acaso voc teria uma dica que possa me ajudar, j tentei de vrias formas e no

    Recomende isto no Google

  • 17/10/13 Como enviar e receber SMS em um Aplicativo Android | Tutoriandroid

    www.tutoriandroid.com/2012/05/como-enviar-e-receber-sms-em-um.html 4/6

    obtive sucesso. Obrigado.

    Gustavo Carvalho at 19 de novembro de 2012 05:44 disse...

    @Renan: Ol! Sei que a resposta est um pouco atrasada mas enfim... Voc pode receber sua mensagem

    por um BroadcastReceiver e chamar sua Activity e passar as informaes da mensagem atravs dos Extras

    da propria Intent usada para chamar a Activity. Alternativamente, se sua activity j estiver rodando, voc

    poderia usar o LocalBroadcastManager para mandar uma mensagem especifica para essa Activity, mas

    acredito que a primeira opo seja mais o seu caso.

    Annimo at 29 de novembro de 2012 09:22 disse...

    Descobri esta semana a aplicao CrowdSMS. a ideal para enviar SMS quando estamos assistir um

    concerto ou numa festa em que est muita gente e no conseguimos enviar a sms.

    (https://play.google.com/store/apps/details?id=pt.vu.carlosfernandes.crowdsms)

    Annimo at 30 de novembro de 2012 11:12 disse...

    @Felipe Opa excelente post, tenho uma dvida. Gostaria de saber de como seria um enviar email pela app e

    seu eu puder abusar um exemplo de como criar um evento pela app, por exemplo quando for dia tal e hora

    tal lanar um Toast e vibrar de 20 em 20 min 3 vezes por exemplo seria algo parecido com o alarme s que

    o alarme s verifica hora enfim rsrs. Se possvel ok? obrigado.

    Gustavo Carvalho at 6 de dezembro de 2012 05:11 disse...

    @Annimo: Voc pode enviar e-mail por Intents, isso , seu app vai mandar informaes para que outro app

    (como o gmail) mande o email:

    /* Create the Intent */

    final Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);

    /* Fill it with Data */

    emailIntent.setType("plain/text");

    emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[]{"[email protected]"});

    emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Subject");

    emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, "Text");

    /* Send it off to the Activity-Chooser */

    context.startActivity(Intent.createChooser(emailIntent, "Send mail..."));

    Para enviar diretamente do seu app voc precisaria ter acesso a um servidor de e-mail, e no sei como

    seria feito isso exatamente.

    Para criar o evento voc pode usar AlarmManager, onde, basicamente, voc programa um pedao de cdigo

    (PendingIntent) para ser executado em um determinado momento no futuro.

    Gabriel Dilly at 12 de dezembro de 2012 22:04 disse...

    Segui os passos mas alguns coisa no deu certo. Voc pode disponibilizar os cdigos s pra eu conferir?

    Vlw

    Gustavo Carvalho at 16 de dezembro de 2012 07:20 disse...

    @Gabriel: O que exatamente voc tentou fazer? No tenho mais o cdigo completo que usei mas todo o

    cdigo necessrio est aqui na postagem. Cheque coisas como o AndroidManifest, as vezes so pequenas

    coisas que fazem o programa no funcionar.

    Gabriel Dilly at 18 de dezembro de 2012 23:38 disse...

    @Gustavo: Eu vou revisar de novo os cdigos. Vlw

    Concentra Mas No Sai at 11 de maro de 2013 12:45 disse...

  • 17/10/13 Como enviar e receber SMS em um Aplicativo Android | Tutoriandroid

    www.tutoriandroid.com/2012/05/como-enviar-e-receber-sms-em-um.html 5/6

    Parabns pelo tutorial.

    Se for instalado num aparelho, como fica a "concorrncia" com programa de mensagens? Ou seja, ao chegar

    uma mensagem, ela ser recebida pelo aplicativo nativo e nessa aplicao?

    Obrigado / Marcelo

    Gustavo Carvalho at 19 de maro de 2013 09:50 disse...

    Ser recebida pelos dois e por mais qualquer app que esteja "ouvindo" novas mensagens.

    Annimo at 23 de abril de 2013 01:15 disse...

    cara eu no entendi como faz esse aplicativo sou novato algum tem como disponibilizar o projeto?

    Annimo at 24 de abril de 2013 12:14 disse...

    da para impedir que o recebedor normal de sms do tlm nao receba as sms que nos recebemos no nosso

    programa?

    Rafael Alk at 29 de abril de 2013 13:01 disse...

    Muito obrigado!!

    Habbo DCR at 18 de julho de 2013 00:46 disse...

    ol, queria saber como selecionar o chip que ser usado para enviar a mensagem caso o aparelho seja dual

    sim, ou tenha mais de 2 ou 3 chips... agradeo

    Unknown at 20 de julho de 2013 14:35 disse...

    funcionou, mas envio as mensagens para meus clientes. o problema que volta e meia aparece a

    mensagem "...um grande nmero de mensagens SMS esta sendo enviada..." e trava tudo, como posso

    tratar isso?

    Elton monteiro at 20 de julho de 2013 19:03 disse...

    Gustavo fiz minha aplicao de sms, mas gostaria de implementar algo mais como: bloquear o recebimento

    de alguns numeros escolhido pelo usurio! como fao para qnd ele identifica o numero matar o broadCast,

    pois a minha notificao eu interrompo mas a nativa mostra! Agradecido desde ja! Abraos

    Junior Fa at 24 de julho de 2013 15:44 disse...

    Excelente post Gustavo! Uma dvida, consigo salvar um texto na tela de sms do aparelho.

    Exemplo: Tenho uma aplicao que ler dados de um banco na web e gostaria de salvar essa mensagem na

    tela de sms para que alerte o usuario.

    Abraos

    Annimo at 25 de julho de 2013 23:31 disse...

    Pergunta muito boba, mas por q sou iniciante... onde deve ficar a classe SMSreciver? ela deve ser uma

    classe propria, tem que est dentro do codigo fonte do aplicativo ou tanto faz o local? tutorial excelente

    bem Objetivo, parabens.

    P o s ta r u m c o m e n t r i o

  • 17/10/13 Como enviar e receber SMS em um Aplicativo Android | Tutoriandroid

    www.tutoriandroid.com/2012/05/como-enviar-e-receber-sms-em-um.html 6/6

    Postagem mais recente Postagem mais antiga

    Digite seu comentrio...

    Comentar como: Conta do Google

    Publicar

    Visualizar

    L i n k s p a r a e s ta p o s t a g e m

    Criar um link

    Incio

    2011 Tutoriandroid | Recode by Ardhiansyam | Based on Android Developers Blog