2017-06-12 49 views
0

我有我的應用程序從服務器接收GCM消息。我掌握了通知即將開始的所有工作。應用程序打開或背景(顯示通知與否)

我的問題是,如果應用程序是開放的,那麼我不想顯示通知,只是顯示顯示消息與應用程序。但如果應用程序已關閉,則需要顯示通知(如聊天應用程序)。

我該如何做這個決定?

謝謝

+0

沒有辦法確定它除了手動 - 地方創造一些標誌和跟蹤應用的活動的生命週期,以檢查是否有任何活動是在前臺。 –

回答

0

你可以檢查應用程序是否在後臺或不試試這個。

public static boolean isAppIsInBackground(Context context) { 
    boolean isInBackground = true; 
    ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); 
    if (Build.VERSION.SDK_INT > Build.VERSION_CODES.KITKAT_WATCH) { 
     List<ActivityManager.RunningAppProcessInfo> runningProcesses = am.getRunningAppProcesses(); 
     for (ActivityManager.RunningAppProcessInfo processInfo : runningProcesses) { 
      if (processInfo.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND) { 
       for (String activeProcess : processInfo.pkgList) { 
        if (activeProcess.equals(context.getPackageName())) { 
         isInBackground = false; 
        } 
       } 
      } 
     } 
    } else { 
     List<ActivityManager.RunningTaskInfo> taskInfo = am.getRunningTasks(1); 
     ComponentName componentInfo = taskInfo.get(0).topActivity; 
     if (componentInfo.getPackageName().equals(context.getPackageName())) { 
      isInBackground = false; 
     } 
    } 

    return isInBackground; 
} 
相關問題