summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWinson Chung <winsonc@google.com>2014-09-19 00:03:54 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2014-09-19 00:03:54 +0000
commitaab1a058dbeba8ec375790844d2ae5a99539084c (patch)
tree5f997e924845cc8c58393b8361ffee1b8e64f1f6
parent879c239d8ab78ad374dac5227b2a702d642b435b (diff)
parentf7dd908171a12f6a3f91575ac9fd1ef8ba7fefe6 (diff)
downloadframeworks_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)
-rw-r--r--packages/SystemUI/res/values/strings.xml2
-rw-r--r--packages/SystemUI/src/com/android/systemui/recents/AlternateRecentsComponent.java5
-rw-r--r--packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java6
-rw-r--r--packages/SystemUI/src/com/android/systemui/recents/misc/SystemServicesProxy.java11
-rw-r--r--packages/SystemUI/src/com/android/systemui/recents/views/RecentsView.java14
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();
+ }
}
}
}