Handling broader set of exceptions when startingActivity from Recents. (Bug 17481968)
Change-Id: Ia11e0f77e6c1f28f3d6946362d5a6333b57ac80e
This commit is contained in:
@@ -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] -->
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -613,6 +613,12 @@ public class RecentsActivity extends Activity implements RecentsView.RecentsView
|
||||
mVisible = false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTaskLaunchFailed() {
|
||||
// Return to Home
|
||||
dismissRecentsToHomeRaw(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAllTaskViewsDismissed() {
|
||||
mFinishLaunchHomeRunnable.run();
|
||||
|
||||
@@ -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;
|
||||
@@ -509,12 +510,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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
@@ -470,13 +471,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();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user