1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

Intent aus onReceive übergeben

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von rufux, 01.12.2010.

  1. rufux, 01.12.2010 #1
    rufux

    rufux Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    84
    Erhaltene Danke:
    5
    Registriert seit:
    11.11.2010
    Im Zuge meines Programms werden mir Daten per Sms zugesendet, welche ich auswerten möchte

    Dazu habe ich eine receiving und eine info class.

    Also die Info Class ruft die Receiving Class auf. die schaut ob eine sms angekommen ist.

    Ist eine da soll er wieder zurück zur Info Class und den Text übergeben.

    Ist dies nicht der Fall, soll er alle x sekunden schauen ob eine neue Nachricht da ist.

    Nun meine Fragen:

    1. Wie gehe ich von der Recieve Class zur Info Class zurück

    2. Wie stelle ich ein, dass die Recieve Class alle paar Sekunden aufgerufen wird, wenn noch keine SMS da ist.


    hier mein CODE... weil irgendwie geht es mit

    intent i = new Intent (this, info.class);
    startActivity(i); nicht

    receiving:
    Code:
    package com.test.smsrecieving;
    import com.test.main.R;
    import android.app.Activity;
    import android.app.PendingIntent;
    import android.app.Service;
    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    import android.content.DialogInterface;
    import android.content.DialogInterface.OnClickListener;
    import android.os.Bundle;
    import android.os.IBinder;
    import android.telephony.SmsManager;
    import android.telephony.SmsMessage;
     
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.Toast;
    import android.widget.TextView;
    @SuppressWarnings("deprecation")
    public class sms_recieving extends BroadcastReceiver {
     
     public void onReceive(Context arg0, Intent intent) {
     
      Bundle bundle = intent.getExtras();
      SmsMessage[] msg = null;
      String str ="";
      if (bundle !=null){
       Object[] pdus =(Object[]) bundle.get("pdus");
       msg= new SmsMessage[pdus.length];
       for (int i=0;i<msg.length;i++){
        msg[i]=SmsMessage.createFromPdu((byte[])pdus[i]);
        str+= msg[i].getMessageBody().toString();
     
       }
     
      }
     
     }
     
     
    }
     
    
    und die info

    Code:
    package com.test.info;
    import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.widget.TextView;
    import com.test.main.R;
    import com.test.smsrecieving.sms_recieving;
    public class info extends Activity{
      public void onCreate(Bundle savedInstanceState) {
             super.onCreate(savedInstanceState);
             TextView tv = new TextView(this);
             tv.setText("test");
             setContentView(R.layout.recieving_info);
             Intent link = new Intent(this, sms_recieving.class);
             startActivity(link);
             TextView sms = (TextView) findViewById(R.id.sms);
             sms.setText("TESTETSTETST");
     
      }
    }
     
    
    Vielen Dank
     
  2. the_alien, 01.12.2010 #2
    the_alien

    the_alien Android-Lexikon

    Beiträge:
    1,559
    Erhaltene Danke:
    184
    Registriert seit:
    04.05.2009
    Gegenfragen:

    1. Liest du die Developer Doku überhaupt?
    2. s.o.

    Natürlich geht das nicht, ein BroadcastReceiver ist ja keine Activity und hat auch startActivity nicht.
    Und ständig nachfragen musst du auch nicht, der BroadcastReceiver wird ja automatisch aufgerufen wenn eine SMS ankommt. Zumindest in sofern du ihn dafür registriert hast.
     
  3. rufux, 01.12.2010 #3
    rufux

    rufux Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    84
    Erhaltene Danke:
    5
    Registriert seit:
    11.11.2010
    gut gebe zu, hätte ich es gelesen, hätte ich erkannt, dass er nur zur laufzeit abruft und danahc den prozess schließt :-/

    sry

    ich habe trotzdem keine idee wie ich den sms inhalt jetzt an meine info class weitergebe
     
    Zuletzt bearbeitet: 01.12.2010
  4. the_alien, 01.12.2010 #4
    the_alien

    the_alien Android-Lexikon

    Beiträge:
    1,559
    Erhaltene Danke:
    184
    Registriert seit:
    04.05.2009
  5. rufux, 01.12.2010 #5
    rufux

    rufux Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    84
    Erhaltene Danke:
    5
    Registriert seit:
    11.11.2010
    ehm...

    Also jetzt bin ich gerade irgendwie...

    Mir ist schon klar, wie ich das mit dem Intent realisiere?

    Aber genau das habe ich vorhin in meinen Code gepackt.
    Und er hat mir nen Fehler gebracht.

    er sagt mir The constructor Intent (sms_recieving, Class<info>) is undefined...

    Naja egal ich probier es einfach mal weiter

    Danke trotzdem
     
  6. the_alien, 01.12.2010 #6
    the_alien

    the_alien Android-Lexikon

    Beiträge:
    1,559
    Erhaltene Danke:
    184
    Registriert seit:
    04.05.2009
    Ja, weil du this nicht übergeben kannst weil dein this Objekt ein BroadcastReceiver ist und keine Unterklasse von Context. Hau den Context da rein und gut ist.
     
    rufux bedankt sich.
  7. rufux, 01.12.2010 #7
    rufux

    rufux Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    84
    Erhaltene Danke:
    5
    Registriert seit:
    11.11.2010
    ok...

    habs jez quasi so
    Code:
    Intent i = new Intent(com.test.smsrecieving.sms_recieving, com.test.info.info.class);
    
    er sagt mir dass er com.test.smsrecieving.sms_recieving nicht als Variable auflösen kann und will mir eine neue Klasse erstellen. Bei dem "Ziel" nimmt er den Context aber ohne Probleme?

    Danke schonmal an die Nerven, Alien ;)
     
  8. the_alien, 01.12.2010 #8
    the_alien

    the_alien Android-Lexikon

    Beiträge:
    1,559
    Erhaltene Danke:
    184
    Registriert seit:
    04.05.2009
    Code:
    public void onReceive(Context context, Intent intent) {
    Intent i = new Intent(context, info.class);
    context.startActivity(i);
    }
    
     
    rufux bedankt sich.
  9. rufux, 01.12.2010 #9
    rufux

    rufux Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    84
    Erhaltene Danke:
    5
    Registriert seit:
    11.11.2010
    ... vielen Danke...
     

Diese Seite empfehlen