在广播接收器中设置AlarmManager以调用另一个活动/服务

时间:2014-05-19 08:01:53

标签: android broadcastreceiver alarmmanager

我有一个广播接收器,我想使用报警管理器启动另一个活动/服务。所以我想在我的广播接收器中设置一个报警管理器来动态启动活动。可能吗。请相应告诉我。 谢谢

1 个答案:

答案 0 :(得分:1)

您想向我们展示一些您的代码吗?如果您不再解释一下,我们无法准确回答。但是,从广播接收器开始活动就像通常的开始活动一样简单:

   Intent intent = new Intent(context.getApplicationContext(), YourActivity.class);
   intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
   context.startActivity(intent);

在你的onReceive()....中使用它,不要忘记将你的接收者注册到清单。

修改

因此,如果你想在重启后5分钟启动一个动作,它应该是这样的:

在你的BootCompleted Receiver中启动另一个boradcastreceiver:

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

   Intent intent = new Intent(context,SecondBroadcastReceiver.class);
   PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0,
   intent, PendingIntent.FLAG_ONE_SHOT);
   am.set(AlarmManager.RTC_WAKEUP,
   System.currentTimeMillis() + 300000, pendingIntent); //5 minutes are 300000 MS

BroadcastReceiver:

        public class SecondBroadcastReceiver extends BroadcastReceiver {



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

              Intent i= new Intent(context, YourService.class);

              context.startService(i); 

           }
       }

服务

    public class YourService extends Service {

       @Override
        public int onStartCommand(Intent intent, int flags, int startId) {

       //start here the Action You will do, 5 minutes after reboot

       return Service.START_NOT_STICKY;
   }

      @Override
       public IBinder onBind(Intent intent) {

       return null;
    }
} 

但这只是从头开始,我现在无法测试代码,这里没有IDE。所以我不确定在BootCompletedReceiver中为Intent和PendingIntent提供上下文。