2010-12-03 5 views
0

Ich erstelle nur eine einfache Android-App, die auf empfangen reagiert. Ich benutze braodcastreceiver um SMS zu empfangen. -Code für die Aktivität istBroadCastReceiver Force Schließen für Sms erhalten

package com.om; 

import android.app.Activity; 
import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.content.IntentFilter; 
import android.os.Bundle; 
import android.widget.Toast; 
import android.telephony.SmsManager; 
import android.telephony.SmsMessage; 

public class MyTest extends Activity { 
    public static final String SMS_RECEIVED = "android.provider.Telephony.SMS_RECEIVED"; 
    /** Called when the activity is first created. */ 
    BroadcastReceiver smsReceiver = new BroadcastReceiver() { 
    @Override 
    public void onReceive(Context _context, Intent _intent) { 
     System.out.println("SMS Received"); 
    } 
    }; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     IntentFilter filter = new IntentFilter(SMS_RECEIVED); 
     registerReceiver(smsReceiver, filter); 
    } 
} 

Wenn ich diese Aktivität auf SDK 2.1 AVD laufen und sendet SMS an diesen Port sagt Kraft schließen. Bitte sagen Sie mir, was ist ein Fehler im Code. Vielen Dank im Voraus.

+1

Sie sollten unbedingt ein Logcat und die Zeile, die die App zum Absturz bringt, posten. Haben Sie Ihren Empfänger im App-Manifest angegeben? –

+0

Wie Bicou sagte, müssen Sie uns den vollständigen Stack-Trace von der Truppe zeigen, um uns etwas über das Geschehen zu sagen. Dies verursacht wahrscheinlich nicht, aber anstatt System.out.println zu verwenden, sollten Sie das Android Protokollsystem Log.d ("smsReceiver", "SMS Received") verwenden. –

Antwort

0

Haben Sie daran gedacht, ihm die entsprechende Erlaubnis zu geben?

ich für SMS in Ihrem Manifest glauben, müssen Sie so etwas wie haben:

android.permission.RECEIVE_SMS

+0

Falsche Erlaubnis ... 'RECEIVE_SMS' ist die, die Sie Ich suche ... und es ist nicht wahrscheinlich, dass ... da wird es keine Ausnahme werfen. Es wird einfach nicht die Absicht erhalten. – st0le

+0

Whoops, danke für die Korrektur. – JoxTraex

+0

Ich glaube, es würde jedoch eine Ausnahme werfen; weil er versucht, einen Empfänger ohne die entsprechende Erlaubnis zu registrieren. – JoxTraex

1

Hallo Danke für Antworten Dieser Code funktioniert gut

package com.om; 

Import Android. App.Aktivität;

importieren android.content.BroadcastReceiver;

importieren android.content.Context;

importieren android.content.Intent;

importieren android.content.IntentFilter;

importieren android.os.Bundle;

importieren android.widget.Toast;

importieren android.telephony.SmsManager;

importieren android.telephony.SmsMessage;

public class MyTest Aktivität erstreckt { public class SmsReceiver erweitert BroadcastReceiver {

@Override 
    public void onReceive(Context arg0, Intent arg1) { 
     // TODO Auto-generated method stub 
     Context context = getApplicationContext(); 
     String msg = "SMS Received....."; 
     int duration = Toast.LENGTH_LONG; 
     Toast toast = Toast.makeText(context, msg, duration); 
     toast.show(); 

    } 



} 
public static final String SMS_RECEIVED = 
    "android.provider.Telephony.SMS_RECEIVED"; 
/** Called when the activity is first created. */ 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    IntentFilter inf = new IntentFilter(SMS_RECEIVED); 
    SmsReceiver sr = new SmsReceiver(); 
    registerReceiver(sr, inf); 

} 

}

ich Berechtigungen korrekt angegeben haben. Aber wenn ich versucht, broadcastreceiver in Manifest zu registrieren, erzwinge das Schließen der App, Ich weiß nicht, wie Logs zu geben, wenn mir jemand bitte sagen.