Adding code to open DWP settings of a recent task
Will transition to an API for opening settings if this CL lands: ag/5338673. Bug: 118319143 Test: manual test on a prototype Change-Id: Ia40576e0cd6196bfb0a0e8657916bbadff4c0b59
This commit is contained in:
@@ -17,6 +17,7 @@
|
||||
package com.android.quickstep.views;
|
||||
|
||||
import static android.widget.Toast.LENGTH_SHORT;
|
||||
|
||||
import static com.android.launcher3.BaseActivity.fromContext;
|
||||
import static com.android.launcher3.anim.Interpolators.FAST_OUT_SLOW_IN;
|
||||
import static com.android.launcher3.anim.Interpolators.LINEAR;
|
||||
@@ -26,7 +27,9 @@ import android.animation.AnimatorListenerAdapter;
|
||||
import android.animation.ObjectAnimator;
|
||||
import android.animation.TimeInterpolator;
|
||||
import android.app.ActivityOptions;
|
||||
import android.content.ActivityNotFoundException;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.res.Resources;
|
||||
import android.graphics.Outline;
|
||||
import android.graphics.drawable.Drawable;
|
||||
@@ -43,8 +46,10 @@ import android.widget.FrameLayout;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.android.launcher3.BaseDraggingActivity;
|
||||
import com.android.launcher3.Launcher;
|
||||
import com.android.launcher3.R;
|
||||
import com.android.launcher3.Utilities;
|
||||
import com.android.launcher3.userevent.nano.LauncherLogProto;
|
||||
import com.android.launcher3.userevent.nano.LauncherLogProto.Action.Direction;
|
||||
import com.android.launcher3.userevent.nano.LauncherLogProto.Action.Touch;
|
||||
import com.android.quickstep.RecentsModel;
|
||||
@@ -100,7 +105,7 @@ public class TaskView extends FrameLayout implements PageCallbacks {
|
||||
}
|
||||
};
|
||||
|
||||
private static FloatProperty<TaskView> FOCUS_TRANSITION =
|
||||
private static final FloatProperty<TaskView> FOCUS_TRANSITION =
|
||||
new FloatProperty<TaskView>("focusTransition") {
|
||||
@Override
|
||||
public void setValue(TaskView taskView, float v) {
|
||||
@@ -113,6 +118,9 @@ public class TaskView extends FrameLayout implements PageCallbacks {
|
||||
}
|
||||
};
|
||||
|
||||
static final Intent SEE_TIME_IN_APP_TEMPLATE =
|
||||
new Intent("com.android.settings.action.TIME_SPENT_IN_APP");
|
||||
|
||||
private final OnAttachStateChangeListener mTaskMenuStateListener =
|
||||
new OnAttachStateChangeListener() {
|
||||
@Override
|
||||
@@ -142,6 +150,8 @@ public class TaskView extends FrameLayout implements PageCallbacks {
|
||||
private TaskThumbnailCache.ThumbnailLoadRequest mThumbnailLoadRequest;
|
||||
private TaskIconCache.IconLoadRequest mIconLoadRequest;
|
||||
|
||||
private long mAppRemainingTimeMs = -1;
|
||||
|
||||
public TaskView(Context context) {
|
||||
this(context, null);
|
||||
}
|
||||
@@ -195,6 +205,10 @@ public class TaskView extends FrameLayout implements PageCallbacks {
|
||||
return mSnapshotView.getTaskOverlay();
|
||||
}
|
||||
|
||||
private boolean hasRemainingTime() {
|
||||
return mAppRemainingTimeMs > 0;
|
||||
}
|
||||
|
||||
public void launchTask(boolean animate) {
|
||||
launchTask(animate, (result) -> {
|
||||
if (!result) {
|
||||
@@ -421,6 +435,13 @@ public class TaskView extends FrameLayout implements PageCallbacks {
|
||||
}
|
||||
}
|
||||
|
||||
if (hasRemainingTime()) {
|
||||
info.addAction(
|
||||
new AccessibilityNodeInfo.AccessibilityAction(
|
||||
R.string.accessibility_app_usage_settings,
|
||||
getContext().getText(R.string.accessibility_app_usage_settings)));
|
||||
}
|
||||
|
||||
final RecentsView recentsView = getRecentsView();
|
||||
final AccessibilityNodeInfo.CollectionItemInfo itemInfo =
|
||||
AccessibilityNodeInfo.CollectionItemInfo.obtain(
|
||||
@@ -437,6 +458,11 @@ public class TaskView extends FrameLayout implements PageCallbacks {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (action == R.string.accessibility_app_usage_settings) {
|
||||
openAppUsageSettings();
|
||||
return true;
|
||||
}
|
||||
|
||||
final List<TaskSystemShortcut> shortcuts =
|
||||
mSnapshotView.getTaskOverlay().getEnabledShortcuts(this);
|
||||
final int count = shortcuts.size();
|
||||
@@ -455,6 +481,22 @@ public class TaskView extends FrameLayout implements PageCallbacks {
|
||||
return super.performAccessibilityAction(action, arguments);
|
||||
}
|
||||
|
||||
private void openAppUsageSettings() {
|
||||
final Intent intent = new Intent(SEE_TIME_IN_APP_TEMPLATE)
|
||||
.putExtra(Intent.EXTRA_PACKAGE_NAME,
|
||||
mTask.getTopComponent().getPackageName()).addFlags(
|
||||
Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
|
||||
try {
|
||||
final Launcher launcher = Launcher.getLauncher(getContext());
|
||||
launcher.startActivity(intent);
|
||||
launcher.getUserEventDispatcher().logActionOnControl(LauncherLogProto.Action.Touch.TAP,
|
||||
LauncherLogProto.ControlType.APP_USAGE_SETTINGS, this);
|
||||
} catch (ActivityNotFoundException e) {
|
||||
Log.e(TAG, "Failed to open app usage settings for task "
|
||||
+ mTask.getTopComponent().getPackageName(), e);
|
||||
}
|
||||
}
|
||||
|
||||
private RecentsView getRecentsView() {
|
||||
return (RecentsView) getParent();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user