| 

.NET C# Java Javascript Exception

4
Hallo,

ich habe eine Class die sich um den Empfang einer SMS kümmert. Nun soll bei erhalt eine neue Class aufgerufen werden:

package com.teambroadcast.alarmierung;

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

public class SmsReceiver extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
Bundle bundle = intent.getExtras();
SmsMessage[] msgs = null;
String str = "";
if (bundle != null) {
Object[] pdus = (Object[]) bundle.get("pdus");
msgs = new SmsMessage[pdus.length];
for (int i=0; i<msgs.length; i++){
msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]);
str += "SMS from " + msgs[i].getOriginatingAddress();
str += " :";
str += msgs[i].getMessageBody().toString();
}
Toast.makeText(context, str, Toast.LENGTH_SHORT).show();
startActivity(new Intent(SmsReceiver.this, SMSAlarmierungActivity.class));
}
}
}


Eclipse meckert nun aber, dass die Methode startActivity() undefiniert ist.

Hat jemand eine Idee wieso es hier hapert?

Danke

Stefan
12.12.2011
DTAG 170 1 8
Die BB-Code-Implemetierung ist auch nicht das Wahre, oder?!
LiRo 12.12.2011
Wie meinst du das?
DTAG 12.12.2011
Weil dein [/code] nicht angenommen wird.
LiRo 12.12.2011
Ja, korrekt.
DTAG 12.12.2011
Hallo, anscheint konnte mrmee dein Problem lösen. Er würde sich bestimmt freuen wenn du seine Antwort als Lösung akzeptierst. Grüße
Nicolai Schönberg 21.12.2011
@Liro Hab's korrigiert: man muß [i] durch \[i] ersetzen. Ist echt nicht der Hit, aber es gibt größere Bugs...
Matthias Hlawatsch 13.07.2012
2 Antworten
2
Hast du es schon mit
context.startActivity()
versucht?
21.12.2011
mrmee 745 1 8
Danke, das war es!
DTAG 21.12.2011
Wenn's das war: warum akzeptierst Du die Antwort nicht durch Klick auf den grünen Haken?
Matthias Hlawatsch 13.07.2012
Danke, das freut mich :) Nett von euch und das bei einer so "alten" Frage
mrmee 17.07.2012
0
Ich denke, dass es daran liegt, dass die Methode "startActivity" nicht (in der Klasse) definiert ist! Wenn du ein Statische Methode (einer andren Klasse) aufrufen willst, musst du auch die Klasse angaben. (MeineTolleKlasse.startActivity())
12.12.2011
LiRo 1,3k 1 9
Also die augerufene Klasse sieht so aus:
[code]
[..]
public class SMSAlarmierungActivity extends Activity
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}
[/code]

Deiner Meinung nach, müsste ich nun ändern?

SMSAlarmierungActivity.startActivity(new Intent(this, SMSAlarmierungActivity.class));
DTAG 12.12.2011
Ne, ist ja keine statische (Klassen-) Methode.
LiRo 12.12.2011
Das müsste dann "public static void onCreate" heißen, geht aber nicht, da die Methode in der Ursprünglichen Klasse (Activity) wohl nicht static ist. Also kannst du nur noch eine Instans der Klasse ziehen und dann darüber die Methode aufrufen.
LiRo 12.12.2011

Stelle deine Java-Frage jetzt!