From 70c11a7047ad108373ce5ee8a8c54b945cfa835f Mon Sep 17 00:00:00 2001 From: Abel Tesfaye Date: Wed, 10 Mar 2021 23:09:42 +0000 Subject: [PATCH 1/7] Update auto-rotate UI to comply with guidelines Bug: 182411771 Test: locally with flame Change-Id: Id94ae379dcf2590460b9cbbdf7a292290666796d --- res/values/strings.xml | 4 +++ res/xml/auto_rotate_settings.xml | 5 ++-- .../SmartAutoRotatePermissionController.java | 26 +++++++++++-------- 3 files changed, 21 insertions(+), 14 deletions(-) diff --git a/res/values/strings.xml b/res/values/strings.xml index 9bae3a5e964..38efbffa240 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -2845,6 +2845,10 @@ Turn on screen attention Keep screen on when looking at it + + Camera access is required for Face Detection. Tap to manage permissions for Device Personalization Services + + Manage permissions Night Light diff --git a/res/xml/auto_rotate_settings.xml b/res/xml/auto_rotate_settings.xml index a316b8fb29f..7c46d29a544 100644 --- a/res/xml/auto_rotate_settings.xml +++ b/res/xml/auto_rotate_settings.xml @@ -20,11 +20,10 @@ xmlns:settings="http://schemas.android.com/apk/res-auto" android:title="@string/accelerometer_title" > - { + mContext.startActivity(mIntent); + }); + } + @Override @AvailabilityStatus public int getAvailabilityStatus() { @@ -51,13 +64,4 @@ public class SmartAutoRotatePermissionController extends BasePreferenceControlle ? AVAILABLE_UNSEARCHABLE : UNSUPPORTED_ON_DEVICE; } - - @Override - public boolean handlePreferenceTreeClick(Preference preference) { - if (TextUtils.equals(getPreferenceKey(), preference.getKey())) { - mContext.startActivity(mIntent); - return true; - } - return super.handlePreferenceTreeClick(preference); - } } From 4d396f958028fac55f065ad5811a868640e58e69 Mon Sep 17 00:00:00 2001 From: George Chang Date: Mon, 15 Mar 2021 17:32:49 +0800 Subject: [PATCH 2/7] Update subtext for require unlock for NFC update nfc_secure_toggle_summary Bug: 182384599 Test: check subtext Change-Id: I06f11587f14d262727fcc293a73df4504f68c4f0 --- res/values/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/res/values/strings.xml b/res/values/strings.xml index 7e10006638d..8b1a6b38f89 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -1873,7 +1873,7 @@ Require device unlock for NFC - Allow NFC Payment and Transit use only when screen is unlocked + Allow NFC use only when screen is unlocked Android Beam From 2ce6dc82b3adc4657eaa994e4046e0d2a9985f22 Mon Sep 17 00:00:00 2001 From: Salud Lemus Date: Mon, 15 Mar 2021 20:54:30 +0000 Subject: [PATCH 3/7] Update Device Admin Info Settings text for a financed device Bug: 182804474 Test: Used a test device that is registered via ZT Change-Id: Ia48e1767038f8dc3d8965ee30bc7aa9efaec59ef --- res/values/strings.xml | 3 +++ .../specialaccess/deviceadmin/DeviceAdminAdd.java | 13 ++++++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/res/values/strings.xml b/res/values/strings.xml index 7a8c5c31ec7..c85624d4a2b 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -10503,6 +10503,9 @@ Your admin can monitor and manage apps and data associated with this device, including settings, permissions, corporate access, network activity, and the device\'s location information. + + Your device admin may be able to access data associated + with this device and change this device\’s settings. Turn off diff --git a/src/com/android/settings/applications/specialaccess/deviceadmin/DeviceAdminAdd.java b/src/com/android/settings/applications/specialaccess/deviceadmin/DeviceAdminAdd.java index 7c8b96f4ff5..1fe3f177b69 100644 --- a/src/com/android/settings/applications/specialaccess/deviceadmin/DeviceAdminAdd.java +++ b/src/com/android/settings/applications/specialaccess/deviceadmin/DeviceAdminAdd.java @@ -16,6 +16,8 @@ package com.android.settings.applications.specialaccess.deviceadmin; +import static android.app.admin.DevicePolicyManager.DEVICE_OWNER_TYPE_FINANCED; + import android.app.Activity; import android.app.ActivityManager; import android.app.AppOpsManager; @@ -661,7 +663,11 @@ public class DeviceAdminAdd extends Activity { mAdminWarning.setText(R.string.admin_profile_owner_user_message); } else { // Show device owner description. - mAdminWarning.setText(R.string.admin_device_owner_message); + if (isFinancedDevice()) { + mAdminWarning.setText(R.string.admin_financed_message); + } else { + mAdminWarning.setText(R.string.admin_device_owner_message); + } } mActionButton.setText(R.string.remove_device_admin); mActionButton.setEnabled(false); @@ -759,6 +765,11 @@ public class DeviceAdminAdd extends Activity { return info != null ? info.isManagedProfile() : false; } + private boolean isFinancedDevice() { + return mDPM.isDeviceManaged() && mDPM.getDeviceOwnerType( + mDPM.getDeviceOwnerComponentOnAnyUser()) == DEVICE_OWNER_TYPE_FINANCED; + } + /** * @return an {@link Optional} containing the admin with a given package name, if it exists, * or {@link Optional#empty()} otherwise. From 0e0247e5e4d7459e2aaa0c8622ce9a22c813e55f Mon Sep 17 00:00:00 2001 From: Salud Lemus Date: Mon, 15 Mar 2021 23:06:52 +0000 Subject: [PATCH 4/7] Undo making Image icon's visibility to GONE in Action Not Allowed Dialog for a financed device Bug: 182839352 Test: Used a test device that is registered via ZT Test: m RunSettingsRoboTests ROBOTEST_FILTER=ActionDisabledByAdminDialogHelperTest Change-Id: I42bb9ce9a624fa20cd755af2d323b4c4f94048f7 --- .../ActionDisabledByAdminDialogHelper.java | 9 +++---- ...ActionDisabledByAdminDialogHelperTest.java | 24 ------------------- 2 files changed, 3 insertions(+), 30 deletions(-) diff --git a/src/com/android/settings/enterprise/ActionDisabledByAdminDialogHelper.java b/src/com/android/settings/enterprise/ActionDisabledByAdminDialogHelper.java index 685da03499c..40138b4dad2 100644 --- a/src/com/android/settings/enterprise/ActionDisabledByAdminDialogHelper.java +++ b/src/com/android/settings/enterprise/ActionDisabledByAdminDialogHelper.java @@ -141,17 +141,14 @@ public class ActionDisabledByAdminDialogHelper { } private boolean isNotCurrentUserOrProfile(ComponentName admin, int userId) { - return !isFinancedDevice() - && (!RestrictedLockUtilsInternal.isAdminInCurrentUserOrProfile(mActivity, admin) - || !RestrictedLockUtils.isCurrentUserOrProfile(mActivity, userId)); + return !RestrictedLockUtilsInternal.isAdminInCurrentUserOrProfile(mActivity, admin) + || !RestrictedLockUtils.isCurrentUserOrProfile(mActivity, userId); } @VisibleForTesting void setAdminSupportIcon(View root, ComponentName admin, int userId) { ImageView supportIconView = root.requireViewById(R.id.admin_support_icon); - if (isFinancedDevice()) { - supportIconView.setVisibility(View.GONE); - } else if (isNotCurrentUserOrProfile(admin, userId)) { + if (isNotCurrentUserOrProfile(admin, userId)) { supportIconView.setImageDrawable( mActivity.getDrawable(com.android.internal.R.drawable.ic_info)); diff --git a/tests/robotests/src/com/android/settings/enterprise/ActionDisabledByAdminDialogHelperTest.java b/tests/robotests/src/com/android/settings/enterprise/ActionDisabledByAdminDialogHelperTest.java index 1ff1d79b815..3929e84ed00 100644 --- a/tests/robotests/src/com/android/settings/enterprise/ActionDisabledByAdminDialogHelperTest.java +++ b/tests/robotests/src/com/android/settings/enterprise/ActionDisabledByAdminDialogHelperTest.java @@ -36,10 +36,8 @@ import android.content.pm.UserInfo; import android.os.Process; import android.os.UserHandle; import android.os.UserManager; -import android.view.View; import android.view.ViewGroup; import android.widget.FrameLayout; -import android.widget.ImageView; import android.widget.TextView; import androidx.appcompat.app.AlertDialog; @@ -108,20 +106,6 @@ public class ActionDisabledByAdminDialogHelperTest { Settings.DeviceAdminSettingsActivity.class.getName())); } - @Test - public void testSetAdminSupportIconForFinancedDevice_adminSupportIconIsGone() { - final ShadowDevicePolicyManager dpmShadow = ShadowDevicePolicyManager.getShadow(); - final ViewGroup view = new FrameLayout(mActivity); - final ImageView supportIconImageView = createAdminSupportIconImageView(view, mActivity); - final ComponentName component = new ComponentName("some.package.name", - "some.package.name.SomeClass"); - setupFinancedDevice(dpmShadow); - - mHelper.setAdminSupportIcon(view, component, 123); - - assertEquals(View.GONE, supportIconImageView.getVisibility()); - } - @Test public void testSetAdminSupportTitle() { final ViewGroup view = new FrameLayout(mActivity); @@ -260,14 +244,6 @@ public class ActionDisabledByAdminDialogHelperTest { verify(builder, never()).setNeutralButton(anyInt(), any()); } - private static ImageView createAdminSupportIconImageView(final ViewGroup view, - final Activity activity) { - final ImageView supportIconView = new ImageView(activity); - supportIconView.setId(R.id.admin_support_icon); - view.addView(supportIconView); - return supportIconView; - } - private static TextView createAdminSupportDialogTitleTextView(final ViewGroup view, final Activity activity) { final TextView textView = new TextView(activity); From 48bd52e09130a124a2f970f11c08128f2a0402eb Mon Sep 17 00:00:00 2001 From: Zhen Zhang Date: Wed, 3 Mar 2021 13:53:34 -0800 Subject: [PATCH 5/7] Update settings for app hibernation Created an preference in Apps & Notifcations page as the entry point for apps that are hibernated. Also added a switch preference in AppInfo page for users to exempt an app from hibernation. Bug: 181172051 Test: HibernatedAppsPreferenceControllerTest; HibernationSwitchPreferenceControllerTest; AppInfoDashboardFragmentTest Change-Id: I72a90ab391cd521150fc155a6d9c67c846b7360d --- res/values/strings.xml | 12 ++ res/xml/app_and_notification.xml | 10 ++ res/xml/app_info_settings.xml | 13 ++ res/xml/app_info_settings_v2.xml | 13 ++ res/xml/apps.xml | 10 ++ src/com/android/settings/Utils.java | 3 + .../HibernatedAppsPreferenceController.java | 61 ++++++++ ...bernationPreferenceCategoryController.java | 30 ++++ .../appinfo/AppInfoDashboardFragment.java | 7 + ...HibernationSwitchPreferenceController.java | 145 +++++++++++++++++ ...ibernatedAppsPreferenceControllerTest.java | 63 ++++++++ ...rnationSwitchPreferenceControllerTest.java | 146 ++++++++++++++++++ 12 files changed, 513 insertions(+) create mode 100644 src/com/android/settings/applications/HibernatedAppsPreferenceController.java create mode 100644 src/com/android/settings/applications/appinfo/AppHibernationPreferenceCategoryController.java create mode 100644 src/com/android/settings/applications/appinfo/HibernationSwitchPreferenceController.java create mode 100644 tests/unit/src/com/android/settings/applications/HibernatedAppsPreferenceControllerTest.java create mode 100644 tests/unit/src/com/android/settings/applications/appinfo/HibernationSwitchPreferenceControllerTest.java diff --git a/res/values/strings.xml b/res/values/strings.xml index 7e10006638d..c464da02fb2 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -9800,6 +9800,18 @@ Control app access to your data + + Unused apps + + + + %d unused app + %d unused apps + + + + Remove permissions and free up space + All apps diff --git a/res/xml/app_and_notification.xml b/res/xml/app_and_notification.xml index 49d8e9b85fd..8b4c912485c 100644 --- a/res/xml/app_and_notification.xml +++ b/res/xml/app_and_notification.xml @@ -83,6 +83,16 @@ + + + + + + + + + + + + + + + + + + Date: Tue, 16 Mar 2021 10:12:44 +0000 Subject: [PATCH 6/7] Revert "Use androidx LifecycleObserver for wiring up controller ..." Revert submission 13804074-controller-lifecycle Reason for revert: ag/182373167, see a crash related to this new cl. Reverted Changes: I39ac69f24:Use androidx LifecycleObserver for wiring up contr... I086620e31:Add javadoc about lifecycles for xml defined Contr... Fix: 182373167 Change-Id: I7e6d2e9e6fd363a3afdd3dbab24e7c3b36e9ed29 --- src/com/android/settings/dashboard/DashboardFragment.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/com/android/settings/dashboard/DashboardFragment.java b/src/com/android/settings/dashboard/DashboardFragment.java index 7acbd1997c5..1b2be809a6d 100644 --- a/src/com/android/settings/dashboard/DashboardFragment.java +++ b/src/com/android/settings/dashboard/DashboardFragment.java @@ -27,7 +27,6 @@ import android.util.Log; import androidx.annotation.CallSuper; import androidx.annotation.VisibleForTesting; -import androidx.lifecycle.LifecycleObserver; import androidx.preference.Preference; import androidx.preference.PreferenceGroup; import androidx.preference.PreferenceManager; @@ -45,6 +44,7 @@ import com.android.settings.overlay.FeatureFactory; import com.android.settings.widget.PrimarySwitchPreference; import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.lifecycle.Lifecycle; +import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.drawer.CategoryKey; import com.android.settingslib.drawer.DashboardCategory; import com.android.settingslib.drawer.ProviderTile; From 23562377b0ce10480bb5c2669aadf03bf857a681 Mon Sep 17 00:00:00 2001 From: Tsung-Mao Fang Date: Tue, 16 Mar 2021 10:12:44 +0000 Subject: [PATCH 7/7] Revert "Add javadoc about lifecycles for xml defined Controllers." Revert submission 13804074-controller-lifecycle Reason for revert: ag/182373167, see a crash related to this new cl. Reverted Changes: I39ac69f24:Use androidx LifecycleObserver for wiring up contr... I086620e31:Add javadoc about lifecycles for xml defined Contr... Change-Id: I6b539199de52432bb367303f5f78363886a05512 --- src/com/android/settings/core/BasePreferenceController.java | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/com/android/settings/core/BasePreferenceController.java b/src/com/android/settings/core/BasePreferenceController.java index 95c94cea11f..c90fe48bc9c 100644 --- a/src/com/android/settings/core/BasePreferenceController.java +++ b/src/com/android/settings/core/BasePreferenceController.java @@ -30,7 +30,6 @@ import android.text.TextUtils; import android.util.Log; import androidx.annotation.Nullable; -import androidx.lifecycle.LifecycleObserver; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; @@ -39,7 +38,6 @@ import com.android.settings.slices.SettingsSliceProvider; import com.android.settings.slices.SliceData; import com.android.settings.slices.Sliceable; import com.android.settingslib.core.AbstractPreferenceController; -import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.search.SearchIndexableRaw; import java.lang.annotation.Retention; @@ -52,9 +50,6 @@ import java.util.List; * Abstract class to consolidate utility between preference controllers and act as an interface * for Slices. The abstract classes that inherit from this class will act as the direct interfaces * for each type when plugging into Slices. - *

- * Controllers defined in xml are automatically {@link Lifecycle#addObserver(LifecycleObserver) - * wired up} to the settings lifecycle if they implement {@link LifecycleObserver}. */ public abstract class BasePreferenceController extends AbstractPreferenceController implements Sliceable {