From 4b2e6f76ff27577ea086371c4c9e658886284d7c Mon Sep 17 00:00:00 2001 From: Yu-Han Yang Date: Fri, 26 Mar 2021 18:50:50 -0700 Subject: [PATCH] Update Location Settings footer when MLS changes Also changed strings: - from "Manage location permissions" to "App location permissions" - from "Location Services" to "manage location services" Bug: 180533061 Test: on device Change-Id: I135430674b9363ea7caaa44f6e9baed96b6ec3cf --- res/values/strings.xml | 21 ++++++-- res/xml/location_settings.xml | 7 +-- res/xml/location_settings_personal.xml | 3 +- res/xml/location_settings_workprofile.xml | 3 +- .../location/LocationPersonalSettings.java | 3 +- .../settings/location/LocationSettings.java | 1 + ...ionSettingsFooterPreferenceController.java | 50 +++++++++++++++++++ .../location/LocationWorkProfileSettings.java | 1 + 8 files changed, 78 insertions(+), 11 deletions(-) create mode 100644 src/com/android/settings/location/LocationSettingsFooterPreferenceController.java diff --git a/res/values/strings.xml b/res/values/strings.xml index e5784e39a8c..5fbc75e00fd 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -684,10 +684,21 @@ Loading\u2026 - - + + Location may use sources like GPS, Wi\u2011Fi, mobile networks, and sensors to help estimate - your device\u2019s location. + your device\u2019s location. Apps with the nearby devices permission can determine the + relative position of connected devices. + <a href=" + https://support.google.com/android/answer/3467281">Learn more</a>. + + + + Location access is off for apps and services. Your device location may still be sent to + emergency responders when you call or text an emergency number. + + <br><br>Apps with the nearby devices permission can determine the relative position of + connected devices. @@ -4090,7 +4101,7 @@ Location for work profile - Manage location permissions + App location permissions Location is off Allow apps and services to scan for nearby devices at any time, even when Bluetooth is off. This can be used, for example, to improve location-based features and services. + + Manage location services Location Services diff --git a/res/xml/location_settings.xml b/res/xml/location_settings.xml index df17052daa6..857885dee39 100644 --- a/res/xml/location_settings.xml +++ b/res/xml/location_settings.xml @@ -64,13 +64,14 @@ + android:selectable="false" + settings:controller="com.android.settings.location.LocationSettingsFooterPreferenceController"/> diff --git a/res/xml/location_settings_personal.xml b/res/xml/location_settings_personal.xml index 0307a85641a..726a96c302a 100644 --- a/res/xml/location_settings_personal.xml +++ b/res/xml/location_settings_personal.xml @@ -54,7 +54,8 @@ settings:controller="com.android.settings.location.LocationServicesPreferenceController"/> diff --git a/res/xml/location_settings_workprofile.xml b/res/xml/location_settings_workprofile.xml index 5ec3e1b0c6e..99ccf14bc70 100644 --- a/res/xml/location_settings_workprofile.xml +++ b/res/xml/location_settings_workprofile.xml @@ -62,7 +62,8 @@ settings:controller="com.android.settings.location.LocationServicesForWorkPreferenceController"/> diff --git a/src/com/android/settings/location/LocationPersonalSettings.java b/src/com/android/settings/location/LocationPersonalSettings.java index ef5465c75e7..0553d961766 100644 --- a/src/com/android/settings/location/LocationPersonalSettings.java +++ b/src/com/android/settings/location/LocationPersonalSettings.java @@ -50,8 +50,7 @@ public class LocationPersonalSettings extends DashboardFragment { super.onAttach(context); use(AppLocationPermissionPreferenceController.class).init(this); - // STOPSHIP(b/180533061): resolve the personal/work location services issue before we can - // ship. + use(LocationSettingsFooterPreferenceController.class).init(this); use(RecentLocationAccessSeeAllButtonPreferenceController.class).init(this); final int profileType = getArguments().getInt(ProfileSelectFragment.EXTRA_PROFILE); diff --git a/src/com/android/settings/location/LocationSettings.java b/src/com/android/settings/location/LocationSettings.java index b5105ed67ca..fe3cf30c84d 100644 --- a/src/com/android/settings/location/LocationSettings.java +++ b/src/com/android/settings/location/LocationSettings.java @@ -85,6 +85,7 @@ public class LocationSettings extends DashboardFragment { use(RecentLocationAccessPreferenceController.class).init(this); use(RecentLocationAccessSeeAllButtonPreferenceController.class).init(this); use(LocationForWorkPreferenceController.class).init(this); + use(LocationSettingsFooterPreferenceController.class).init(this); } @Override diff --git a/src/com/android/settings/location/LocationSettingsFooterPreferenceController.java b/src/com/android/settings/location/LocationSettingsFooterPreferenceController.java new file mode 100644 index 00000000000..48034bdd8ef --- /dev/null +++ b/src/com/android/settings/location/LocationSettingsFooterPreferenceController.java @@ -0,0 +1,50 @@ +/* + * Copyright (C) 2021 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.settings.location; + +import android.content.Context; +import android.text.Html; + +import androidx.preference.PreferenceScreen; + +import com.android.settings.R; +import com.android.settingslib.widget.FooterPreference; + +/** + * Preference controller for Location Settings footer. + */ +public class LocationSettingsFooterPreferenceController extends LocationBasePreferenceController { + FooterPreference mFooterPreference; + + public LocationSettingsFooterPreferenceController(Context context, String key) { + super(context, key); + } + + @Override + public void displayPreference(PreferenceScreen screen) { + super.displayPreference(screen); + mFooterPreference = screen.findPreference(getPreferenceKey()); + } + + @Override + public void onLocationModeChanged(int mode, boolean restricted) { + boolean enabled = mLocationEnabler.isEnabled(mode); + mFooterPreference.setTitle(Html.fromHtml(mContext.getString( + enabled ? R.string.location_settings_footer_location_on + : R.string.location_settings_footer_location_off))); + } +} diff --git a/src/com/android/settings/location/LocationWorkProfileSettings.java b/src/com/android/settings/location/LocationWorkProfileSettings.java index 4cafcbff384..24c44f3dd4e 100644 --- a/src/com/android/settings/location/LocationWorkProfileSettings.java +++ b/src/com/android/settings/location/LocationWorkProfileSettings.java @@ -52,6 +52,7 @@ public class LocationWorkProfileSettings extends DashboardFragment { use(AppLocationPermissionPreferenceController.class).init(this); use(LocationForWorkPreferenceController.class).init(this); use(RecentLocationAccessSeeAllButtonPreferenceController.class).init(this); + use(LocationSettingsFooterPreferenceController.class).init(this); final int profileType = getArguments().getInt(ProfileSelectFragment.EXTRA_PROFILE); final RecentLocationAccessPreferenceController controller = use(