0

我在 writeMessage 活动中有一个列表视图。当用户写消息时,它会显示它写的内容,但是当收到消息时不会。我必须返回并再次开始活动。我试图将广播注册到我的活动,但我不能。

我定义了我的活动的顶部:

public class CMesWriteMessage extends Activity {
     private BroadcastReceiver the_receiver = new IncomingSms(){

         @Override
         public void onReceive(Context c, Intent i) {
             addItems();

         }
     };
     private IntentFilter filter = new IntentFilter(Intent.ACTION_CONFIGURATION_CHANGED);

...
...

}

并像这样注册它:

protected void onResume() {

    // Register reciever if activity is in front
    this.registerReceiver(the_receiver, filter);
    super.onResume();
}

protected void onPause() {

     // Unregister reciever if activity is not in front
     this.unregisterReceiver(the_receiver);
     super.onPause();
}

我哪里错了?

4

2 回答 2

0

我不知道这是否是整个问题,但 super.onPause()/super.onResume() 应该是它们各自覆盖中的第一个调用:

protected void onResume() {
    super.onResume();
    this.registerReceiver(the_receiver, filter);
}

protected void onPause() {
    super.onPause()
    this.unregisterReceiver(the_receiver);
}
于 2013-08-11T04:19:16.197 回答
0

好的,我改变了我的行为,现在一切都很好。这是正确的代码:

private static final String ACTION = "android.provider.Telephony.SMS_RECEIVED";
private IntentFilter filter = new IntentFilter(ACTION);

编辑:

我在广播类中进行主要操作。在这个活动中,我只更新列表视图。所以为了达到这个目标,我像这样编辑我的代码:

private BroadcastReceiver the_receiver = new IncomingSms(){

         @Override
         public void onReceive(Context c, Intent i) {
             super.onReceive(c, i);
             //My activity special operations.

         }
};  

注意:IncomingSms 是我的主要广播接收器类。

于 2013-08-11T22:51:51.823 回答