broadcastRecevier onreceive处理消息的内容

时间:2012-04-21 16:48:07

标签: android android-activity broadcastreceiver

我希望在收到消息时从收到的消息中传递一些信息,例如消息的内容或消息的源号,并且我想在某个条件为真时将该信息放在按钮上而不是oncreate ,我正在构建消息传递应用程序,所以我想将收到的消息存储在“收件箱”中,我该怎么做? PS。我在类中的onreceive方法扩展了broadcastReceiver,而我的其他类扩展了activity 提前致谢! 这是我的第一堂课,我扩展了broadcastreceiver

public class Re extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent)
 {
 Bundle bundle = intent.getExtras();       
SmsMessage[] msgs = null;
 String address="";
    String body="";
    long time = 0;
    if (bundle != null)
    {
        //---retrieve the SMS message received---
        Object[] pdus = (Object[]) bundle.get("pdus");
        msgs = new SmsMessage[pdus.length];
 address= msgs[i].getOriginatingAddress();
            body=msgs[i].getMessageBody().toString();
            time=msgs[i].getTimestampMillis();
}   

}

这是我扩展活动的第二堂课

public class ThirdView extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.third);
    }
}

1 个答案:

答案 0 :(得分:0)

如果您想要从Receiver的onReceive访问您的活动 - 那么您应该将BroadcastReceiver定义为Actvity的内部类并以编程方式注册它(在onStart方法中,并在onStop中取消注册);

public class ThirdView extends Activity {

    private static final IntentFilter intentFilter = 
        new IntentFilter("android.provider.Telephony.SMS_RECEIVED");

    TextButton myButton;

    BroadcastReceiver receiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {

            SmsMessage[] messages;
            //read parse pdus data from intent and pupulate messages array
            //...

            //update the button
            if(messages.length > 0) {
                myButton.setText(messages[0].getOriginatingAddress());
            }
        }

    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.third);
        myButton = (TextButton) findViewByiD(R.id.myButton);
    }

    @Override
    protected void onStart() {
        super.onStart();
        registerReceiver(receiver, intentFilter);
    }

    @Override
    protected void onStop() {
        unregisterReceiver(receiver);
        super.onStop();
    }
}