am 887ab8e9: am 6185a374: am bcb912f3: Merge "Don\'t hide InCallActivity from recents" into mnc-dev

* commit '887ab8e996569afbf13721120ab5174086e8a449':
  Don't hide InCallActivity from recents
diff --git a/InCallUI/src/com/android/incallui/InCallActivity.java b/InCallUI/src/com/android/incallui/InCallActivity.java
index b4824fb..acb11b5 100644
--- a/InCallUI/src/com/android/incallui/InCallActivity.java
+++ b/InCallUI/src/com/android/incallui/InCallActivity.java
@@ -24,6 +24,7 @@
 import android.app.Fragment;
 import android.app.FragmentManager;
 import android.app.FragmentTransaction;
+import android.content.Context;
 import android.content.DialogInterface;
 import android.content.DialogInterface.OnClickListener;
 import android.content.DialogInterface.OnCancelListener;
@@ -862,4 +863,16 @@
         CallList.getInstance().onErrorDialogDismissed();
         InCallPresenter.getInstance().onDismissDialog();
     }
+
+    public void setExcludeFromRecents(boolean exclude) {
+        ActivityManager am = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
+        List<ActivityManager.AppTask> tasks = am.getAppTasks();
+        int taskId = getTaskId();
+        for (int i=0; i<tasks.size(); i++) {
+            ActivityManager.AppTask task = tasks.get(i);
+            if (task.getTaskInfo().id == taskId) {
+                task.setExcludeFromRecents(exclude);
+            }
+        }
+    }
 }
diff --git a/InCallUI/src/com/android/incallui/InCallPresenter.java b/InCallUI/src/com/android/incallui/InCallPresenter.java
index 4fd9b96..84ccc7c 100644
--- a/InCallUI/src/com/android/incallui/InCallPresenter.java
+++ b/InCallUI/src/com/android/incallui/InCallPresenter.java
@@ -252,6 +252,7 @@
         final boolean doFinish = (mInCallActivity != null && isActivityStarted());
         Log.i(this, "Hide in call UI: " + doFinish);
         if (doFinish) {
+            mInCallActivity.setExcludeFromRecents(true);
             mInCallActivity.finish();
 
             if (mAccountSelectionCancelled) {
@@ -315,6 +316,7 @@
             }
 
             mInCallActivity = inCallActivity;
+            mInCallActivity.setExcludeFromRecents(false);
 
             // By the time the UI finally comes up, the call may already be disconnected.
             // If that's the case, we may need to show an error dialog.
@@ -1309,9 +1311,7 @@
 
     public Intent getInCallIntent(boolean showDialpad, boolean newOutgoingCall) {
         final Intent intent = new Intent(Intent.ACTION_MAIN, null);
-        intent.setFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS
-                | Intent.FLAG_ACTIVITY_NO_USER_ACTION
-                | Intent.FLAG_ACTIVITY_NEW_TASK);
+        intent.setFlags(Intent.FLAG_ACTIVITY_NO_USER_ACTION | Intent.FLAG_ACTIVITY_NEW_TASK);
 
         intent.setClass(mContext, InCallActivity.class);
         if (showDialpad) {