2012-01-12 29 views
0

私はアンドロイドに新しくなっています.logcatを実行しているときに "ブロードキャストインテントを受信する際にエラーが発生しました"というメッセージが表示され、アプリケーションが強制終了になると、メインクラスにBroadcastReceiverを登録しようとしました。 ? は、ここに私のコードです:私は、スタートボタンを入れて、私はmanifest.Iが思うにインテントフィルタを書いていないことの中に受信機をrgister button.I sms.iを受信するためのマニフェストファイルにアクセス権を提供しようとした 登録方法BroadcastReceiver

public class Yes extends Activity { 
/** Called when the activity is first created. */ 
private Retrieve receiver = null; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    Button start=(Button)findViewById(R.id.bt1); 
start.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      receiver = new Retrieve(); 
       registerReceiver(receiver,new 
          IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION)); 

      } 
      }); 
       } 
      private class Retrieve extends BroadcastReceiver 
       { 

public void onReceive(Context context, Intent intent) { 

    Bundle bundle = intent.getExtras(); 

    Object messages[] = (Object[]) bundle.get("pdus"); 
    SmsMessage smsMessage[] = new SmsMessage[messages.length]; 
    for (int n = 0; n<messages.length; n++) { 
    smsMessage[n] = SmsMessage.createFromPdu((byte[]) messages[n]); 
    smsMessage[0].getMessageBody(); 

    } 

    // show first message 
    Toast toast = Toast.makeText(context, 
    "Received SMS: " + smsMessage[0].getMessageBody(), Toast.LENGTH_LONG); 
    toast.show(); 
      }} 

私は受信機を登録する方法は、ブロードキャストを作成(または別々のクラスとしてそれを書く)、...外のあなたの活動に

答えて

0

私は私をdo.helpしたいものとは完全に間違っている:で

private BroadcastReceiver smsReceiver = new BroadcastReceiver(){ 
public void onReceive(Context context, Intent intent) { 
    //do your task 
    } 
} 

レシーバー:

registerReceiver(smsReceiver, filter); 
+0

ありがとうジョン、コードの後に​​セミコロンが必要ですか?今私のエラーは、受信者の登録を解除する呼び出しがありませんか?私がボタンの中に登録するとどうすれば登録を解除できますか?トーストメッセージも表示されません。ただの通知バーが表示されます。何をすればよいですか? – divya

+0

私は受信者をマニフェストファイルに登録し、別のクラスのbroadcastreceiverのコードを書いた後に問題が解決されました。 – divya

+0

呼び出しunRegisterReceiver(smsReceiver);あなたがもうそれを必要としないとき...例えば、アクティビティのonStop()メソッドで。マニフェストに登録すると、Androidが自動的に管理すると思います – JohnCookie

関連する問題