[resolvido] erro ao receber sms - android

10 respostas
S

Meu codigo que ouve quando um sms chega:

public class SmsReceiver extends BroadcastReceiver
{	

        @Override
	public void onReceive(Context context, Intent intent)
	{
			Bundle bundle = intent.getExtras();
			Object[] pdus = (Object[]) bundle.get("pdus");
			SmsMessage message = SmsMessage.createFromPdu((byte[])pdus[0]);
			String sms = message.getMessageBody();
			Log.v("*** onReceiveSMS", sms);
			Toast.makeText(context, "SMS Recebida!", Toast.LENGTH_SHORT).show();	
		
	}
	
}

Mas toda vez que recebe sms, da pau

log:

09-23 00:23:10.870: DEBUG/GoogleLoginService(188): onBind: Intent { act=android.accounts.AccountAuthenticator cmp=com.google.android.gsf/.loginservice.GoogleLoginService } 09-23 00:23:10.900: WARN/GoogleLoginService(188): Device has no accounts: sending Intent { act=com.google.android.gsf.LOGIN_ACCOUNTS_MISSING } 09-23 00:23:11.206: DEBUG/Mms:app(250): getSmsNewMessageNotificationInfo: count=1, first addr=[telefone removido], thread_id=1 09-23 00:23:11.640: DEBUG/MediaPlayer(58): Couldn't open file on client side, trying server side 09-23 00:23:11.700: ERROR/MediaPlayerService(33): Couldn't open fd for content://settings/system/notification_sound 09-23 00:23:11.710: ERROR/MediaPlayer(58): Unable to to create media player 09-23 00:23:11.760: WARN/NotificationService(58): error loading sound for content://settings/system/notification_sound 09-23 00:23:11.760: WARN/NotificationService(58): java.io.IOException: setDataSource failed.: status=0x80000000 09-23 00:23:11.760: WARN/NotificationService(58): at android.media.MediaPlayer.setDataSource(Native Method) 09-23 00:23:11.760: WARN/NotificationService(58): at android.media.MediaPlayer.setDataSource(MediaPlayer.java:716) 09-23 00:23:11.760: WARN/NotificationService(58): at android.media.MediaPlayer.setDataSource(MediaPlayer.java:671) 09-23 00:23:11.760: WARN/NotificationService(58): at com.android.server.NotificationPlayer$CreationAndCompletionThread.run(NotificationPlayer.java:88) 09-23 00:23:12.070: DEBUG/dalvikvm(58): GC_FOR_MALLOC freed 7449 objects / 726032 bytes in 128ms 09-23 00:23:15.760: DEBUG/dalvikvm(165): GC_EXPLICIT freed 2414 objects / 140088 bytes in 434ms

estou usando o emulador Google Api 2.2 api level 8. Preciso do google api pois estou usando a api do maps!

alguem pode me ajudar a resolver esse problema???

10 Respostas

F

Sarkozy, muda seu broadcastReceiver para que implemente o seguinte código de uma classe model distinta:

public static SmsMessage[] getMessagesFromIntent(Intent it) {
		Object[] pdusExtras = (Object[])it.getSerializableExtra("pdus");
		
		SmsMessage[] messages = new SmsMessage[pdusExtras.length];
		
		for (int i = 0; i < pdusExtras.length; i++) {
			messages[i] = SmsMessage.createFromPdu((byte[])pdusExtras[i]);
		}
		
		return messages;
	}

Ou configura em seu broadcast... Lembre-se que o extra deve ser Serializable.

F

Ei, da uma sacada neste artigo que fiz: http://debugcodigos.blogspot.com/2011/09/como-enviar-sms-pelo-android.html

Espero que ajude mais ainda…

S

n deu certo… ele nem chega a entrar no onreceiver…da pau antes

testei com outras avds tb, mas ocorreu o mesmo problema… sera que eu tenho que atualizar algo?

F

O artigo que fiz não funcionou? o.O’

Aqui pegou tranquilo…

P.S.: Percebi um erro no artigo, la no final aonde eu declaro no manifest o broadcastReceiver, eu nomeei errado e não modifiquei a imagem.
Deve ser desse modo:

S

pior que tava errado o nome do pacote da classe receiver no manifest aqui hahaha… arrumei e deu certo! É que eu tinha feito refactore no nome da classe e achei que o eclipse tinha arrumado la no manifest também…

eu implementei o seu codigo aqui no meu projeto amigo… funcionou bem!

valew

F

Valeu, depois se puder da um like la no post e um comentário!

Não esqueça de editar seu primeiro post e modificar o TÍTULO para [RESOLVIDO].

Abraço Sarkozy! :slight_smile:

B

Bom dia Felipe,
sou iniciante no desenvolvimento
de android, sobre aquele exemplo seu,
citado acima voce usa uma chamada a um
evento new SMSHelper() porem nao encontrei
qual import que ele utiliza, estou utilizando o motodev,
com android 2.3.3.

agradeço desde ja.

Junior

F

brazjuniorgyn:
Bom dia Felipe,
sou iniciante no desenvolvimento
de android, sobre aquele exemplo seu,
citado acima voce usa uma chamada a um
evento new SMSHelper() porem nao encontrei
qual import que ele utiliza, estou utilizando o motodev,
com android 2.3.3.

agradeço desde ja.

Junior

Oi Junior,
Não é necessário dar import algum pois eu apenas crio uma classe java que dentro dela existem métodos que serão acessados em modo estático!

Abraço.

P

felipebonezi… Cara implementei seu código para envio de mensagens reais e deu certinho… ta enviando beleza. O problema é na hora do recebimento… ele não faz nada não mostra a mensagem na tela… Já atualizei meu manifest mas nada acontece… O que poderia ser isso?
Estou usando android 2.2
Obs: estou trabalhando com envio e recebimento de mensagens reais… ou seja não estou usando emulador nenhum.
Agradeço desde já.

P

desculpas… o código funciona perfeitamente… o erro foi meu ao declarar uma permissão.

Criado 22 de setembro de 2011
Ultima resposta 3 de set. de 2012
Respostas 10
Participantes 4