diff options
author | Winson Chung <winsonc@google.com> | 2014-09-19 00:03:54 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2014-09-19 00:03:54 +0000 |
commit | aab1a058dbeba8ec375790844d2ae5a99539084c (patch) | |
tree | 5f997e924845cc8c58393b8361ffee1b8e64f1f6 | |
parent | 879c239d8ab78ad374dac5227b2a702d642b435b (diff) | |
parent | f7dd908171a12f6a3f91575ac9fd1ef8ba7fefe6 (diff) | |
download | frameworks_base-aab1a058dbeba8ec375790844d2ae5a99539084c.zip frameworks_base-aab1a058dbeba8ec375790844d2ae5a99539084c.tar.gz frameworks_base-aab1a058dbeba8ec375790844d2ae5a99539084c.tar.bz2 |
am 5c744b1b: Merge "Handling broader set of exceptions when startingActivity from Recents. (Bug 17481968)" into lmp-dev
* commit '5c744b1b01156c37f894619fbe70741435d7ed53':
Handling broader set of exceptions when startingActivity from Recents. (Bug 17481968)
5 files changed, 29 insertions, 9 deletions
diff --git a/packages/SystemUI/res/values/strings.xml b/packages/SystemUI/res/values/strings.xml index 0445fe8..e9a1acf 100644 --- a/packages/SystemUI/res/values/strings.xml +++ b/packages/SystemUI/res/values/strings.xml @@ -670,6 +670,8 @@ <string name="recents_lock_to_app_button_label">lock to app</string> <!-- Recents: Temporary string for the button in the recents search bar. [CHAR LIMIT=NONE] --> <string name="recents_search_bar_label">search</string> + <!-- Recents: Launch error string. [CHAR LIMIT=NONE] --> + <string name="recents_launch_error_message">Could not start <xliff:g id="app" example="Calendar">%s</xliff:g>.</string> <!-- Expanded Status Bar Header: Battery Charged [CHAR LIMIT=40] --> diff --git a/packages/SystemUI/src/com/android/systemui/recents/AlternateRecentsComponent.java b/packages/SystemUI/src/com/android/systemui/recents/AlternateRecentsComponent.java index 787de4e..702f59a 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/AlternateRecentsComponent.java +++ b/packages/SystemUI/src/com/android/systemui/recents/AlternateRecentsComponent.java @@ -222,9 +222,8 @@ public class AlternateRecentsComponent implements ActivityOptions.OnAnimationSta // Bring an active task to the foreground mSystemServicesProxy.moveTaskToFront(toTask.key.id, launchOpts); } else { - try { - mSystemServicesProxy.startActivityFromRecents(toTask.key.id, launchOpts); - } catch (ActivityNotFoundException anfe) {} + mSystemServicesProxy.startActivityFromRecents(mContext, toTask.key.id, + toTask.activityLabel, launchOpts); } } diff --git a/packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java b/packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java index 15c5e1b..a49bbf9 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java +++ b/packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java @@ -614,6 +614,12 @@ public class RecentsActivity extends Activity implements RecentsView.RecentsView } @Override + public void onTaskLaunchFailed() { + // Return to Home + dismissRecentsToHomeRaw(true); + } + + @Override public void onAllTaskViewsDismissed() { mFinishLaunchHomeRunnable.run(); } diff --git a/packages/SystemUI/src/com/android/systemui/recents/misc/SystemServicesProxy.java b/packages/SystemUI/src/com/android/systemui/recents/misc/SystemServicesProxy.java index 11b7b8b..9554f01 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/misc/SystemServicesProxy.java +++ b/packages/SystemUI/src/com/android/systemui/recents/misc/SystemServicesProxy.java @@ -57,6 +57,7 @@ import android.view.DisplayInfo; import android.view.SurfaceControl; import android.view.WindowManager; import android.view.accessibility.AccessibilityManager; +import com.android.systemui.R; import com.android.systemui.recents.Constants; import java.io.IOException; @@ -515,12 +516,18 @@ public class SystemServicesProxy { return takeScreenshot(); } - public void startActivityFromRecents(int taskId, ActivityOptions options) { + /** Starts an activity from recents. */ + public boolean startActivityFromRecents(Context context, int taskId, String taskName, + ActivityOptions options) { if (mIam != null) { try { mIam.startActivityFromRecents(taskId, options == null ? null : options.toBundle()); - } catch (RemoteException e) { + return true; + } catch (Exception e) { + Console.logError(context, + context.getString(R.string.recents_launch_error_message, taskName)); } } + return false; } } diff --git a/packages/SystemUI/src/com/android/systemui/recents/views/RecentsView.java b/packages/SystemUI/src/com/android/systemui/recents/views/RecentsView.java index e6d0280..6c22a3b 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/views/RecentsView.java +++ b/packages/SystemUI/src/com/android/systemui/recents/views/RecentsView.java @@ -56,6 +56,7 @@ public class RecentsView extends FrameLayout implements TaskStackView.TaskStackV /** The RecentsView callbacks */ public interface RecentsViewCallbacks { public void onTaskViewClicked(); + public void onTaskLaunchFailed(); public void onAllTaskViewsDismissed(); public void onExitToHomeAnimationTriggered(); } @@ -471,13 +472,18 @@ public class RecentsView extends FrameLayout implements TaskStackView.TaskStackV // Bring an active task to the foreground ssp.moveTaskToFront(task.key.id, launchOpts); } else { - try { - ssp.startActivityFromRecents(task.key.id, launchOpts); + if (ssp.startActivityFromRecents(getContext(), task.key.id, + task.activityLabel, launchOpts)) { if (launchOpts == null && lockToTask) { ssp.lockCurrentTask(); } - } catch (ActivityNotFoundException anfe) { - Console.logError(getContext(), "Could not start Activity"); + } else { + // Dismiss the task and return the user to home if we fail to + // launch the task + onTaskViewDismissed(task); + if (mCb != null) { + mCb.onTaskLaunchFailed(); + } } } } |