我有一个广播接收器,我想使用报警管理器启动另一个活动/服务。所以我想在我的广播接收器中设置一个报警管理器来动态启动活动。可能吗。请相应告诉我。 谢谢
答案 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
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提供上下文。