[Android] Pegar número e mensagem de um sms e colocar num Toast

Oi gente, estou usando o receiver abaixo para pegar os dados de um sms recebido e depois exibi-los num Toast, o sms é recebido (aparece a notificação), mas, por esse código abaixo, não consigo recuperar nenhum dado para exibir no Toast, alguém saberia a razão?

package learning.Android_Avancado.Aula6;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsMessage;
import android.util.Log;
import android.widget.Toast;

public class ReceberSms extends BroadcastReceiver {

	@Override
	public void onReceive(Context context, Intent intent) {
					
		Bundle extras = intent.getExtras();				
		String phone = "";	
		String bodyMessage = "";
		String message = "";
		
		if(extras != null) {
			//get array data from SMS
			Object[] smsExtra = (Object[]) extras.get( "pdus" ); // "pdus" is the key
			
			for(int i = 0; i < smsExtra.length; i++) {
				//get sms message
				SmsMessage sms = SmsMessage.createFromPdu((byte[]) smsExtra[i]);			
				phone = sms.getOriginatingAddress();
				bodyMessage = sms.getMessageBody();		
				message = "SMS de: " + phone + "." + "\n" + "Mensagem: " + bodyMessage;
			}
			Toast.makeText(context, message, Toast.LENGTH_SHORT).show();
			Log.i("sms", message);
		}

	}

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

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="learning.Android_Avancado.Aula6"
      android:versionCode="1"
      android:versionName="1.0">
      
    <uses-sdk android:minSdkVersion="10" />
    
    <uses-permission android:name="android.permission.SEND_SMS" />
    <uses-permission android:name="android.permission.RECEIVE_SMS" />
    <uses-permission android:name="android.permission.READ_SMS" />

    <application android:icon="@drawable/icon" android:label="@string/app_name">
    
        <activity android:name=".Tela1"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        
        <receiver android:name=".ReceberSms">
			<intent-filter>
                <action android:name="android.provider.telephony.SMS_RECEIVED" />  
                <category android:name="android.intent.category.LAUNCHER" />              
            </intent-filter>        	
        </receiver>

    </application>
    
</manifest>

Ele está entrando no ReceberSms? Tente tirar o

&lt;category android:name="android.intent.category.LAUNCHER" /&gt;

do seu receiver.

Oi toshikurauchi, obrigada por responder =]

Resolvi o problema, não tenho certeza exatamente do motivo das falhas anteriores @_@, só sei que usei o ex. do cap. 18 do Google Android e deu certo, só mudei o nome do pacote…

Legal!

Uma coisa que pode ter acontecido é se o package do seu receiver for diferente do package da aplicação, no seu caso por exemplo o package da aplicação é learning.Android_Avancado.Aula6. Se você colocar o seu receiver no package learning.Android_Avancado.Aula6.outroPackage por exemplo no Manifest você declararia

&lt;receiver android:name=".outroPackage.ReceberSms"&gt;

Ou então:

&lt;receiver android:name="learning.Android_Avancado.Aula6.outroPackage.ReceberSms"&gt;

Bom, só um detalhe mesmo, mas que bom que deu certo :slight_smile: