2010-12-03 8 views
0

Je crée juste une application Android simple qui répondra à reçu. J'utilise Braodcastreceiver pour recevoir des sms. Code pour l'activité estBroadCastReceiver Force Fermer Pour Sms recevoir

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); 
    } 
} 

Quand je lance cette activité sur le SDK 2.1 AVD et envoie des SMS à ce port, il dit près Force. S'il vous plaît dites-moi quelle est l'erreur dans le code. Merci d'avance.

+1

Vous devez absolument publier un logcat et la ligne qui fait planter l'application. Avez-vous déclaré votre récepteur dans le manifeste de l'application? –

+0

Comme l'a dit Bicou, vous devez nous montrer la pile complète de la force de fermeture pour que nous puissions dire quoi que ce soit sur ce qui se passe. Cela ne cause probablement pas cela, mais plutôt que d'utiliser System.out.println vous devez utiliser le système de journalisation Android Log.d ("smsReceiver", "SMS Received") –

Répondre

0

Vous souvenez-vous d'en accorder l'autorisation au propriétaire?

Je crois que pour les SMS dans votre manifeste, vous devez avoir quelque chose comme:

android.permission.RECEIVE_SMS

+0

Mauvaise autorisation ... 'RECEIVE_SMS' est celui que vous recherchez ... et il est peu probable que ... puisqu'il ne lèvera pas une exception. Il ne recevra tout simplement pas l'intention. – st0le

+0

Oups, merci pour la correction. – JoxTraex

+0

Je crois que ce serait une exception cependant; parce qu'il essaie d'enregistrer un récepteur sans la permission appropriée. – JoxTraex

1

Salut Merci pour les réponses Ce code fonctionne très bien

package com.om; 

android importation. app.Activité;

import android.content.BroadcastReceiver;

import android.content.Context;

import android.content.Intent;

import android.content.IntentFilter;

import android.os.Bundle;

importez android.widget.Toast;

import android.telephony.SmsManager;

import android.telephony.SmsMessage;

MyTest public class activité { SmsReceiver public class étend 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); 

} 

}

J'ai donné les autorisations correctement. Mais quand j'ai essayé d'enregistrer broadcastreceiver dans le manifeste Il force la fermeture de l'application, Je ne sais pas comment donner des journaux, si quelqu'un s'il vous plaît dites-moi.

Questions connexes