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

问题描述 投票:-2回答:2

我希望我的应用程序启动活动“正在播放”,当用户仅在指定时间处于活动“开始”时,假设为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之后的任何时间“玩”活动。我应该更改什么才能将其限制在指定的时间内?

android android-intent alarmmanager
2个回答
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);
}

0
投票

我只是将代码置于当前时间小于所需时间的条件下。

© www.soinside.com 2019 - 2024. All rights reserved.