Sunteți pe pagina 1din 6

17/10/13

Como enviar e receber SMS em um Aplicativo Android | Tutoriandroid

TUT ORIAN DROID


Home Apps Contato Sobre

T ER A- FEI R A, 8 DE M AI O DE 2012

Como enviar e receber SMS em um Aplicativo Android


SMS, 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:

Buscar..

Refil para Purificador de gua Puri-Ice, Puritronic ou Purimix - Latina


Walmart

S hoje! Oportunidade nica. Grandes Ofertas.

R$55,90

T UT O R I A NDR O I D

Tutoriais acerca do desenvolvimento de aplicativos e jogos para Android.

FACEB O O K B ADG E

Gustavo Carvalho

Create Your Badge

P O S T A G ENS P O P ULA R E S DA S EM A NA

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

I n t e n ts m s I n t e n t=n e wI n t e n t ( I n t e n t . A C T I O N _ V I E W ) ; s m s I n t e n t . s e t T y p e ( " v n d . a n d r o i d d i r / m m s s m s " ) ; s m s I n t e n t . p u t E x t r a ( " a d d r e s s " ," N U M E R OD OT E L E F O N E " ) ; s m s I n t e n t . p u t E x t r a ( " s m s _ b o d y " , " M E N S A G E MAS E RE N V I A D A " ) ; s t a r t A c t i v i t y ( s m s I n t e n t ) ;

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:

P O S T AG ENS

2012 (27) Agosto (1) Julho (5) Junho (2) Maio (5)

S m s M a n a g e rs m s M a n a g e r=S m s M a n a g e r . g e t D e f a u l t ( ) ;

Como criar um jogo estilo plataforma Lidando com tarefas pesadas com AsyncTask Como fazer uma Splash Screen

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

s m s M a n a g e r . s e n d T e x t M e s s a g e ( " 0 7 1 8 7 8 5 3 3 4 4 " ,n u l l ," M e n s a g e mq u ee s t o ue n v i a n d o " ,n u l l ,n u l l ) ;


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:

Como enviar e receber SMS em um Aplicativo Android... Como publicar no Google Play Abril (3) Maro (4) Fevereiro (3) Janeiro (4)

M AR CADO R ES

action bar (1)

s m s M a n a g e r . s e n d M u l t i p a r t T e x t M e s s a g e( " 0 7 1 8 7 8 5 3 3 4 4 " ,n u l l ,s m s M a n a g e r . d i v i d e M e s s a g e ( " M e n s a g e mm u i t og r a n d eq u ee s t o ue n v i a n d o " ) ,n u l l ,n u l l ) ;

activity (6) admob (2)

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

1/6

17/10/13

Como enviar e receber SMS em um Aplicativo Android | Tutoriandroid


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)
< r e c e i v e ra n d r o i d : n a m e = " . S m s R e c e i v e r " > < i n t e n t f i l t e r > < a c t i o na n d r o i d : n a m e = " a n d r o i d . p r o v i d e r . T e l e p h o n y . S M S _ R E C E I V E D "/ > < / i n t e n t f i l t e r > < / r e c e i v e r >

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:

< u s e s p e r m i s s i o na n d r o i d : n a m e = " a n d r o i d . p e r m i s s i o n . S E N D _ S M S " / >

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

< u s e s p e r m i s s i o na n d r o i d : n a m e = " a n d r o i d . p e r m i s s i o n . R E C E I V E _ S M S " / > E declarar tambm o BroadcastReceiver que ir receber a chegada do SMS. Coloque isso antes de </application>:

interface (1) intermediario (11) live wallpaper (1) menu (2) mercado (2) no-tutorial (2) plataforma (1)

Feito isso vamos criar nossa classe SmsReceiver:

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)

p u b l i cc l a s sS m s R e c e i v e re x t e n d sB r o a d c a s t R e c e i v e r { @ O v e r r i d e p u b l i cv o i do n R e c e i v e ( C o n t e x tc o n t e x t ,I n t e n ti n t e n t ) { B u n d l eb u n d l e=i n t e n t . g e t E x t r a s ( ) ; S m s M e s s a g e [ ]m s g s=n u l l ; S t r i n gs t r=" " ; i f( b u n d l e! =n u l l ) { O b j e c t [ ]p d u s=( O b j e c t [ ] )b u n d l e . g e t ( " p d u s " ) ; m s g s=n e wS m s M e s s a g e [ p d u s . l e n g t h ] ; f o r( i n ti = 0 ;i < m s g s . l e n g t h ;i + + ) { m s g s [ i ]=S m s M e s s a g e . c r e a t e F r o m P d u ( ( b y t e [ ] ) p d u s [ i ] ) ; } / /F a z e ra l g oc o mm s g s } } }

I NS CR EV ER - S E

Postagens Comentrios

Agora voc ter provavelmente apenas um SmsMessage na lista mas pode haver mais, e pode fazer o que quiser com esse objeto. Atravs do comando getDisplayOriginatingAddress() possvel pegar o nmero que enviou o SMS e atravs do comando getDisplayMessageBody() pegar o contedo da mensagem. E como fazer par testar o recebimento de SMS pelo emulador? Muito simples! Basta ir na perspectiva DDMS, com o emulador rodando, seleciona-lo e logo em baixo, em Telephony Actions, digitar um nmero, selecionar SMS, digitar uma mensagem e clicar em send. Como mostra na figura:
S EG UI DO R ES

Participar deste site


Google Friend Connect

Membros (35) Mais

J um membro? Fazer login

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

2/6

17/10/13

Como enviar e receber SMS em um Aplicativo Android | Tutoriandroid

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.
P O S T A DO P O R G US T A V O C A R V A LHO S 08: 0 0 M A R C A DO R ES : I NT ENT , I NT ER M EDI A R I O , S M S

Recomende isto no Google

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

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

3/6

17/10/13
obtive sucesso. Obrigado.

Como enviar e receber SMS em um Aplicativo Android | Tutoriandroid

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[]{"to@email.com"}); 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...


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

17/10/13

Como enviar e receber SMS em um Aplicativo Android | Tutoriandroid

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

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

5/6

17/10/13

Como enviar e receber SMS em um Aplicativo Android | Tutoriandroid

Digite seu comentrio...

Comentar como:

Conta do Google

Publicar

Visualizar

L i n k s pa ra e s ta po st a ge m Criar um link Postagem mais recente Incio Postagem mais antiga

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

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

6/6

S-ar putea să vă placă și