更新从广播接收器收到的短信的活动UI

时间:2015-02-07 10:54:22

标签: android list broadcast receiver

  1. 我有SMSlist_activity.java,显示短信对话列表。
  2. 我有一个sms_receiver.java,它是传入短信的广播接收器。
  3. 现在我想通过SMSlist_activity.java收到短信时更新sms_receiver.java中的短信会话列表,当然如果SMSlist_activity.java正在运行且可见,则会发生此更新。

    如果有人有想法,我会很高兴在这里。

1 个答案:

答案 0 :(得分:1)

最后,我找到了广播接收器的解决方案。 int sms_receiver.java,当收到sms时,我广播了一个意图:

            Intent intent2 = new Intent();
            intent2.setAction("co.ir.ts.app.sms.smsumad");
            context.sendBroadcast(intent2);

在SMSlist_activity.java定义的app清单中,我添加了Intent过滤器,以便我的SMSlist_activity.java可以接收广播:

    <activity
        android:name=".activity.SMSlist_activity">
        <intent-filter>
            <action android:name="co.ir.ts.app.sms.smsumad" >
            </action>
        </intent-filter>
    </activity>

现在在SMSlist_activity.java主类中定义一个广播接收器:

private BroadcastReceiver receiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
       //Updating UI here
    }
};
onResume方法中的

注册上面创建的接收器:

 @Override
protected void onResume() {
    // TODO Auto-generated method stub
     IntentFilter filter = new IntentFilter();
     filter.addAction("co.ir.ts.app.sms.smsumad");
     registerReceiver(receiver, filter);
    super.onResume();
}

最后在onPause方法中取消注册接收器:

 protected void onPause()
{
    unregisterReceiver(receiver);
    super.onPause();
    if (isSentPending)
    {
        unregisterReceiver(sent);
    }
}