将数据从广播发送到活动。怎么办发送?

时间:2014-01-17 10:11:06

标签: android android-activity sms broadcastreceiver

如何将数据从 broadcatReceiver 发送到Android中的活动,以便抓住收到短信并将短信(是数据)发送到我的第一个活动我使用 broadcatReceiver 的时间,所以任何人都可以帮助我,我将不胜感激任何帮助。

我阅读了几个有关数据传输的教程,其中包含一些步骤:

  • 创建一个扩展活动的类
  • 创建一个扩展broadcastReceiver
  • 的类

但我不知道这两个班级之间的沟通情况如何。

2 个答案:

答案 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)

receiverActivity是独立的实体,通常不直接互动。想象一下下面的场景:你有一个接收器收到很多短信,每次你拿到一个,你都会启动一个Activity来显示收到的消息。这对用户来说不是很烦人吗?

我说您可以通过创建Notification与用户互动,如果用户点击它,则打开要显示详细信息的Activity

如何将数据传递给Activity(希望首先使用通知),鉴于SMS消息本质上很短,您只需将数据放入Intent

如何设置Notification以启动Activity:请参阅Open application after clicking on Notification