Launcher要修改单层桌面,有3个地方需要修改
屏蔽取消上划显示所有应用
将应用图标自动加载到单层桌面,包括开机和后续安装的应用
删除长按桌面图标的“remove”按钮
1. 屏蔽取消上划显示所有应用
diff --git a/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/PortraitStatesTouchController.java b/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/PortraitStatesTouchController.java
index 9016c1bea6..d50e062396 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/PortraitStatesTouchController.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/PortraitStatesTouchController.java
@@ -69,9 +69,6 @@ public class PortraitStatesTouchController extends AbstractStateChangeTouchContr
// Otherwise, don't intercept so they can scroll recents, dismiss a task, etc.
return false;
}
- if (LauncherAppState.isUserSingleLayerStyle() && mLauncher.isInState(NORMAL)) {
- return false;
- }
if (mLauncher.isInState(ALL_APPS)) {
// In all-apps only listen if the container cannot scroll itself
if (!mLauncher.getAppsView().shouldContainerScroll(ev)) {
@@ -100,6 +97,9 @@ public class PortraitStatesTouchController extends AbstractStateChangeTouchContr
} else if (fromState == OVERVIEW) {
return isDragTowardPositive ? OVERVIEW : NORMAL;
} else if (fromState == NORMAL && isDragTowardPositive) {
+ if (LauncherAppState.isUserSingleLayerStyle()) {
+ return fromState;
+ }
return ALL_APPS;
}
2. 将应用图标自动加载到单层桌面,包括开机和后续安装的应用
diff --git a/src/com/android/launcher3/LauncherAppState.java b/src/com/android/launcher3/LauncherAppState.java
index 33eed47236..a80de99614 100644
--- a/src/com/android/launcher3/LauncherAppState.java
+++ b/src/com/android/launcher3/LauncherAppState.java
@@ -226,4 +226,8 @@ public class LauncherAppState implements SafeCloseable {
}
}
}
+
+ public static boolean isUserSingleLayerStyle() {
+ return true;
+ }
}
diff --git a/src/com/android/launcher3/model/AddWorkspaceItemsTask.java b/src/com/android/launcher3/model/AddWorkspaceItemsTask.java
index 0d978e1b23..df0d629b83 100644
--- a/src/com/android/launcher3/model/AddWorkspaceItemsTask.java
+++ b/src/com/android/launcher3/model/AddWorkspaceItemsTask.java
@@ -104,8 +104,13 @@ public class AddWorkspaceItemsTask extends BaseModelUpdateTask {
continue;
}
+ boolean mForceAdd = false;
+ if (item.itemType == LauncherSettings.Favorites.ITEM_TYPE_APPLICATION
+ && item instanceof WorkspaceItemInfo) {
+ mForceAdd = ((WorkspaceItemInfo) item).hasExtraFlag(WorkspaceItemInfo.EXTRA_FLAG_FORCE_ADD);
+ }
// b/139663018 Short-circuit this logic if the icon is a system app
- if (PackageManagerHelper.isSystemApp(app.getContext(),
+ if (!mForceAdd && PackageManagerHelper.isSystemApp(app.getContext(),
Objects.requireNonNull(item.getIntent()))) {
if (TestProtocol.sDebugTracing) {
Log.d(TestProtocol.MISSING_PROMISE_ICON,
diff --git a/src/com/android/launcher3/model/BgDataModel.java b/src/com/android/launcher3/model/BgDataModel.java
index b0f6e13ae3..54997fff9f 100644
--- a/src/com/android/launcher3/model/BgDataModel.java
+++ b/src/com/android/launcher3/model/BgDataModel.java
@@ -404,6 +404,12 @@ public class BgDataModel {
return items;
}
+ public synchronized ArrayList<ItemInfo> getAllWorkspaceItemsWithoutAppWidget() {
+ ArrayList<ItemInfo> items = new ArrayList<>(workspaceItems.size());
+ items.addAll(workspaceItems);
+ return items;
+ }
+
/**
* Calls the provided {@code op} for all workspaceItems in the in-memory model (both persisted
* items and dynamic/predicted items for the provided {@code userHandle}.
diff --git a/src/com/android/launcher3/model/ItemInstallQueue.java b/src/com/android/launcher3/model/ItemInstallQueue.java
index 69f9b53090..b21bb91650 100644
--- a/src/com/android/l