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();
}}
私は受信機を登録する方法は、ブロードキャストを作成(または別々のクラスとしてそれを書く)、...外のあなたの活動に
ありがとうジョン、コードの後にセミコロンが必要ですか?今私のエラーは、受信者の登録を解除する呼び出しがありませんか?私がボタンの中に登録するとどうすれば登録を解除できますか?トーストメッセージも表示されません。ただの通知バーが表示されます。何をすればよいですか? – divya
私は受信者をマニフェストファイルに登録し、別のクラスのbroadcastreceiverのコードを書いた後に問題が解決されました。 – divya
呼び出しunRegisterReceiver(smsReceiver);あなたがもうそれを必要としないとき...例えば、アクティビティのonStop()メソッドで。マニフェストに登録すると、Androidが自動的に管理すると思います – JohnCookie