特遣队待定内容

时间:2015-10-18 05:23:03

标签: android android-pendingintent

我正在使用AlarmManager为用户安排各种Notification。一切运作良好,但我想允许用户点击通知并直接进入应用程序。通常这很容易,但在我的情况下,这有点困难。

由于这些通知将在未来的某个时间点出现(通常为几天),因此我无法知道在发布通知时以及用户点击应用时我的应用是否处于活动状态。如果应用处于有效状态,我希望PendingIntent将用户带到名为PostAuthenticationActivity的活动中。但是如果应用程序不活动,我需要应用程序完成其通常的启动和登录例程,该例程由名为SplashScreenActivity的活动处理。我不知道如何让这个PendingIntent足够聪明地做出这个决定。

private Notification getNotification(String title) {

        Intent resultIntent;

        if (Build.VERSION.SDK_INT > 15) {

            // either these lines works on it's own, if I know whether the state of the app
            // how can I build in logic to make this decision dynammically?

            if (appIsRunning)  //pseudocode
                resultIntent = new Intent(this.context, PostAuthenticationActivity.class);
            else
                resultIntent = new Intent(this.context, SplashScreenActivity.class);

            PendingIntent pendingIntent = PendingIntent.getActivity(
                    this.context,
                    0,
                    resultIntent,
                    PendingIntent.FLAG_UPDATE_CURRENT
            );

            Notification.Builder builder = new Notification.Builder(context);
            builder.setContentTitle(title);
            builder.setContentText("Your have a group workout starting in one hour.");
            builder.setSmallIcon(R.drawable.we_run_single);
            builder.setContentIntent(pendingIntent);

            return builder.build();

        } else {
            return null;
        }
    }

1 个答案:

答案 0 :(得分:0)

默认情况下,您可以将用户带到PostAuthenticationActivity,在此活动中,您可以检查是否需要身份验证。如果需要auth,则启动SplashScreenActivity并完成所有其他操作。

Intent intent = new Intent(getApplicationContext(), SplashScreenActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent); 

How to start new activity and clear all others