2015-10-18 60 views
0

我正在使用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; 
     } 
    } 

回答

0

您可以在默認情況下將用戶帶到PostAuthenticationActivity,這裏面的活動,你可以檢查是否需要認證與否。如果需要身份驗證,請啓動您的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