Merge "Fix default home detection logic" into qt-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
21cb9f03cf
@@ -16,14 +16,13 @@
|
|||||||
|
|
||||||
package com.android.systemui.assist;
|
package com.android.systemui.assist;
|
||||||
|
|
||||||
import static com.android.systemui.shared.system.PackageManagerWrapper.ACTION_PREFERRED_ACTIVITY_CHANGED;
|
|
||||||
|
|
||||||
import android.app.ActivityManager;
|
import android.app.ActivityManager;
|
||||||
import android.content.BroadcastReceiver;
|
import android.content.BroadcastReceiver;
|
||||||
import android.content.ComponentName;
|
import android.content.ComponentName;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.IntentFilter;
|
import android.content.IntentFilter;
|
||||||
|
import android.content.pm.ResolveInfo;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.os.SystemClock;
|
import android.os.SystemClock;
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
@@ -44,6 +43,7 @@ import com.android.systemui.statusbar.StatusBarState;
|
|||||||
import java.io.PrintWriter;
|
import java.io.PrintWriter;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -68,6 +68,14 @@ final class AssistHandleReminderExpBehavior implements BehaviorController {
|
|||||||
private static final boolean DEFAULT_SUPPRESS_ON_LAUNCHER = false;
|
private static final boolean DEFAULT_SUPPRESS_ON_LAUNCHER = false;
|
||||||
private static final boolean DEFAULT_SUPPRESS_ON_APPS = false;
|
private static final boolean DEFAULT_SUPPRESS_ON_APPS = false;
|
||||||
|
|
||||||
|
private static final String[] DEFAULT_HOME_CHANGE_ACTIONS = new String[] {
|
||||||
|
PackageManagerWrapper.ACTION_PREFERRED_ACTIVITY_CHANGED,
|
||||||
|
Intent.ACTION_BOOT_COMPLETED,
|
||||||
|
Intent.ACTION_PACKAGE_ADDED,
|
||||||
|
Intent.ACTION_PACKAGE_CHANGED,
|
||||||
|
Intent.ACTION_PACKAGE_REMOVED
|
||||||
|
};
|
||||||
|
|
||||||
private final StatusBarStateController.StateListener mStatusBarStateListener =
|
private final StatusBarStateController.StateListener mStatusBarStateListener =
|
||||||
new StatusBarStateController.StateListener() {
|
new StatusBarStateController.StateListener() {
|
||||||
@Override
|
@Override
|
||||||
@@ -110,8 +118,7 @@ final class AssistHandleReminderExpBehavior implements BehaviorController {
|
|||||||
mDefaultHome = getCurrentDefaultHome();
|
mDefaultHome = getCurrentDefaultHome();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
private final IntentFilter mDefaultHomeIntentFilter =
|
private final IntentFilter mDefaultHomeIntentFilter;
|
||||||
new IntentFilter(ACTION_PREFERRED_ACTIVITY_CHANGED);
|
|
||||||
private final Runnable mResetConsecutiveTaskSwitches = this::resetConsecutiveTaskSwitches;
|
private final Runnable mResetConsecutiveTaskSwitches = this::resetConsecutiveTaskSwitches;
|
||||||
|
|
||||||
private final Handler mHandler;
|
private final Handler mHandler;
|
||||||
@@ -146,6 +153,10 @@ final class AssistHandleReminderExpBehavior implements BehaviorController {
|
|||||||
mStatusBarStateController = Dependency.get(StatusBarStateController.class);
|
mStatusBarStateController = Dependency.get(StatusBarStateController.class);
|
||||||
mActivityManagerWrapper = ActivityManagerWrapper.getInstance();
|
mActivityManagerWrapper = ActivityManagerWrapper.getInstance();
|
||||||
mOverviewProxyService = Dependency.get(OverviewProxyService.class);
|
mOverviewProxyService = Dependency.get(OverviewProxyService.class);
|
||||||
|
mDefaultHomeIntentFilter = new IntentFilter();
|
||||||
|
for (String action : DEFAULT_HOME_CHANGE_ACTIONS) {
|
||||||
|
mDefaultHomeIntentFilter.addAction(action);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -205,7 +216,24 @@ final class AssistHandleReminderExpBehavior implements BehaviorController {
|
|||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
private static ComponentName getCurrentDefaultHome() {
|
private static ComponentName getCurrentDefaultHome() {
|
||||||
return PackageManagerWrapper.getInstance().getHomeActivities(new ArrayList<>());
|
List<ResolveInfo> homeActivities = new ArrayList<>();
|
||||||
|
ComponentName defaultHome =
|
||||||
|
PackageManagerWrapper.getInstance().getHomeActivities(homeActivities);
|
||||||
|
if (defaultHome != null) {
|
||||||
|
return defaultHome;
|
||||||
|
}
|
||||||
|
|
||||||
|
int topPriority = Integer.MIN_VALUE;
|
||||||
|
ComponentName topComponent = null;
|
||||||
|
for (ResolveInfo resolveInfo : homeActivities) {
|
||||||
|
if (resolveInfo.priority > topPriority) {
|
||||||
|
topComponent = resolveInfo.activityInfo.getComponentName();
|
||||||
|
topPriority = resolveInfo.priority;
|
||||||
|
} else if (resolveInfo.priority == topPriority) {
|
||||||
|
topComponent = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return topComponent;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void handleStatusBarStateChanged(int newState) {
|
private void handleStatusBarStateChanged(int newState) {
|
||||||
|
|||||||
@@ -16,8 +16,6 @@
|
|||||||
|
|
||||||
package com.android.systemui.assist;
|
package com.android.systemui.assist;
|
||||||
|
|
||||||
import static com.android.systemui.shared.system.PackageManagerWrapper.ACTION_PREFERRED_ACTIVITY_CHANGED;
|
|
||||||
|
|
||||||
import android.app.ActivityManager;
|
import android.app.ActivityManager;
|
||||||
import android.app.KeyguardManager;
|
import android.app.KeyguardManager;
|
||||||
import android.content.BroadcastReceiver;
|
import android.content.BroadcastReceiver;
|
||||||
@@ -25,6 +23,7 @@ import android.content.ComponentName;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.IntentFilter;
|
import android.content.IntentFilter;
|
||||||
|
import android.content.pm.ResolveInfo;
|
||||||
|
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
|
|
||||||
@@ -38,6 +37,7 @@ import com.android.systemui.statusbar.StatusBarState;
|
|||||||
import com.android.systemui.statusbar.phone.StatusBar;
|
import com.android.systemui.statusbar.phone.StatusBar;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/** Class to monitor and report the state of the phone. */
|
/** Class to monitor and report the state of the phone. */
|
||||||
final class PhoneStateMonitor {
|
final class PhoneStateMonitor {
|
||||||
@@ -53,6 +53,14 @@ final class PhoneStateMonitor {
|
|||||||
private static final int PHONE_STATE_APP_IMMERSIVE = 9;
|
private static final int PHONE_STATE_APP_IMMERSIVE = 9;
|
||||||
private static final int PHONE_STATE_APP_FULLSCREEN = 10;
|
private static final int PHONE_STATE_APP_FULLSCREEN = 10;
|
||||||
|
|
||||||
|
private static final String[] DEFAULT_HOME_CHANGE_ACTIONS = new String[] {
|
||||||
|
PackageManagerWrapper.ACTION_PREFERRED_ACTIVITY_CHANGED,
|
||||||
|
Intent.ACTION_BOOT_COMPLETED,
|
||||||
|
Intent.ACTION_PACKAGE_ADDED,
|
||||||
|
Intent.ACTION_PACKAGE_CHANGED,
|
||||||
|
Intent.ACTION_PACKAGE_REMOVED
|
||||||
|
};
|
||||||
|
|
||||||
private final Context mContext;
|
private final Context mContext;
|
||||||
private final StatusBarStateController mStatusBarStateController;
|
private final StatusBarStateController mStatusBarStateController;
|
||||||
|
|
||||||
@@ -64,14 +72,17 @@ final class PhoneStateMonitor {
|
|||||||
mStatusBarStateController = Dependency.get(StatusBarStateController.class);
|
mStatusBarStateController = Dependency.get(StatusBarStateController.class);
|
||||||
|
|
||||||
ActivityManagerWrapper activityManagerWrapper = ActivityManagerWrapper.getInstance();
|
ActivityManagerWrapper activityManagerWrapper = ActivityManagerWrapper.getInstance();
|
||||||
mDefaultHome = PackageManagerWrapper.getInstance().getHomeActivities(new ArrayList<>());
|
mDefaultHome = getCurrentDefaultHome();
|
||||||
|
IntentFilter intentFilter = new IntentFilter();
|
||||||
|
for (String action : DEFAULT_HOME_CHANGE_ACTIONS) {
|
||||||
|
intentFilter.addAction(action);
|
||||||
|
}
|
||||||
mContext.registerReceiver(new BroadcastReceiver() {
|
mContext.registerReceiver(new BroadcastReceiver() {
|
||||||
@Override
|
@Override
|
||||||
public void onReceive(Context context, Intent intent) {
|
public void onReceive(Context context, Intent intent) {
|
||||||
mDefaultHome =
|
mDefaultHome = getCurrentDefaultHome();
|
||||||
PackageManagerWrapper.getInstance().getHomeActivities(new ArrayList<>());
|
|
||||||
}
|
}
|
||||||
}, new IntentFilter(ACTION_PREFERRED_ACTIVITY_CHANGED));
|
}, intentFilter);
|
||||||
mLauncherShowing = isLauncherShowing(activityManagerWrapper.getRunningTask());
|
mLauncherShowing = isLauncherShowing(activityManagerWrapper.getRunningTask());
|
||||||
activityManagerWrapper.registerTaskStackListener(new TaskStackChangeListener() {
|
activityManagerWrapper.registerTaskStackListener(new TaskStackChangeListener() {
|
||||||
@Override
|
@Override
|
||||||
@@ -93,6 +104,28 @@ final class PhoneStateMonitor {
|
|||||||
return phoneState;
|
return phoneState;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
private static ComponentName getCurrentDefaultHome() {
|
||||||
|
List<ResolveInfo> homeActivities = new ArrayList<>();
|
||||||
|
ComponentName defaultHome =
|
||||||
|
PackageManagerWrapper.getInstance().getHomeActivities(homeActivities);
|
||||||
|
if (defaultHome != null) {
|
||||||
|
return defaultHome;
|
||||||
|
}
|
||||||
|
|
||||||
|
int topPriority = Integer.MIN_VALUE;
|
||||||
|
ComponentName topComponent = null;
|
||||||
|
for (ResolveInfo resolveInfo : homeActivities) {
|
||||||
|
if (resolveInfo.priority > topPriority) {
|
||||||
|
topComponent = resolveInfo.activityInfo.getComponentName();
|
||||||
|
topPriority = resolveInfo.priority;
|
||||||
|
} else if (resolveInfo.priority == topPriority) {
|
||||||
|
topComponent = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return topComponent;
|
||||||
|
}
|
||||||
|
|
||||||
private int getPhoneLockscreenState() {
|
private int getPhoneLockscreenState() {
|
||||||
if (isDozing()) {
|
if (isDozing()) {
|
||||||
return PHONE_STATE_AOD1;
|
return PHONE_STATE_AOD1;
|
||||||
|
|||||||
Reference in New Issue
Block a user