Intent aus onReceive übergeben

R

rufux

Ambitioniertes Mitglied
5
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
 
rufux schrieb:
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.
Gegenfragen:

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

intent i = new Intent (this, info.class);
startActivity(i);
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.
 
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:
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
 
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.
 
  • Danke
Reaktionen: rufux
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 ;)
 
Code:
public void onReceive(Context context, Intent intent) {
Intent i = new Intent(context, info.class);
context.startActivity(i);
}
 
  • Danke
Reaktionen: rufux
... vielen Danke...
 

Ähnliche Themen

R
  • Robby1950
2
Antworten
23
Aufrufe
1.003
Robby1950
R
B
Antworten
6
Aufrufe
1.049
jogimuc
J
M
Antworten
8
Aufrufe
952
deek
D
Zurück
Oben Unten