Loading AndroidManifest.xml +1 −0 Original line number Diff line number Diff line Loading @@ -114,6 +114,7 @@ <uses-permission android:name="android.permission.POST_NOTIFICATIONS" /> <uses-permission android:name="android.permission.READ_APP_SPECIFIC_LOCALES" /> <uses-permission android:name="android.permission.QUERY_ADMIN_POLICY" /> <uses-permission android:name="android.permission.READ_SAFETY_CENTER_STATUS" /> <application android:name=".SettingsApplication" Loading src/com/android/settings/Settings.java +3 −3 Original line number Diff line number Diff line Loading @@ -33,7 +33,7 @@ import com.android.settings.enterprise.EnterprisePrivacySettings; import com.android.settings.network.SubscriptionUtil; import com.android.settings.network.telephony.MobileNetworkUtils; import com.android.settings.overlay.FeatureFactory; import com.android.settings.safetycenter.SafetyCenterStatus; import com.android.settings.safetycenter.SafetyCenterStatusHolder; import com.android.settings.security.SecuritySettingsFeatureProvider; import com.google.android.setupdesign.util.ThemeHelper; Loading Loading @@ -152,7 +152,7 @@ public class Settings extends SettingsActivity { /** Redirects to SafetyCenter if enabled. */ @VisibleForTesting public void handleSafetyCenterRedirection() { if (SafetyCenterStatus.isEnabled()) { if (SafetyCenterStatusHolder.get().isEnabled(this)) { try { startActivity(new Intent(Intent.ACTION_SAFETY_CENTER)); finish(); Loading Loading @@ -213,7 +213,7 @@ public class Settings extends SettingsActivity { /** Redirects to SafetyCenter if enabled. */ @VisibleForTesting public void handleSafetyCenterRedirection() { if (SafetyCenterStatus.isEnabled()) { if (SafetyCenterStatusHolder.get().isEnabled(this)) { try { startActivity(new Intent(Intent.ACTION_SAFETY_CENTER)); finish(); Loading src/com/android/settings/privacy/PrivacyDashboardFragment.java +2 −2 Original line number Diff line number Diff line Loading @@ -22,7 +22,7 @@ import android.content.Context; import com.android.settings.R; import com.android.settings.dashboard.DashboardFragment; import com.android.settings.notification.LockScreenNotificationPreferenceController; import com.android.settings.safetycenter.SafetyCenterStatus; import com.android.settings.safetycenter.SafetyCenterStatusHolder; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.lifecycle.Lifecycle; Loading Loading @@ -93,7 +93,7 @@ public class PrivacyDashboardFragment extends DashboardFragment { @Override protected boolean isPageSearchEnabled(Context context) { return !SafetyCenterStatus.isEnabled(); return !SafetyCenterStatusHolder.get().isEnabled(context); } }; } src/com/android/settings/privacy/TopLevelPrivacyEntryPreferenceController.java +2 −2 Original line number Diff line number Diff line Loading @@ -20,7 +20,7 @@ import android.annotation.NonNull; import android.content.Context; import com.android.settings.core.BasePreferenceController; import com.android.settings.safetycenter.SafetyCenterStatus; import com.android.settings.safetycenter.SafetyCenterStatusHolder; /** The preference controller for the top level privacy tile. */ public class TopLevelPrivacyEntryPreferenceController extends BasePreferenceController { Loading @@ -31,7 +31,7 @@ public class TopLevelPrivacyEntryPreferenceController extends BasePreferenceCon @Override public int getAvailabilityStatus() { if (!SafetyCenterStatus.isEnabled()) { if (!SafetyCenterStatusHolder.get().isEnabled(mContext)) { return AVAILABLE; } return CONDITIONALLY_UNAVAILABLE; Loading src/com/android/settings/safetycenter/SafetyCenterStatus.java→src/com/android/settings/safetycenter/SafetyCenterStatusHolder.java +62 −0 Original line number Diff line number Diff line /* * Copyright (C) 2021 The Android Open Source Project * Copyright (C) 2022 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. Loading @@ -16,21 +16,47 @@ package com.android.settings.safetycenter; import android.provider.DeviceConfig; import android.content.Context; import android.safetycenter.SafetyCenterManager; import android.util.Log; import com.android.internal.annotations.VisibleForTesting; /** Knows whether safety center is enabled or disabled. */ public class SafetyCenterStatus { public class SafetyCenterStatusHolder { private static final String TAG = "SafetyCenterStatusHolder"; /** Whether SafetyCenter page is enabled. */ @VisibleForTesting public static final String SAFETY_CENTER_IS_ENABLED = "safety_center_is_enabled"; public static SafetyCenterStatusHolder sInstance; private SafetyCenterStatusHolder() {} /** Returns an instance of {@link SafetyCenterStatusHolder}. */ public static SafetyCenterStatusHolder get() { if (sInstance == null) { sInstance = new SafetyCenterStatusHolder(); } return sInstance; } /** Returns true is SafetyCenter page is enabled, false otherwise. */ public static boolean isEnabled() { // TODO(b/208625216): use SafetyManager API instead return DeviceConfig.getBoolean( DeviceConfig.NAMESPACE_PRIVACY, SAFETY_CENTER_IS_ENABLED, false); public boolean isEnabled(Context context) { if (context == null) { Log.e(TAG, "Context is null at SafetyCenterStatusHolder#isEnabled"); return false; } SafetyCenterManager safetyCenterManager = context.getSystemService(SafetyCenterManager.class); if (safetyCenterManager == null) { Log.w(TAG, "System service SAFETY_CENTER_SERVICE (SafetyCenterManager) is null"); return false; } try { return safetyCenterManager.isSafetyCenterEnabled(); } catch (RuntimeException e) { Log.e(TAG, "Calling isSafetyCenterEnabled failed.", e); return false; } } } Loading
AndroidManifest.xml +1 −0 Original line number Diff line number Diff line Loading @@ -114,6 +114,7 @@ <uses-permission android:name="android.permission.POST_NOTIFICATIONS" /> <uses-permission android:name="android.permission.READ_APP_SPECIFIC_LOCALES" /> <uses-permission android:name="android.permission.QUERY_ADMIN_POLICY" /> <uses-permission android:name="android.permission.READ_SAFETY_CENTER_STATUS" /> <application android:name=".SettingsApplication" Loading
src/com/android/settings/Settings.java +3 −3 Original line number Diff line number Diff line Loading @@ -33,7 +33,7 @@ import com.android.settings.enterprise.EnterprisePrivacySettings; import com.android.settings.network.SubscriptionUtil; import com.android.settings.network.telephony.MobileNetworkUtils; import com.android.settings.overlay.FeatureFactory; import com.android.settings.safetycenter.SafetyCenterStatus; import com.android.settings.safetycenter.SafetyCenterStatusHolder; import com.android.settings.security.SecuritySettingsFeatureProvider; import com.google.android.setupdesign.util.ThemeHelper; Loading Loading @@ -152,7 +152,7 @@ public class Settings extends SettingsActivity { /** Redirects to SafetyCenter if enabled. */ @VisibleForTesting public void handleSafetyCenterRedirection() { if (SafetyCenterStatus.isEnabled()) { if (SafetyCenterStatusHolder.get().isEnabled(this)) { try { startActivity(new Intent(Intent.ACTION_SAFETY_CENTER)); finish(); Loading Loading @@ -213,7 +213,7 @@ public class Settings extends SettingsActivity { /** Redirects to SafetyCenter if enabled. */ @VisibleForTesting public void handleSafetyCenterRedirection() { if (SafetyCenterStatus.isEnabled()) { if (SafetyCenterStatusHolder.get().isEnabled(this)) { try { startActivity(new Intent(Intent.ACTION_SAFETY_CENTER)); finish(); Loading
src/com/android/settings/privacy/PrivacyDashboardFragment.java +2 −2 Original line number Diff line number Diff line Loading @@ -22,7 +22,7 @@ import android.content.Context; import com.android.settings.R; import com.android.settings.dashboard.DashboardFragment; import com.android.settings.notification.LockScreenNotificationPreferenceController; import com.android.settings.safetycenter.SafetyCenterStatus; import com.android.settings.safetycenter.SafetyCenterStatusHolder; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.lifecycle.Lifecycle; Loading Loading @@ -93,7 +93,7 @@ public class PrivacyDashboardFragment extends DashboardFragment { @Override protected boolean isPageSearchEnabled(Context context) { return !SafetyCenterStatus.isEnabled(); return !SafetyCenterStatusHolder.get().isEnabled(context); } }; }
src/com/android/settings/privacy/TopLevelPrivacyEntryPreferenceController.java +2 −2 Original line number Diff line number Diff line Loading @@ -20,7 +20,7 @@ import android.annotation.NonNull; import android.content.Context; import com.android.settings.core.BasePreferenceController; import com.android.settings.safetycenter.SafetyCenterStatus; import com.android.settings.safetycenter.SafetyCenterStatusHolder; /** The preference controller for the top level privacy tile. */ public class TopLevelPrivacyEntryPreferenceController extends BasePreferenceController { Loading @@ -31,7 +31,7 @@ public class TopLevelPrivacyEntryPreferenceController extends BasePreferenceCon @Override public int getAvailabilityStatus() { if (!SafetyCenterStatus.isEnabled()) { if (!SafetyCenterStatusHolder.get().isEnabled(mContext)) { return AVAILABLE; } return CONDITIONALLY_UNAVAILABLE; Loading
src/com/android/settings/safetycenter/SafetyCenterStatus.java→src/com/android/settings/safetycenter/SafetyCenterStatusHolder.java +62 −0 Original line number Diff line number Diff line /* * Copyright (C) 2021 The Android Open Source Project * Copyright (C) 2022 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. Loading @@ -16,21 +16,47 @@ package com.android.settings.safetycenter; import android.provider.DeviceConfig; import android.content.Context; import android.safetycenter.SafetyCenterManager; import android.util.Log; import com.android.internal.annotations.VisibleForTesting; /** Knows whether safety center is enabled or disabled. */ public class SafetyCenterStatus { public class SafetyCenterStatusHolder { private static final String TAG = "SafetyCenterStatusHolder"; /** Whether SafetyCenter page is enabled. */ @VisibleForTesting public static final String SAFETY_CENTER_IS_ENABLED = "safety_center_is_enabled"; public static SafetyCenterStatusHolder sInstance; private SafetyCenterStatusHolder() {} /** Returns an instance of {@link SafetyCenterStatusHolder}. */ public static SafetyCenterStatusHolder get() { if (sInstance == null) { sInstance = new SafetyCenterStatusHolder(); } return sInstance; } /** Returns true is SafetyCenter page is enabled, false otherwise. */ public static boolean isEnabled() { // TODO(b/208625216): use SafetyManager API instead return DeviceConfig.getBoolean( DeviceConfig.NAMESPACE_PRIVACY, SAFETY_CENTER_IS_ENABLED, false); public boolean isEnabled(Context context) { if (context == null) { Log.e(TAG, "Context is null at SafetyCenterStatusHolder#isEnabled"); return false; } SafetyCenterManager safetyCenterManager = context.getSystemService(SafetyCenterManager.class); if (safetyCenterManager == null) { Log.w(TAG, "System service SAFETY_CENTER_SERVICE (SafetyCenterManager) is null"); return false; } try { return safetyCenterManager.isSafetyCenterEnabled(); } catch (RuntimeException e) { Log.e(TAG, "Calling isSafetyCenterEnabled failed.", e); return false; } } }