Komunikacja BroadcastReceiver z Activity

0

Witam,

Próbuje napisać program, który w momencie odebrania sms będzie wyświetlał numer telefonu i treść w głównej aktywności. Moje pytanie brzmi w jaki sposób przesłać z BroadcastReceiver do Activity. To moje początki więc proszę o wyrozumiałość :)

public class SmsReceiver extends BroadcastReceiver{

	@Override
	
		
		public void onReceive(Context context, Intent intent) {

		       Bundle extras = intent.getExtras();
		       if (extras == null)
		       return;
		      
		      
		     // Toast.makeText(context,"Recieved",Toast.LENGTH_LONG).show();

		       Object[] pdus = (Object[]) extras.get("pdus");
		       for (int i = 0; i > pdus.length; i++) {
		          SmsMessage SMessage = SmsMessage.createFromPdu((byte[]) pdus[i]);
		          String sender = SMessage.getOriginatingAddress();
		          String body = SMessage.getMessageBody().toString();

		        
		         Intent in = new Intent("SmsMessage.intent.MAIN").
		         putExtra("get_msg", sender+":"+body);
		         context.sendBroadcast(in);

		        
		        }
		     }
		
}
public class Maps extends Activity {
	
	BroadcastReceiver mIntentReceiver;
	
	public void onCreate(Bundle savedInstanceState){
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_maps);
		

		IntentFilter intentFilter = new IntentFilter("SmsMessage.intent.MAIN");
		mIntentReceiver = new BroadcastReceiver() {
		@Override
		public void onReceive(Context context, Intent intent) {
		String msg = intent.getStringExtra("get_msg");

		
		
		Toast.makeText(context, msg, Toast.LENGTH_SHORT).show();
		
		}
		
		};
		this.registerReceiver(mIntentReceiver, intentFilter);
		
	}
		@Override
		protected void onStop() {

		super.onStop();
		this.unregisterReceiver(this.mIntentReceiver);
		}

	}
0

Wrzuciłeś kawałek kodu, który teoretycznie to robi, więc w czym problem? Nie działa? Dostajesz błąd? Więcej szczegółów... Hint na przyszłość: obługa rejestrowania/wyrejestrowywania callbacków/usług/receiverow itp powinna się odbywać w odpowiadających sobie metodach cyklu życia, np: rejestrujesz w onStart() to wyrejestrowujesz w onStop() itd.

0

Błędu żadnego nie ma program się normalnie włącza lecz po otrzymaniu sms nie wyświetla się toast ten z Activity, a w SmsReceiver Toast zachowuje się prawidłowo. Nie wiem czy mam źle w czasie wysyłania z SmsReceiver czy po stronie Activity.

1 użytkowników online, w tym zalogowanych: 0, gości: 1