fix: 修复首次初始化数据库Hotseat位置混乱问题
This commit is contained in:
@@ -223,32 +223,30 @@ public class AppManager {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
int hotseatCounter = 0;
|
|
||||||
for (int i = 0; i < allFirstApps.size(); i++) {
|
for (int i = 0; i < allFirstApps.size(); i++) {
|
||||||
AppInfo appInfo = allFirstApps.get(i);
|
AppInfo appInfo = allFirstApps.get(i);
|
||||||
if (DEFAULT_APP_PACKAGES.contains(appInfo.getPackageName())) {
|
|
||||||
appInfo.setOutside(1);
|
|
||||||
} else {
|
|
||||||
appInfo.setOutside(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (DEFAULT_DIALER_PACKAGE.contains(appInfo.getPackageName())) {
|
|
||||||
appInfo.setHotseat(1);
|
|
||||||
appInfo.setHotseatPosition(hotseatCounter++);
|
|
||||||
} else if (DEFAULT_CONTACT_PACKAGE.contains(appInfo.getPackageName())) {
|
|
||||||
appInfo.setHotseat(1);
|
|
||||||
appInfo.setHotseatPosition(hotseatCounter++);
|
|
||||||
} else if (DEFAULT_MESSAGE_PACKAGE.contains(appInfo.getPackageName())) {
|
|
||||||
appInfo.setHotseat(1);
|
|
||||||
appInfo.setHotseatPosition(hotseatCounter++);
|
|
||||||
} else if (DEFAULT_SETTINGS_PACKAGE.contains(appInfo.getPackageName())) {
|
|
||||||
appInfo.setHotseat(1);
|
|
||||||
appInfo.setHotseatPosition(hotseatCounter++);
|
|
||||||
} else {
|
|
||||||
appInfo.setHotseat(0);
|
|
||||||
appInfo.setHotseatPosition(0);
|
|
||||||
}
|
|
||||||
appInfo.setPosition(i);
|
appInfo.setPosition(i);
|
||||||
|
appInfo.setOutside(DEFAULT_APP_PACKAGES.contains(appInfo.getPackageName()) ? 1 : 0);
|
||||||
|
appInfo.setHotseat(0);
|
||||||
|
appInfo.setHotseatPosition(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 按照严格优先级顺序分配 Hotseat 位置,解决应用缺失导致的空位问题
|
||||||
|
int hotseatCounter = 1;
|
||||||
|
List<Set<String>> priorityOrder = new ArrayList<>();
|
||||||
|
priorityOrder.add(DEFAULT_DIALER_PACKAGE);
|
||||||
|
priorityOrder.add(DEFAULT_CONTACT_PACKAGE);
|
||||||
|
priorityOrder.add(DEFAULT_MESSAGE_PACKAGE);
|
||||||
|
priorityOrder.add(DEFAULT_SETTINGS_PACKAGE);
|
||||||
|
|
||||||
|
for (Set<String> prioritySet : priorityOrder) {
|
||||||
|
for (AppInfo app : allFirstApps) {
|
||||||
|
if (prioritySet.contains(app.getPackageName())) {
|
||||||
|
app.setHotseat(1);
|
||||||
|
app.setHotseatPosition(hotseatCounter++);
|
||||||
|
break; // 每个优先级分类只取一个匹配的应用
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (AppInfo app : allFirstApps) {
|
for (AppInfo app : allFirstApps) {
|
||||||
@@ -651,32 +649,30 @@ public class AppManager {
|
|||||||
.sorted(manager.getAppComparator())
|
.sorted(manager.getAppComparator())
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
final int[] hotseatCounter = {0};
|
|
||||||
IntStream.range(0, allFirstApps.size()).forEach(index -> {
|
IntStream.range(0, allFirstApps.size()).forEach(index -> {
|
||||||
AppInfo appInfo = allFirstApps.get(index);
|
AppInfo appInfo = allFirstApps.get(index);
|
||||||
if (DEFAULT_APP_PACKAGES.contains(appInfo.getPackageName())) {
|
|
||||||
appInfo.setOutside(1);
|
|
||||||
} else {
|
|
||||||
appInfo.setOutside(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (DEFAULT_DIALER_PACKAGE.contains(appInfo.getPackageName())) {
|
|
||||||
appInfo.setHotseat(1);
|
|
||||||
appInfo.setHotseatPosition(hotseatCounter[0]++);
|
|
||||||
} else if (DEFAULT_CONTACT_PACKAGE.contains(appInfo.getPackageName())) {
|
|
||||||
appInfo.setHotseat(1);
|
|
||||||
appInfo.setHotseatPosition(hotseatCounter[0]++);
|
|
||||||
} else if (DEFAULT_MESSAGE_PACKAGE.contains(appInfo.getPackageName())) {
|
|
||||||
appInfo.setHotseat(1);
|
|
||||||
appInfo.setHotseatPosition(hotseatCounter[0]++);
|
|
||||||
} else if (DEFAULT_SETTINGS_PACKAGE.contains(appInfo.getPackageName())) {
|
|
||||||
appInfo.setHotseat(1);
|
|
||||||
appInfo.setHotseatPosition(hotseatCounter[0]++);
|
|
||||||
} else {
|
|
||||||
appInfo.setHotseat(0);
|
|
||||||
appInfo.setHotseatPosition(0);
|
|
||||||
}
|
|
||||||
appInfo.setPosition(index);
|
appInfo.setPosition(index);
|
||||||
|
appInfo.setOutside(DEFAULT_APP_PACKAGES.contains(appInfo.getPackageName()) ? 1 : 0);
|
||||||
|
appInfo.setHotseat(0);
|
||||||
|
appInfo.setHotseatPosition(0);
|
||||||
|
});
|
||||||
|
|
||||||
|
// 按照严格优先级顺序分配 Hotseat 位置
|
||||||
|
final int[] hotseatCounter = {1};
|
||||||
|
List<Set<String>> priorityOrder = new ArrayList<>();
|
||||||
|
priorityOrder.add(DEFAULT_DIALER_PACKAGE);
|
||||||
|
priorityOrder.add(DEFAULT_CONTACT_PACKAGE);
|
||||||
|
priorityOrder.add(DEFAULT_MESSAGE_PACKAGE);
|
||||||
|
priorityOrder.add(DEFAULT_SETTINGS_PACKAGE);
|
||||||
|
|
||||||
|
priorityOrder.forEach(prioritySet -> {
|
||||||
|
allFirstApps.stream()
|
||||||
|
.filter(app -> prioritySet.contains(app.getPackageName()))
|
||||||
|
.findFirst()
|
||||||
|
.ifPresent(app -> {
|
||||||
|
app.setHotseat(1);
|
||||||
|
app.setHotseatPosition(hotseatCounter[0]++);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
allFirstApps.forEach(app -> {
|
allFirstApps.forEach(app -> {
|
||||||
|
|||||||
Reference in New Issue
Block a user