如何将数据从 broadcatReceiver 发送到Android中的活动,以便抓住收到短信并将短信(是数据)发送到我的第一个活动我使用 broadcatReceiver 的时间,所以任何人都可以帮助我,我将不胜感激任何帮助。
我阅读了几个有关数据传输的教程,其中包含一些步骤:
但我不知道这两个班级之间的沟通情况如何。
答案 0 :(得分:0)
我会做那样的事情:
public class YourActivity extends Activity
{
private Handler handler = null;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.id.main_layout);
this.handler = new Handler() {
@Override
public void handleMessage(Message msg)
{
SmsMessage sms = (SmsMessage) msg.obj;
String senderNumber = sms.getOriginatingAddress();
}
};
// Register a new receiver that will trigger on SMS_RECEIVED event
IntentFiler filer = new IntentFilert("android.provider.Telephony.SMS_RECEIVED");
registerReceiver(mSmsReceiver, filter);
}
@Override
protected void onDestroy()
{
super.onDestroy();
// Unregister the receiver
unregisterReceiver(mSmsReceiver);
}
private mSmsReceiver = new BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent)
{
Bundle bundle = intent.getExtras();
if (bundle == null || bundle.containsKey("pdus") return;
// Decode the message
SmsMessage sms = SmsMessage.createFromPdu((byte[]) pdus[0]);
// Notify the activity with the message
Message msg = new Message;
msg.obj = sms;
YourActivity.this.handler.sendMessage(msg);
}
};
}
答案 1 :(得分:0)
receiver
和Activity
是独立的实体,通常不直接互动。想象一下下面的场景:你有一个接收器收到很多短信,每次你拿到一个,你都会启动一个Activity
来显示收到的消息。这对用户来说不是很烦人吗?
我说您可以通过创建Notification
与用户互动,如果用户点击它,则打开要显示详细信息的Activity
。
如何将数据传递给Activity
(希望首先使用通知),鉴于SMS消息本质上很短,您只需将数据放入Intent
。
如何设置Notification
以启动Activity
:请参阅Open application after clicking on Notification