diff --git a/res/values/strings.xml b/res/values/strings.xml index 16e8f3b5111..9d6244bafd5 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(