我希望在收到消息时从收到的消息中传递一些信息,例如消息的内容或消息的源号,并且我想在某个条件为真时将该信息放在按钮上而不是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);
}
}
答案 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();
}
}