From 99f01f7e7a128c39acf4a11ada775dd12349a307 Mon Sep 17 00:00:00 2001 From: Alex Stetson Date: Thu, 23 Jan 2025 17:47:12 -0800 Subject: [PATCH] Allow system services to be optional Some Android systems may not have certain system services (particularly the VirtualMachineManager). If this is the case, disable the preference rather than requiring the service and crashing the Settings app. Bug: 388221800 Test: manual Flag: NONE bugfix (cherry picked from https://googleplex-android-review.googlesource.com/q/commit:5a594828d7e148ac98b077591e8050e424b54966) Merged-In: I761054caebe3e846f5c6c76e2818662aad2cb511 Change-Id: I761054caebe3e846f5c6c76e2818662aad2cb511 --- .../LinuxTerminalPreferenceController.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/com/android/settings/development/linuxterminal/LinuxTerminalPreferenceController.java b/src/com/android/settings/development/linuxterminal/LinuxTerminalPreferenceController.java index 3bd958735c5..0835081efff 100644 --- a/src/com/android/settings/development/linuxterminal/LinuxTerminalPreferenceController.java +++ b/src/com/android/settings/development/linuxterminal/LinuxTerminalPreferenceController.java @@ -34,8 +34,6 @@ import com.android.settings.R; import com.android.settings.core.PreferenceControllerMixin; import com.android.settingslib.development.DeveloperOptionsPreferenceController; -import java.util.Objects; - /** Preference controller for Linux terminal option in developers option */ public class LinuxTerminalPreferenceController extends DeveloperOptionsPreferenceController implements PreferenceControllerMixin { @@ -59,13 +57,15 @@ public class LinuxTerminalPreferenceController extends DeveloperOptionsPreferenc mTerminalPackageName = isPackageInstalled(context.getPackageManager(), packageName) ? packageName : null; - StorageManager storageManager = - Objects.requireNonNull(context.getSystemService(StorageManager.class)); + StorageManager storageManager = context.getSystemService(StorageManager.class); VirtualMachineManager virtualMachineManager = - Objects.requireNonNull(context.getSystemService(VirtualMachineManager.class)); + context.getSystemService(VirtualMachineManager.class); + mIsDeviceCapable = getTotalMemory() >= MEMORY_MIN_BYTES + && storageManager != null && storageManager.getPrimaryStorageSize() >= STORAGE_MIN_BYTES + && virtualMachineManager != null && ((virtualMachineManager.getCapabilities() & CAPABILITY_NON_PROTECTED_VM) != 0); }