[resolvido] erro ao receber sms - android

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=15555215554, 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???

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

[code]
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;
}[/code]

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

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…

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?

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:

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

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:

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

[quote=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
[/quote]

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.

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á.

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