Catalyst framework integration

Bug: 335132588
Flag: com.android.settingslib.flags.settings_catalyst
Test: Presubmit
Change-Id: Ic0f0193fd5cee144f2fab36ae5190156efb7bd10
This commit is contained in:
Jacky Wang
2024-09-09 20:58:38 +08:00
parent 457ab0748e
commit b3e1b527d8
3 changed files with 81 additions and 24 deletions

View File

@@ -16,6 +16,8 @@
package com.android.settings;
import static com.android.settingslib.flags.Flags.settingsCatalyst;
import android.app.Application;
import android.content.Context;
import android.content.pm.PackageManager;
@@ -42,13 +44,20 @@ import com.android.settings.overlay.FeatureFactoryImpl;
import com.android.settings.spa.SettingsSpaEnvironment;
import com.android.settingslib.applications.AppIconCacheManager;
import com.android.settingslib.datastore.BackupRestoreStorageManager;
import com.android.settingslib.metadata.PreferenceScreenMetadata;
import com.android.settingslib.metadata.PreferenceScreenRegistry;
import com.android.settingslib.metadata.ProvidePreferenceScreenOptions;
import com.android.settingslib.spa.framework.common.SpaEnvironmentFactory;
import com.google.android.setupcompat.util.WizardManagerHelper;
import java.lang.ref.WeakReference;
import java.util.List;
/** Settings application which sets up activity embedding rules for the large screen device. */
@ProvidePreferenceScreenOptions(
codegenCollector = "com.android.settings/PreferenceScreenCollector/get"
)
public class SettingsApplication extends Application {
private WeakReference<SettingsHomepageActivity> mHomeActivity = new WeakReference<>(null);
@@ -64,6 +73,11 @@ public class SettingsApplication extends Application {
public void onCreate() {
super.onCreate();
if (settingsCatalyst()) {
PreferenceScreenRegistry.INSTANCE.setPreferenceScreensSupplier(
this::getPreferenceScreens);
}
BackupRestoreStorageManager.getInstance(this)
.add(
new BatterySettingsStorage(this),
@@ -90,6 +104,13 @@ public class SettingsApplication extends Application {
registerActivityLifecycleCallbacks(new DeveloperOptionsActivityLifecycle());
}
/** Returns the screens using metadata. */
protected List<PreferenceScreenMetadata> getPreferenceScreens() {
// PreferenceScreenCollector is generated by annotation processor from classes annotated
// with @ProvidePreferenceScreen
return PreferenceScreenCollector.get(this);
}
@Override
public void onTerminate() {
BackupRestoreStorageManager.getInstance(this).removeAll();