Android 如何使应用程序仅在指定时间启动新活动,而不是从它开始
我想让我的应用程序开始活动播放,当用户只在指定的时间开始活动时,比如说17:00:00,如果用户在17:00:00之后的任何其他时间开始活动,则活动播放不会开始。我使用了以下代码:Android 如何使应用程序仅在指定时间启动新活动,而不是从它开始,android,android-intent,alarmmanager,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); PendingInt
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之后的任何时候都要参加活动。
我应该更改什么以将其限制在精确的指定时间?您可以从alarm manager启动服务,而不是启动活动。在您的服务中,检查您的活动开始是否在前台,并且正好是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);
}
我只是将代码放入一个条件中,即当前时间小于所需时间