如何使应用程序仅在指定的时间开始新活动,而不是从该活动开始

时间:2019-03-25 15:03:42

标签: android android-intent alarmmanager

我希望我的应用开始活动“播放”,当用户仅在指定时间处于活动“开始”时,假设17:00:00,如果用户处于活动中,则在其他任何时间开始17:00:00之后,活动“播放”不会开始。我使用了这段代码:

Calendar calendar = Calendar.getInstance();
    calendar.set(2019, 2, 25, 17, 00,00);
    Intent intent = new Intent(Start.this, Playing.class);
    PendingIntent pendingIntent = PendingIntent.getActivity(Start.this, 0, intent, PendingIntent.FLAG_ONE_SHOT);
    ((AlarmManager) getSystemService(ALARM_SERVICE)).set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);

问题是,我需要在17:00:00之后的任何时间“玩”活动。 我应该怎么做才能将其限制为仅指定的确切时间?

2 个答案:

答案 0 :(得分:0)

您可以从警报管理器启动Service,而不是开始活动。然后在您的Service中,检查您的活动Start是否处于前台,并且正好是17:00:00。并且,如果条件满足,则只能从该服务开始您的活动。

以下是用于检查是否有任何活动处于前台的代码。

public boolean isForeground(String myPackage) {
    ActivityManager manager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
    List<ActivityManager.RunningTaskInfo> runningTaskInfo = manager.getRunningTasks(1); 
    String className = runningTaskInfo.get(0).topActivity.componentInfo.getClassName();
    return className.equals(YourActivityClassName);
}

答案 1 :(得分:0)

我只是将代码放入当前时间小于所需时间的条件内。