从BroadCastReceiver.onReceive访问活动

时间:2010-09-07 17:03:02

标签: android

开发报警应用程序。

我在活动上使用listview来预警。 在应用程序完成BroadcastReceiver.onReceive()方法之后, 我想删除列表检查。

但我不知道如何访问活动。 有人知道吗?

以下是我的代码:

public class Activity_001 extends ListActivity {

        Intent intent = new Intent(this, ReceiverGenerateAlarm.class);
        intent.setAction(Conf.GenerateAlarm);
        intent.putExtra(cal,timerList.get(0).getCal().getTimeInMillis())

        PendingIntent sender = PendingIntent.getBroadcast(this, 0, intent,
0);

        AlarmManager am = (AlarmManager)
(this.getSystemService(ALARM_SERVICE));

        am.set(AlarmManager.RTC_WAKEUP,
timerList.get(0).getCal().getTimeInMillis(), sender);

}

public class ReceiverGenerateAlarm extends BroadcastReceiver {

        @Override
        public void onReceive(Context context,Intent intent) {

                String action = intent.getAction();
                if(action.equals(Conf.GenerateAlarm)) {

                        Bundle bundle=intent.getExtras();
                        long cal = bundle.getLongArray("cal");

                        Calendar c = Calendar.getInstance();
                        c.setTimeInMillis(cal);

                        MediaPlayer_inherit_Class tm = new MediaPlayer_inherit_Class(cal); 
                        tm.play();

                        //in here, wanna access alarm reservation list and remove check of list. as application has executed.
                        //set next alarm, if needed. 
                } 

1 个答案:

答案 0 :(得分:1)

如果我理解正确,您应该使用SQLite数据库存储“警报预留”。如果是这样,只需更新onReceive()中的数据库条目即可。恢复Activity后,应检查警报db表的更改并相应地更新UI。

另一种方法是使用bundled extrasstartActivity()拨打onReceive()。可能会传递行ID或时间戳以使用Intent.putExtra()进行查询。

另一种方法是将BroadcastReceiver放入Activity班。

希望有所帮助。