Komunikacja BroadcastReceiver z Activity

Odpowiedz Nowy wątek
2016-02-28 14:39
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);
        }

    }

Pozostało 580 znaków

2016-02-28 15:31
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.

Pozostało 580 znaków

2016-02-28 15:51
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.

edytowany 1x, ostatnio: MrSiskin, 2016-02-28 15:54

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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