From a286bad826d32947973b1ae2f4fdd0c36d0e2e45 Mon Sep 17 00:00:00 2001 From: Yu-Han Yang Date: Tue, 23 Mar 2021 20:59:29 -0700 Subject: [PATCH 01/28] Untab Location Settings and tab Location Services Bug: 180533061 Test: on device Change-Id: I1f096ffe1028dbf46816bbac5d514e3cb48d9e2c --- res/xml/location_settings.xml | 29 +++++------- .../ProfileFragmentBridge.java | 6 +-- ...ProfileSelectLocationServicesFragment.java | 47 +++++++++++++++++++ .../settings/location/LocationSettings.java | 1 - 4 files changed, 61 insertions(+), 22 deletions(-) create mode 100644 src/com/android/settings/dashboard/profileselector/ProfileSelectLocationServicesFragment.java diff --git a/res/xml/location_settings.xml b/res/xml/location_settings.xml index 93f30e58d56..0ac7d1ab1f6 100644 --- a/res/xml/location_settings.xml +++ b/res/xml/location_settings.xml @@ -38,7 +38,17 @@ + settings:initialExpandedChildrenCount="3"> + + + - - - - - - Date: Wed, 24 Mar 2021 19:53:14 -0700 Subject: [PATCH 02/28] Update links to Scanning Settings Bug: 180533061 Test: on device Change-Id: I103dbb999b408614c065763ec6c84952af18ddb3 --- res/values/strings.xml | 6 +++--- .../bluetooth/BluetoothSwitchPreferenceController.java | 6 +++--- src/com/android/settings/wifi/WifiSettings.java | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/res/values/strings.xml b/res/values/strings.xml index 2369864fac8..8ced85c17a8 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -1696,7 +1696,7 @@ When Bluetooth is turned on, your device can communicate with other nearby Bluetooth devices. - When Bluetooth is turned on, your device can communicate with other nearby Bluetooth devices.\n\nTo improve device experience, apps and services can still 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. you can change this in scanning settings. + When Bluetooth is turned on, your device can communicate with other nearby Bluetooth devices.\n\nTo improve device experience, apps and services can still 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. you can change this in Bluetooth scanning settings. @@ -1949,13 +1949,13 @@ - To improve location accuracy, apps and services can still scan for Wi\u2011Fi networks at any time, even when Wi\u2011Fi is off. This can be used, for example, to improve location-based features and services. You can change this in LINK_BEGINscanning settingsLINK_END. + To improve location accuracy, apps and services can still scan for Wi\u2011Fi networks at any time, even when Wi\u2011Fi is off. This can be used, for example, to improve location-based features and services. You can change this in LINK_BEGINWi\u2011Fi scanning settingsLINK_END. To improve location accuracy, turn on Wi-Fi scanning in - LINK_BEGINscanning + LINK_BEGINWi\u2011Fi scanning settingsLINK_END. Don\u2019t show again diff --git a/src/com/android/settings/bluetooth/BluetoothSwitchPreferenceController.java b/src/com/android/settings/bluetooth/BluetoothSwitchPreferenceController.java index 27f10da320d..3bf913209c2 100644 --- a/src/com/android/settings/bluetooth/BluetoothSwitchPreferenceController.java +++ b/src/com/android/settings/bluetooth/BluetoothSwitchPreferenceController.java @@ -23,7 +23,7 @@ import androidx.annotation.VisibleForTesting; import com.android.settings.R; import com.android.settings.core.SubSettingLauncher; -import com.android.settings.location.LocationServices; +import com.android.settings.location.BluetoothScanningFragment; import com.android.settings.overlay.FeatureFactory; import com.android.settings.utils.AnnotationSpan; import com.android.settings.widget.SwitchWidgetController; @@ -100,7 +100,7 @@ public class BluetoothSwitchPreferenceController public void onClick(View v) { // send users to scanning settings if they click on the link in the summary text new SubSettingLauncher(mContext) - .setDestination(LocationServices.class.getName()) + .setDestination(BluetoothScanningFragment.class.getName()) .setSourceMetricsCategory(SettingsEnums.BLUETOOTH_FRAGMENT) .launch(); } @@ -117,4 +117,4 @@ public class BluetoothSwitchPreferenceController mFooterPreference.setTitle(R.string.bluetooth_empty_list_bluetooth_off); } } -} \ No newline at end of file +} diff --git a/src/com/android/settings/wifi/WifiSettings.java b/src/com/android/settings/wifi/WifiSettings.java index 5545de6ced8..97a74d767a6 100644 --- a/src/com/android/settings/wifi/WifiSettings.java +++ b/src/com/android/settings/wifi/WifiSettings.java @@ -63,7 +63,7 @@ import com.android.settings.core.FeatureFlags; import com.android.settings.core.SubSettingLauncher; import com.android.settings.datausage.DataUsagePreference; import com.android.settings.datausage.DataUsageUtils; -import com.android.settings.location.LocationServices; +import com.android.settings.location.WifiScanningFragment; import com.android.settings.overlay.FeatureFactory; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.widget.MainSwitchBarController; @@ -921,8 +921,8 @@ public class WifiSettings extends RestrictedSettingsFragment : getText(R.string.wifi_scan_notify_text_scanning_off); final LinkifyUtils.OnClickListener clickListener = () -> new SubSettingLauncher(getContext()) - .setDestination(LocationServices.class.getName()) - .setTitleRes(R.string.location_services_screen_title) + .setDestination(WifiScanningFragment.class.getName()) + .setTitleRes(R.string.location_scanning_wifi_always_scanning_title) .setSourceMetricsCategory(getMetricsCategory()) .launch(); mStatusMessagePreference.setText(title, description, clickListener); From 439cc64b1c3b2389c8ee85af9e0e39622ed122d1 Mon Sep 17 00:00:00 2001 From: Weng Su Date: Thu, 25 Mar 2021 12:10:06 +0800 Subject: [PATCH 03/28] [Provider Model] Move the Internet unavailable Wi-Fi down - Check the Wifi network have both INTERNET and VALIDATED capabilities to achieve effective network access - Move the Internet unavailable Wi-Fi down to the top of Wi-Fi list - Don't paint color for the Internet unavailable Wi-Fi - Screenshot: https://screenshot.googleplex.com/w82kbALssdTZmg4 Bug: 178457619 Bug: 178926547 Bug: 178978070 Test: manual test on device atest -c InternetUpdaterTest \ NetworkProviderWorkerTest \ ProviderModelSliceTest Change-Id: Idf04e556ab5a87abc5bc96d1934f5e8fd91fbfaa --- .../settings/network/InternetUpdater.java | 52 +++++++++---------- .../settings/network/ProviderModelSlice.java | 37 +++++++++---- .../telephony/NetworkProviderWorker.java | 6 +-- .../settings/wifi/slice/WifiSlice.java | 2 +- .../settings/network/InternetUpdaterTest.java | 44 ++++++++++++---- .../network/ProviderModelSliceTest.java | 6 ++- .../telephony/NetworkProviderWorkerTest.java | 12 ++--- 7 files changed, 101 insertions(+), 58 deletions(-) diff --git a/src/com/android/settings/network/InternetUpdater.java b/src/com/android/settings/network/InternetUpdater.java index 39672765725..dd70cef62af 100644 --- a/src/com/android/settings/network/InternetUpdater.java +++ b/src/com/android/settings/network/InternetUpdater.java @@ -142,13 +142,13 @@ public class InternetUpdater implements AirplaneModeEnabler.OnAirplaneModeChange private NetworkCallback mNetworkCallback = new NetworkCallback() { public void onCapabilitiesChanged(@NonNull Network network, @NonNull NetworkCapabilities networkCapabilities) { - checkNetworkCapabilities(networkCapabilities); + updateInternetAvailable(networkCapabilities); } @Override public void onLost(@NonNull Network network) { mInternetAvailable = false; - update(); + updateInternetType(); } }; @@ -203,7 +203,7 @@ public class InternetUpdater implements AirplaneModeEnabler.OnAirplaneModeChange Network activeNetwork = mConnectivityManager.getActiveNetwork(); if (activeNetwork == null) { mInternetAvailable = false; - update(); + updateInternetType(); return; } @@ -211,36 +211,34 @@ public class InternetUpdater implements AirplaneModeEnabler.OnAirplaneModeChange mConnectivityManager.getNetworkCapabilities(activeNetwork); if (activeNetworkCapabilities == null) { mInternetAvailable = false; - update(); + updateInternetType(); return; } - checkNetworkCapabilities(activeNetworkCapabilities); - } - - private void checkNetworkCapabilities(@NonNull NetworkCapabilities networkCapabilities) { - if (!networkCapabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)) { - mInternetAvailable = false; - update(); - return; - } - - boolean internetAvailable = false; - for (int transport : networkCapabilities.getTransportTypes()) { - if (sTransportMap.containsKey(transport)) { - mTransport = transport; - internetAvailable = true; - Log.i(TAG, "Detect an internet capability network with transport type: " - + mTransport); - break; - } - } - mInternetAvailable = internetAvailable; - update(); + updateInternetAvailable(activeNetworkCapabilities); } @VisibleForTesting - void update() { + void updateInternetAvailable(@NonNull NetworkCapabilities capabilities) { + boolean internetAvailable = false; + if (capabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) + && capabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED)) { + for (int transport : capabilities.getTransportTypes()) { + if (sTransportMap.containsKey(transport)) { + mTransport = transport; + internetAvailable = true; + Log.i(TAG, "Detect an internet available network with transport type: " + + mTransport); + break; + } + } + } + mInternetAvailable = internetAvailable; + updateInternetType(); + } + + @VisibleForTesting + void updateInternetType() { @InternetType int internetType = INTERNET_NETWORKS_AVAILABLE; if (mInternetAvailable) { internetType = sTransportMap.get(mTransport); diff --git a/src/com/android/settings/network/ProviderModelSlice.java b/src/com/android/settings/network/ProviderModelSlice.java index 18765a8e2fe..beb74890d0b 100644 --- a/src/com/android/settings/network/ProviderModelSlice.java +++ b/src/com/android/settings/network/ProviderModelSlice.java @@ -21,6 +21,7 @@ import static android.app.slice.Slice.EXTRA_TOGGLE_STATE; import static com.android.settings.slices.CustomSliceRegistry.PROVIDER_MODEL_SLICE_URI; +import android.annotation.ColorInt; import android.app.settings.SettingsEnums; import android.content.Context; import android.content.Intent; @@ -30,6 +31,7 @@ import android.telephony.SubscriptionManager; import android.util.Log; import androidx.annotation.VisibleForTesting; +import androidx.core.graphics.drawable.IconCompat; import androidx.slice.Slice; import androidx.slice.builders.ListBuilder; @@ -83,9 +85,10 @@ public class ProviderModelSlice extends WifiSlice { // Second section: Add a carrier item. // Third section: Add the Wi-Fi items which are not connected. // Fourth section: If device has connection problem, this row show the message for user. - boolean hasEthernet = isEthernetConnected(); + @InternetUpdater.InternetType int internetType = getInternetType(); final ListBuilder listBuilder = mHelper.createListBuilder(getUri()); - if (mHelper.isAirplaneModeEnabled() && !mWifiManager.isWifiEnabled() && !hasEthernet) { + if (mHelper.isAirplaneModeEnabled() && !mWifiManager.isWifiEnabled() + && internetType != InternetUpdater.INTERNET_ETHERNET) { log("Airplane mode is enabled."); return listBuilder.build(); } @@ -105,15 +108,17 @@ public class ProviderModelSlice extends WifiSlice { log("hasCarrier: " + hasCarrier); // First section: Add a Ethernet or Wi-Fi item which state is connected. + boolean isConnectedWifiAddedTop = false; final WifiSliceItem connectedWifiItem = mHelper.getConnectedWifiItem(wifiList); - if (hasEthernet) { + if (internetType == InternetUpdater.INTERNET_ETHERNET) { log("get Ethernet item which is connected"); listBuilder.addRow(createEthernetRow()); maxListSize--; } else { - if (connectedWifiItem != null) { - log("get Wi-Fi item which is connected"); + if (connectedWifiItem != null && internetType == InternetUpdater.INTERNET_WIFI) { + log("get Wi-Fi item which is connected to internet"); listBuilder.addRow(getWifiSliceItemRow(connectedWifiItem)); + isConnectedWifiAddedTop = true; maxListSize--; } } @@ -128,7 +133,7 @@ public class ProviderModelSlice extends WifiSlice { } // Third section: Add the connected Wi-Fi item to Wi-Fi list if the Ethernet is connected. - if (connectedWifiItem != null && hasEthernet) { + if (connectedWifiItem != null && !isConnectedWifiAddedTop) { log("get Wi-Fi item which is connected"); listBuilder.addRow(getWifiSliceItemRow(connectedWifiItem)); maxListSize--; @@ -222,12 +227,12 @@ public class ProviderModelSlice extends WifiSlice { return SliceBackgroundWorker.getInstance(getUri()); } - private boolean isEthernetConnected() { + private @InternetUpdater.InternetType int getInternetType() { final NetworkProviderWorker worker = getWorker(); if (worker == null) { - return false; + return InternetUpdater.INTERNET_NETWORKS_AVAILABLE; } - return worker.isEthernetConnected(); + return worker.getInternetType(); } @VisibleForTesting @@ -243,6 +248,20 @@ public class ProviderModelSlice extends WifiSlice { .setSubtitle(mContext.getText(R.string.to_switch_networks_disconnect_ethernet)); } + @Override + protected IconCompat getWifiSliceItemLevelIcon(WifiSliceItem wifiSliceItem) { + if (wifiSliceItem.getConnectedState() == WifiEntry.CONNECTED_STATE_CONNECTED + && getInternetType() != InternetUpdater.INTERNET_WIFI) { + final @ColorInt int tint = Utils.getColorAttrDefaultColor(mContext, + android.R.attr.colorControlNormal); + final Drawable drawable = mContext.getDrawable( + Utils.getWifiIconResource(wifiSliceItem.getLevel())); + drawable.setTint(tint); + return Utils.createIconWithDrawable(drawable); + } + return super.getWifiSliceItemLevelIcon(wifiSliceItem); + } + /** * Wrap the subscriptionManager call for test mocking. */ diff --git a/src/com/android/settings/network/telephony/NetworkProviderWorker.java b/src/com/android/settings/network/telephony/NetworkProviderWorker.java index 57f17b59560..698e779d8e6 100644 --- a/src/com/android/settings/network/telephony/NetworkProviderWorker.java +++ b/src/com/android/settings/network/telephony/NetworkProviderWorker.java @@ -288,9 +288,9 @@ public class NetworkProviderWorker extends WifiScanWorker implements } /** - * Returns true, if the ethernet network is connected. + * Returns the internet type. */ - public boolean isEthernetConnected() { - return mInternetType == INTERNET_ETHERNET; + public @InternetUpdater.InternetType int getInternetType() { + return mInternetType; } } diff --git a/src/com/android/settings/wifi/slice/WifiSlice.java b/src/com/android/settings/wifi/slice/WifiSlice.java index 898de56c836..e4a571d13e2 100644 --- a/src/com/android/settings/wifi/slice/WifiSlice.java +++ b/src/com/android/settings/wifi/slice/WifiSlice.java @@ -164,7 +164,7 @@ public class WifiSlice implements CustomSliceable { return rowBuilder; } - private IconCompat getWifiSliceItemLevelIcon(WifiSliceItem wifiSliceItem) { + protected IconCompat getWifiSliceItemLevelIcon(WifiSliceItem wifiSliceItem) { final @ColorInt int tint; if (wifiSliceItem.getConnectedState() == WifiEntry.CONNECTED_STATE_CONNECTED) { tint = Utils.getColorAccentDefaultColor(mContext); diff --git a/tests/unit/src/com/android/settings/network/InternetUpdaterTest.java b/tests/unit/src/com/android/settings/network/InternetUpdaterTest.java index 94456fe3f1d..3e9cdc7a763 100644 --- a/tests/unit/src/com/android/settings/network/InternetUpdaterTest.java +++ b/tests/unit/src/com/android/settings/network/InternetUpdaterTest.java @@ -38,6 +38,7 @@ import android.content.BroadcastReceiver; import android.content.Context; import android.content.IntentFilter; import android.net.ConnectivityManager; +import android.net.NetworkCapabilities; import android.net.wifi.WifiManager; import androidx.lifecycle.Lifecycle; @@ -107,57 +108,80 @@ public class InternetUpdaterTest { } @Test - public void update_apmOnWifiOff_getInternetApm() { + public void updateInternetAvailable_wifiConnectedAndNoValidated_internetUnavailable() { + final NetworkCapabilities networkCapabilities = new NetworkCapabilities(); + networkCapabilities.addTransportType(TRANSPORT_WIFI); + networkCapabilities.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET); + + mInternetUpdater.updateInternetAvailable(networkCapabilities); + + assertThat(mInternetUpdater.mInternetAvailable).isEqualTo(false); + } + + @Test + public void updateInternetAvailable_wifiConnectedAndValidated_internetAvailable() { + final NetworkCapabilities networkCapabilities = new NetworkCapabilities(); + networkCapabilities.addTransportType(TRANSPORT_WIFI); + networkCapabilities.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET); + networkCapabilities.addCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED); + + mInternetUpdater.updateInternetAvailable(networkCapabilities); + + assertThat(mInternetUpdater.mInternetAvailable).isEqualTo(true); + } + + @Test + public void updateInternetType_apmOnWifiOff_getInternetApm() { doReturn(true).when(mAirplaneModeEnabler).isAirplaneModeOn(); doReturn(WifiManager.WIFI_STATE_DISABLED).when(mWifiManager).getWifiState(); mInternetUpdater.mInternetAvailable = false; - mInternetUpdater.update(); + mInternetUpdater.updateInternetType(); assertThat(mInternetUpdater.getInternetType()).isEqualTo(INTERNET_OFF); } @Test - public void update_apmOnWifiOnNotConnected_getInternetNetworksAvailable() { + public void updateInternetType_apmOnWifiOnNotConnected_getInternetNetworksAvailable() { doReturn(true).when(mAirplaneModeEnabler).isAirplaneModeOn(); doReturn(WifiManager.WIFI_STATE_ENABLED).when(mWifiManager).getWifiState(); mInternetUpdater.mInternetAvailable = false; - mInternetUpdater.update(); + mInternetUpdater.updateInternetType(); assertThat(mInternetUpdater.getInternetType()).isEqualTo(INTERNET_NETWORKS_AVAILABLE); } @Test - public void update_apmOnWifiConnected_getInternetWifi() { + public void updateInternetType_apmOnWifiConnected_getInternetWifi() { doReturn(true).when(mAirplaneModeEnabler).isAirplaneModeOn(); doReturn(true).when(mWifiManager).isWifiEnabled(); mInternetUpdater.mInternetAvailable = true; mInternetUpdater.mTransport = TRANSPORT_WIFI; - mInternetUpdater.update(); + mInternetUpdater.updateInternetType(); assertThat(mInternetUpdater.getInternetType()).isEqualTo(INTERNET_WIFI); } @Test - public void update_apmOnCellularConnected_getInternetCellular() { + public void updateInternetType_apmOnCellularConnected_getInternetCellular() { doReturn(true).when(mAirplaneModeEnabler).isAirplaneModeOn(); mInternetUpdater.mInternetAvailable = true; mInternetUpdater.mTransport = TRANSPORT_CELLULAR; - mInternetUpdater.update(); + mInternetUpdater.updateInternetType(); assertThat(mInternetUpdater.getInternetType()).isEqualTo(INTERNET_CELLULAR); } @Test - public void update_apmOnEthernetConnected_getInternetEthernet() { + public void updateInternetType_apmOnEthernetConnected_getInternetEthernet() { doReturn(true).when(mAirplaneModeEnabler).isAirplaneModeOn(); mInternetUpdater.mInternetAvailable = true; mInternetUpdater.mTransport = TRANSPORT_ETHERNET; - mInternetUpdater.update(); + mInternetUpdater.updateInternetType(); assertThat(mInternetUpdater.getInternetType()).isEqualTo(INTERNET_ETHERNET); } diff --git a/tests/unit/src/com/android/settings/network/ProviderModelSliceTest.java b/tests/unit/src/com/android/settings/network/ProviderModelSliceTest.java index 4760daacef8..a323ed6ebef 100644 --- a/tests/unit/src/com/android/settings/network/ProviderModelSliceTest.java +++ b/tests/unit/src/com/android/settings/network/ProviderModelSliceTest.java @@ -236,7 +236,8 @@ public class ProviderModelSliceTest { mWifiList.add(mMockWifiSliceItem2); mMockNetworkProviderWorker.updateSelfResults(mWifiList); mockHelperCondition(false, true, true, null); - when(mMockNetworkProviderWorker.isEthernetConnected()).thenReturn(true); + when(mMockNetworkProviderWorker.getInternetType()) + .thenReturn(InternetUpdater.INTERNET_ETHERNET); final Slice slice = mMockProviderModelSlice.getSlice(); @@ -258,7 +259,8 @@ public class ProviderModelSliceTest { mWifiList.add(mMockWifiSliceItem2); mMockNetworkProviderWorker.updateSelfResults(mWifiList); mockHelperCondition(false, true, true, mWifiList.get(0)); - when(mMockNetworkProviderWorker.isEthernetConnected()).thenReturn(true); + when(mMockNetworkProviderWorker.getInternetType()) + .thenReturn(InternetUpdater.INTERNET_ETHERNET); final Slice slice = mMockProviderModelSlice.getSlice(); diff --git a/tests/unit/src/com/android/settings/network/telephony/NetworkProviderWorkerTest.java b/tests/unit/src/com/android/settings/network/telephony/NetworkProviderWorkerTest.java index 97f8e11f796..d052f31c854 100644 --- a/tests/unit/src/com/android/settings/network/telephony/NetworkProviderWorkerTest.java +++ b/tests/unit/src/com/android/settings/network/telephony/NetworkProviderWorkerTest.java @@ -261,24 +261,24 @@ public class NetworkProviderWorkerTest { } @Test - public void isEthernetConnected_connectedEthernet_shouldBeTrue() { + public void getInternetType_connectedEthernet_returnInternetEthernet() { mMockNetworkProviderWorker.onInternetTypeChanged(INTERNET_ETHERNET); - assertThat(mMockNetworkProviderWorker.isEthernetConnected()).isTrue(); + assertThat(mMockNetworkProviderWorker.getInternetType()).isEqualTo(INTERNET_ETHERNET); } @Test - public void isEthernetConnected_connectedWifi_shouldBeFalse() { + public void getInternetType_connectedWifi_returnInternetWifi() { mMockNetworkProviderWorker.onInternetTypeChanged(INTERNET_WIFI); - assertThat(mMockNetworkProviderWorker.isEthernetConnected()).isFalse(); + assertThat(mMockNetworkProviderWorker.getInternetType()).isEqualTo(INTERNET_WIFI); } @Test - public void isEthernetConnected_connectedCarrier_shouldBeFalse() { + public void getInternetType__connectedCarrier_returnInternetCellular() { mMockNetworkProviderWorker.onInternetTypeChanged(INTERNET_CELLULAR); - assertThat(mMockNetworkProviderWorker.isEthernetConnected()).isFalse(); + assertThat(mMockNetworkProviderWorker.getInternetType()).isEqualTo(INTERNET_CELLULAR); } public class MockNetworkProviderWorker extends NetworkProviderWorker { From dd2a68575620ecdfb923c2a656a26c2d025da4ed Mon Sep 17 00:00:00 2001 From: Almaz Mingaleev Date: Thu, 25 Mar 2021 15:22:30 +0000 Subject: [PATCH 04/28] Allow alternative time zone ID to be set device's zone. If America/Godthab is set as device time zone, display it as if America/Nuuk is chosen. If time zone is known, but is not an alternative and not shown in time zone picker, region will de derived from user's locale. Bug: 155738410 Test: atest com.android.settings.datetime.timezone.model Test: set persist.sys.timezone via adb and checked Date & Time screen Change-Id: I168fb4319e144dbe9e2496d06a681d4c09b411c0 --- .../datetime/timezone/RegionSearchPicker.java | 4 +- .../datetime/timezone/RegionZonePicker.java | 2 +- .../datetime/timezone/TimeZoneSettings.java | 8 ++-- .../model/FilteredCountryTimeZones.java | 45 +++++++++++++------ .../datetime/timezone/model/TimeZoneData.java | 2 +- .../timezone/model/TimeZoneDataTest.java | 19 ++++++++ .../timezone/model/TimeZoneDataTest.java | 11 ++--- 7 files changed, 64 insertions(+), 27 deletions(-) diff --git a/src/com/android/settings/datetime/timezone/RegionSearchPicker.java b/src/com/android/settings/datetime/timezone/RegionSearchPicker.java index 07986e29a9f..85d5d705b49 100644 --- a/src/com/android/settings/datetime/timezone/RegionSearchPicker.java +++ b/src/com/android/settings/datetime/timezone/RegionSearchPicker.java @@ -71,14 +71,14 @@ public class RegionSearchPicker extends BaseTimeZonePicker { final FilteredCountryTimeZones countryTimeZones = mTimeZoneData.lookupCountryTimeZones( regionId); final Activity activity = getActivity(); - if (countryTimeZones == null || countryTimeZones.getTimeZoneIds().isEmpty()) { + if (countryTimeZones == null || countryTimeZones.getPreferredTimeZoneIds().isEmpty()) { Log.e(TAG, "Region has no time zones: " + regionId); activity.setResult(Activity.RESULT_CANCELED); activity.finish(); return; } - List timeZoneIds = countryTimeZones.getTimeZoneIds(); + List timeZoneIds = countryTimeZones.getPreferredTimeZoneIds(); // Choose the time zone associated the region if there is only one time zone in that region if (timeZoneIds.size() == 1) { final Intent resultData = new Intent() diff --git a/src/com/android/settings/datetime/timezone/RegionZonePicker.java b/src/com/android/settings/datetime/timezone/RegionZonePicker.java index 8e4aa055322..7f988cd0ef0 100644 --- a/src/com/android/settings/datetime/timezone/RegionZonePicker.java +++ b/src/com/android/settings/datetime/timezone/RegionZonePicker.java @@ -103,7 +103,7 @@ public class RegionZonePicker extends BaseTimeZoneInfoPicker { // It could be a timely operations if there are many time zones. A region in time zone data // contains a maximum of 29 time zones currently. It may change in the future, but it's // unlikely to be changed drastically. - return getRegionTimeZoneInfo(filteredCountryTimeZones.getTimeZoneIds()); + return getRegionTimeZoneInfo(filteredCountryTimeZones.getPreferredTimeZoneIds()); } /** diff --git a/src/com/android/settings/datetime/timezone/TimeZoneSettings.java b/src/com/android/settings/datetime/timezone/TimeZoneSettings.java index 60cd6363ec2..6c779b54a0c 100644 --- a/src/com/android/settings/datetime/timezone/TimeZoneSettings.java +++ b/src/com/android/settings/datetime/timezone/TimeZoneSettings.java @@ -214,10 +214,11 @@ public class TimeZoneSettings extends DashboardFragment { mTimeZoneData.lookupCountryTimeZones(regionId); use(RegionZonePreferenceController.class).setTimeZoneInfo(tzInfo); - // Only clickable when the region has more than 1 time zones or no time zone is selected. + // Only clickable when the region has more than 1 time zones or no time zone is selected. use(RegionZonePreferenceController.class).setClickable(tzInfo == null || - (countryTimeZones != null && countryTimeZones.getTimeZoneIds().size() > 1)); + (countryTimeZones != null + && countryTimeZones.getPreferredTimeZoneIds().size() > 1)); use(TimeZoneInfoPreferenceController.class).setTimeZoneInfo(tzInfo); updatePreferenceStates(); @@ -244,7 +245,8 @@ public class TimeZoneSettings extends DashboardFragment { FilteredCountryTimeZones countryTimeZones = timeZoneData.lookupCountryTimeZones(regionId); - if (countryTimeZones == null || !countryTimeZones.getTimeZoneIds().contains(tzId)) { + if (countryTimeZones == null + || !countryTimeZones.getPreferredTimeZoneIds().contains(tzId)) { Log.e(TAG, "Unknown time zone id is selected: " + tzId); return; } diff --git a/src/com/android/settings/datetime/timezone/model/FilteredCountryTimeZones.java b/src/com/android/settings/datetime/timezone/model/FilteredCountryTimeZones.java index 7a3885326ba..05a542d9bcd 100644 --- a/src/com/android/settings/datetime/timezone/model/FilteredCountryTimeZones.java +++ b/src/com/android/settings/datetime/timezone/model/FilteredCountryTimeZones.java @@ -16,11 +16,15 @@ package com.android.settings.datetime.timezone.model; +import android.util.ArraySet; + import com.android.i18n.timezone.CountryTimeZones; +import java.time.Instant; +import java.util.ArrayList; import java.util.Collections; import java.util.List; -import java.util.stream.Collectors; +import java.util.Set; /** * Wrap {@class CountryTimeZones} to filter time zone that are shown in the picker. @@ -39,31 +43,46 @@ public class FilteredCountryTimeZones { * a timestamp known to be in the recent past is used. This should be updated occasionally but * it doesn't have to be very often. */ - private static final long MIN_USE_DATE_OF_TIMEZONE = 1546300800000L; // 1/1/2019 00:00 UTC + private static final Instant MIN_USE_DATE_OF_TIMEZONE = + Instant.ofEpochMilli(1546300800000L); // 1/1/2019 00:00 UTC private final CountryTimeZones mCountryTimeZones; - private final List mTimeZoneIds; + private final List mPreferredTimeZoneIds; + private final Set mAlternativeTimeZoneIds; public FilteredCountryTimeZones(CountryTimeZones countryTimeZones) { mCountryTimeZones = countryTimeZones; - List timeZoneIds = countryTimeZones.getTimeZoneMappings().stream() - .filter(timeZoneMapping -> - timeZoneMapping.isShownInPicker() - && (timeZoneMapping.getNotUsedAfter() == null - || timeZoneMapping.getNotUsedAfter() >= MIN_USE_DATE_OF_TIMEZONE)) - .map(timeZoneMapping -> timeZoneMapping.getTimeZoneId()) - .collect(Collectors.toList()); - mTimeZoneIds = Collections.unmodifiableList(timeZoneIds); + List timeZoneIds = new ArrayList<>(); + Set alternativeTimeZoneIds = new ArraySet<>(); + for (CountryTimeZones.TimeZoneMapping timeZoneMapping : + countryTimeZones.getTimeZoneMappings()) { + if (timeZoneMapping.isShownInPickerAt(MIN_USE_DATE_OF_TIMEZONE)) { + String timeZoneId = timeZoneMapping.getTimeZoneId(); + timeZoneIds.add(timeZoneId); + alternativeTimeZoneIds.addAll(timeZoneMapping.getAlternativeIds()); + } + } + mPreferredTimeZoneIds = Collections.unmodifiableList(timeZoneIds); + mAlternativeTimeZoneIds = Collections.unmodifiableSet(alternativeTimeZoneIds); } - public List getTimeZoneIds() { - return mTimeZoneIds; + public List getPreferredTimeZoneIds() { + return mPreferredTimeZoneIds; } public CountryTimeZones getCountryTimeZones() { return mCountryTimeZones; } + /** + * Returns whether {@code timeZoneId} is currently used in the country or is an alternative + * name of a currently used time zone. + */ + public boolean matches(String timeZoneId) { + return mPreferredTimeZoneIds.contains(timeZoneId) + || mAlternativeTimeZoneIds.contains(timeZoneId); + } + public String getRegionId() { return TimeZoneData.normalizeRegionId(mCountryTimeZones.getCountryIso()); } diff --git a/src/com/android/settings/datetime/timezone/model/TimeZoneData.java b/src/com/android/settings/datetime/timezone/model/TimeZoneData.java index 335e6e2cd6a..06f2de0f139 100644 --- a/src/com/android/settings/datetime/timezone/model/TimeZoneData.java +++ b/src/com/android/settings/datetime/timezone/model/TimeZoneData.java @@ -71,7 +71,7 @@ public class TimeZoneData { Set regionIds = new ArraySet<>(); for (CountryTimeZones countryTimeZone : countryTimeZones) { FilteredCountryTimeZones filteredZones = new FilteredCountryTimeZones(countryTimeZone); - if (filteredZones.getTimeZoneIds().contains(tzId)) { + if (filteredZones.matches(tzId)) { regionIds.add(filteredZones.getRegionId()); } } diff --git a/tests/robotests/src/com/android/settings/datetime/timezone/model/TimeZoneDataTest.java b/tests/robotests/src/com/android/settings/datetime/timezone/model/TimeZoneDataTest.java index d21aa04f3dc..784b3bb06c8 100644 --- a/tests/robotests/src/com/android/settings/datetime/timezone/model/TimeZoneDataTest.java +++ b/tests/robotests/src/com/android/settings/datetime/timezone/model/TimeZoneDataTest.java @@ -92,4 +92,23 @@ public class TimeZoneDataTest { .containsExactly("US", "GB"); assertThat(timeZoneData.lookupCountryCodesForZoneId("Unknown/Secret_City2")).isEmpty(); } + + @Test + public void lookupCountryCodesForNonCanonicalZoneId_returnsCurrentZone() { + TimeZoneData timeZoneData = new TimeZoneData(mCountryZonesFinder); + + CountryTimeZones greenland = mock(CountryTimeZones.class); + when(greenland.getCountryIso()).thenReturn("gl"); + when(greenland.getTimeZoneMappings()).thenReturn(Arrays.asList( + TimeZoneMapping.createForTests( + "America/Nuuk", + true /* showInPicker */, + null /* notUsedAfter */, + Arrays.asList("America/Godthab")))); + when(mCountryZonesFinder.lookupCountryTimeZonesForZoneId("America/Godthab")) + .thenReturn(Arrays.asList(greenland)); + + assertThat(timeZoneData.lookupCountryCodesForZoneId("America/Godthab")) + .containsExactly("GL"); + } } diff --git a/tests/unit/src/com/android/settings/datetime/timezone/model/TimeZoneDataTest.java b/tests/unit/src/com/android/settings/datetime/timezone/model/TimeZoneDataTest.java index a04c08d37e7..1d2194b037f 100644 --- a/tests/unit/src/com/android/settings/datetime/timezone/model/TimeZoneDataTest.java +++ b/tests/unit/src/com/android/settings/datetime/timezone/model/TimeZoneDataTest.java @@ -43,7 +43,7 @@ public class TimeZoneDataTest { FilteredCountryTimeZones countryTimeZones = mTimeZoneData.lookupCountryTimeZones(regionId); assertThat(countryTimeZones).isNotNull(); - assertThat(countryTimeZones.getTimeZoneIds().size()).isGreaterThan(0); + assertThat(countryTimeZones.getPreferredTimeZoneIds().size()).isGreaterThan(0); } } @@ -54,11 +54,8 @@ public class TimeZoneDataTest { 1) because we specifically exclude it with the picker attribute, and 2) because it's the same as Moscow after Oct 2014. */ - assertThat(mTimeZoneData.lookupCountryCodesForZoneId("Europe/Simferopol").isEmpty()) - .isTrue(); - assertThat(mTimeZoneData.lookupCountryCodesForZoneId("Europe/London").isEmpty()) - .isFalse(); - assertThat(mTimeZoneData.lookupCountryCodesForZoneId("America/Los_Angeles").isEmpty()) - .isFalse(); + assertThat(mTimeZoneData.lookupCountryCodesForZoneId("Europe/Simferopol")).isEmpty(); + assertThat(mTimeZoneData.lookupCountryCodesForZoneId("Europe/London")).isNotEmpty(); + assertThat(mTimeZoneData.lookupCountryCodesForZoneId("America/Los_Angeles")).isNotEmpty(); } } From 5c8caa3154bd6f0296c01a47b55473f0669bccdc Mon Sep 17 00:00:00 2001 From: "Wesley.CW Wang" Date: Mon, 29 Mar 2021 18:47:57 +0800 Subject: [PATCH 05/28] Reset smart battery page switch component - Reset the switch to default design Bug: 178199757 Test: make RunSettingsRoboTests -j40 Change-Id: I698493a946d7c8daaac73bfd3aaab807244997b0 --- res/xml/smart_battery_detail.xml | 12 ++++++---- .../SmartBatteryPreferenceController.java | 23 ++++++------------- .../SmartBatteryPreferenceControllerTest.java | 21 ++++++++--------- 3 files changed, 24 insertions(+), 32 deletions(-) diff --git a/res/xml/smart_battery_detail.xml b/res/xml/smart_battery_detail.xml index 2d361191810..c2b3d1fd818 100644 --- a/res/xml/smart_battery_detail.xml +++ b/res/xml/smart_battery_detail.xml @@ -22,11 +22,6 @@ android:title="@string/smart_battery_manager_title" settings:searchable="false"> - - + + Date: Tue, 30 Mar 2021 01:44:50 +0800 Subject: [PATCH 06/28] Fix the broken test on WifiSettingsTest - Use the same service name(Context.USER_SERVICE) to mock UserManager.class - Set the Provider Model feature flag to false Bug: 183921235 Test: manual test make RunSettingsRoboTests ROBOTEST_FILTER=WifiSettingsTest Change-Id: I7f83431c08f1e2bd61be0d4b7894116fa7d60168 --- .../src/com/android/settings/wifi/WifiSettingsTest.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/robotests/src/com/android/settings/wifi/WifiSettingsTest.java b/tests/robotests/src/com/android/settings/wifi/WifiSettingsTest.java index 428a3600a13..1f5abd3d72e 100644 --- a/tests/robotests/src/com/android/settings/wifi/WifiSettingsTest.java +++ b/tests/robotests/src/com/android/settings/wifi/WifiSettingsTest.java @@ -43,6 +43,7 @@ import android.os.Bundle; import android.os.PowerManager; import android.os.UserManager; import android.provider.Settings; +import android.util.FeatureFlagUtils; import android.view.ContextMenu; import android.view.View; @@ -105,6 +106,7 @@ public class WifiSettingsTest { mWifiSettings.mConfigureWifiSettingsPreference = new Preference(mContext); mWifiSettings.mWifiPickerTracker = mMockWifiPickerTracker; mWifiSettings.mWifiManager = mWifiManager; + FeatureFlagUtils.setEnabled(mContext, FeatureFlagUtils.SETTINGS_PROVIDER_MODEL, false); } @Test @@ -209,7 +211,7 @@ public class WifiSettingsTest { final Resources.Theme theme = mContext.getTheme(); when(activity.getTheme()).thenReturn(theme); UserManager userManager = mock(UserManager.class); - when(activity.getSystemService(UserManager.class)) + when(activity.getSystemService(Context.USER_SERVICE)) .thenReturn(userManager); when(mWifiSettings.findPreference(WifiSettings.PREF_KEY_DATA_USAGE)) From f5b4e49073e427ccfce82cd4b99eb07e21c36d46 Mon Sep 17 00:00:00 2001 From: Weng Su Date: Tue, 30 Mar 2021 01:58:07 +0800 Subject: [PATCH 07/28] Fix the broken test on NetworkProviderSettingsTest - Set the Provider Model feature flag to false Bug: 183919739 Test: manual test make RunSettingsRoboTests ROBOTEST_FILTER=NetworkProviderSettingsTest Change-Id: I44cfbe314ce82d67f10fe717054129ee849870a1 --- .../android/settings/network/NetworkProviderSettingsTest.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/robotests/src/com/android/settings/network/NetworkProviderSettingsTest.java b/tests/robotests/src/com/android/settings/network/NetworkProviderSettingsTest.java index d7c0ffe5f03..c1377ff2aa9 100644 --- a/tests/robotests/src/com/android/settings/network/NetworkProviderSettingsTest.java +++ b/tests/robotests/src/com/android/settings/network/NetworkProviderSettingsTest.java @@ -44,6 +44,7 @@ import android.os.Bundle; import android.os.PowerManager; import android.os.UserManager; import android.provider.Settings; +import android.util.FeatureFlagUtils; import android.view.ContextMenu; import android.view.MenuItem; import android.view.View; @@ -131,6 +132,7 @@ public class NetworkProviderSettingsTest { mNetworkProviderSettings.mResetInternetPreference = mResetInternetPreference; mNetworkProviderSettings.mAirplaneModeMsgPreference = mAirplaneModeMsgPreference; mNetworkProviderSettings.mAirplaneModeEnabler = mAirplaneModeEnabler; + FeatureFlagUtils.setEnabled(mContext, FeatureFlagUtils.SETTINGS_PROVIDER_MODEL, false); } @Test From b7867817d0c5574d2124ae85bd0d7680c927bbc7 Mon Sep 17 00:00:00 2001 From: Alex Johnston Date: Mon, 29 Mar 2021 18:28:17 +0000 Subject: [PATCH 08/28] RequestManageCredentials support RTL languages * App name and URIs should be displayed to the left of the app icon for right-to-left languages e.g. arabic. Manual testing steps: * Set language as Arabic * Install TestDPC and select 'Request to manage credentials'. * Verify app name and URLs are correctly displayed. * Go to Settings > Security > Encryption & Credentials > Credential management app and verify apps and URIs are displayed corretly. Bug: 170627997 Test: Manual testing Change-Id: Id383e5d92022fc2e40494fadb12c64a46b1f6a65 --- res/layout/app_authentication_item.xml | 7 +++++-- .../security/CredentialManagementAppAdapter.java | 13 +++++++++++++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/res/layout/app_authentication_item.xml b/res/layout/app_authentication_item.xml index 423722e5f70..16d6fbd254f 100644 --- a/res/layout/app_authentication_item.xml +++ b/res/layout/app_authentication_item.xml @@ -26,7 +26,8 @@ android:layout_width="24dp" android:layout_height="24dp"/> - - + (); + if (mIsLayoutRtl) { + RelativeLayout appDetails = view.findViewById(R.id.app_details); + RelativeLayout.LayoutParams params = + (RelativeLayout.LayoutParams) appDetails.getLayoutParams(); + params.addRule(RelativeLayout.LEFT_OF, R.id.app_icon); + params.addRule(RelativeLayout.RIGHT_OF, R.id.expand); + view.setLayoutParams(params); + } + mExpanderIconView.setOnClickListener(view1 -> { final String appName = mSortedAppNames.get(getBindingAdapterPosition()); if (mExpandedApps.contains(appName)) { @@ -195,6 +206,8 @@ public class CredentialManagementAppAdapter extends RecyclerView.Adapter Date: Tue, 30 Mar 2021 03:17:52 +0800 Subject: [PATCH 09/28] Fix WifiTetherFooterPreferenceControllerTest failed - Use the same service name(WifiManager.class) to mock WifiManager.class - Use the same service name(TetheringManager.class) to mock TetheringManager.class Bug: 183921868 Test: manual test make RunSettingsRoboTests ROBOTEST_FILTER=WifiTetherFooterPreferenceControllerTest Change-Id: I904c463f555c3c3c2a85272505215cf993474a7a --- .../wifi/tether/WifiTetherFooterPreferenceControllerTest.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherFooterPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherFooterPreferenceControllerTest.java index a42307193ec..c1d6c16a687 100644 --- a/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherFooterPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherFooterPreferenceControllerTest.java @@ -17,6 +17,7 @@ package com.android.settings.wifi.tether; import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -57,7 +58,8 @@ public class WifiTetherFooterPreferenceControllerTest { public void setUp() { MockitoAnnotations.initMocks(this); - when(mContext.getSystemService(Context.WIFI_SERVICE)).thenReturn(mWifiManager); + doReturn(mWifiManager).when(mContext).getSystemService(WifiManager.class); + doReturn(mTetheringManager).when(mContext).getSystemService(TetheringManager.class); when(mContext.getSystemService(Context.TETHERING_SERVICE)).thenReturn(mTetheringManager); when(mTetheringManager.getTetherableWifiRegexs()).thenReturn(new String[]{"1", "2"}); mController = new WifiTetherFooterPreferenceController(mContext); From 6ea4ba46b0f81ce99d4615a6c339c0b2574fd245 Mon Sep 17 00:00:00 2001 From: Joshua Mccloskey Date: Thu, 25 Mar 2021 16:10:25 -0700 Subject: [PATCH 10/28] Added fingerprint strings Test: It builds. Bug: 182717125 Change-Id: I1f637ae68119f0b2239dedd424aec4556d339395 --- res/values/strings.xml | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/res/values/strings.xml b/res/values/strings.xml index 0e29ea21976..ae629628048 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -920,6 +920,43 @@ Skip fingerprint? Fingerprint setup only takes a minute or two. If you skip this, you can add your fingerprint later in settings. + + + + When you see this icon, use your fingerprint for authentication, like when you sign in to apps or approve a purchase + + Keep in mind + + Using your fingerprint to unlock your phone may be less secure than a strong pattern or PIN + + How it works + + Fingerprint Unlock creates a unique model of your fingerprint to recognize you during authentication. To create this fingerprint model during setup, you will take images of your fingerprint from different positions. + + The phone will also use images from your interactions with Fingerprint Unlock to update your fingerprint model. Your fingerprint images and model are stored securely on your phone and never leave the phone. All processing occurs securely on your phone. + + You can delete your fingerprint images and model, or turn off Fingerprint Unlock at any time in Settings. Fingerprint images and models are stored on the phone until you delete them. + + + + + Change the position of your finger slightly each time + + Cover the icon with the center of your fingerprint + + This fingerprint has already been added + + Clean your screen near the sensor and try again + + Lift your finger after you feel a vibration + + Move somewhere with gentler lighting and try again + + You\u2019ve reached the maximum number of attempts + + + Use your fingerprint to unlock your phone or for authentication, like when you sign in to apps or approve a purchase + Skip screen lock? @@ -1054,6 +1091,9 @@ Do you want to delete this fingerprint? + + This deletes the fingerprint images and model associated with \'%1$s\' that are stored on your device + You won\'t be able to use your fingerprints to unlock your phone, authorize purchases, or sign in to apps with them From 8abe0dfb92c5ded84ea569ee9dfa61e13d7ce73c Mon Sep 17 00:00:00 2001 From: Weng Su Date: Tue, 30 Mar 2021 03:31:50 +0800 Subject: [PATCH 11/28] Fix WifiTetherPasswordPreferenceControllerTest failed - Use the same service name(WifiManager.class) to mock WifiManager.class - Use the same service name(TetheringManager.class) to mock TetheringManager.class Bug: 183921878 Test: manual test make RunSettingsRoboTests ROBOTEST_FILTER=WifiTetherPasswordPreferenceControllerTest Change-Id: Ib6ec5a806b10e73a5fefd4acf070a4ab1f69e0d7 --- .../tether/WifiTetherPasswordPreferenceControllerTest.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherPasswordPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherPasswordPreferenceControllerTest.java index 8f8477fcff7..bb61eb9dc2c 100644 --- a/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherPasswordPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherPasswordPreferenceControllerTest.java @@ -19,6 +19,7 @@ package com.android.settings.wifi.tether; import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.never; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; @@ -75,9 +76,9 @@ public class WifiTetherPasswordPreferenceControllerTest { .setPassphrase(INITIAL_PASSWORD, SoftApConfiguration.SECURITY_TYPE_WPA2_PSK) .build(); - when(mContext.getSystemService(Context.WIFI_SERVICE)).thenReturn(mWifiManager); + doReturn(mWifiManager).when(mContext).getSystemService(WifiManager.class); when(mWifiManager.getSoftApConfiguration()).thenReturn(mConfig); - when(mContext.getSystemService(Context.TETHERING_SERVICE)).thenReturn(mTetheringManager); + doReturn(mTetheringManager).when(mContext).getSystemService(TetheringManager.class); when(mTetheringManager.getTetherableWifiRegexs()).thenReturn(new String[]{"1", "2"}); when(mContext.getResources()).thenReturn(RuntimeEnvironment.application.getResources()); when(mScreen.findPreference(anyString())).thenReturn(mPreference); From 6f2379bb44407fbddc0c82b4306514555e8f0e89 Mon Sep 17 00:00:00 2001 From: Weng Su Date: Tue, 30 Mar 2021 03:42:10 +0800 Subject: [PATCH 12/28] Fix WifiTetherSSIDPreferenceControllerTest failed - Use the same service name(WifiManager.class) to mock WifiManager.class - Use the same service name(TetheringManager.class) to mock TetheringManager.class Bug: 183922071 Test: manual test make RunSettingsRoboTests ROBOTEST_FILTER=WifiTetherSSIDPreferenceControllerTest Change-Id: I68955d83693dda787132e2a951e8d034e57090ce --- .../wifi/tether/WifiTetherSSIDPreferenceControllerTest.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherSSIDPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherSSIDPreferenceControllerTest.java index 147cd64b437..2d887227ace 100644 --- a/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherSSIDPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherSSIDPreferenceControllerTest.java @@ -19,6 +19,7 @@ package com.android.settings.wifi.tether; import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.never; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; @@ -67,8 +68,8 @@ public class WifiTetherSSIDPreferenceControllerTest { MockitoAnnotations.initMocks(this); mPreference = new WifiTetherSsidPreference(RuntimeEnvironment.application); - when(mContext.getSystemService(Context.WIFI_SERVICE)).thenReturn(mWifiManager); - when(mContext.getSystemService(Context.TETHERING_SERVICE)).thenReturn(mTetheringManager); + doReturn(mWifiManager).when(mContext).getSystemService(WifiManager.class); + doReturn(mTetheringManager).when(mContext).getSystemService(TetheringManager.class); when(mTetheringManager.getTetherableWifiRegexs()).thenReturn(new String[]{"1", "2"}); when(mContext.getResources()).thenReturn(RuntimeEnvironment.application.getResources()); when(mScreen.findPreference(anyString())).thenReturn(mPreference); From 416bdecfa4722ea4566c6f1e189d32c0c33676aa Mon Sep 17 00:00:00 2001 From: Weng Su Date: Tue, 30 Mar 2021 04:02:24 +0800 Subject: [PATCH 13/28] Fix WifiTetherSettingsTest failed - Use the same service name(Context.USER_SERVICE) to mock UserManager.class Bug: 183922231 Test: manual test make RunSettingsRoboTests ROBOTEST_FILTER=WifiTetherSettingsTest Change-Id: Ifa9f3affbb969425acea335732ce977f18f82b49 --- .../android/settings/wifi/tether/WifiTetherSettingsTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherSettingsTest.java b/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherSettingsTest.java index 9a3432392f0..c124c96ddb6 100644 --- a/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherSettingsTest.java +++ b/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherSettingsTest.java @@ -83,7 +83,7 @@ public class WifiTetherSettingsTest { .when(mContext).getSystemService(ConnectivityManager.class); doReturn(mTetheringManager).when(mContext).getSystemService(TetheringManager.class); doReturn(WIFI_REGEXS).when(mTetheringManager).getTetherableWifiRegexs(); - doReturn(mUserManager).when(mContext).getSystemService(UserManager.class); + doReturn(mUserManager).when(mContext).getSystemService(Context.USER_SERVICE); mWifiTetherSettings = new WifiTetherSettings(); } @@ -133,7 +133,7 @@ public class WifiTetherSettingsTest { when(settings.getContext()).thenReturn(mContext); final Resources.Theme theme = mContext.getTheme(); when(activity.getTheme()).thenReturn(theme); - when(activity.getSystemService(UserManager.class)).thenReturn(mUserManager); + when(activity.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager); doNothing().when(settings) .onCreatePreferences(any(Bundle.class), nullable(String.class)); final FakeFeatureFactory fakeFeatureFactory = FakeFeatureFactory.setupForTest(); From 41c8a68dab276c3bfd68fad9e4d5781fe2857146 Mon Sep 17 00:00:00 2001 From: Weng Su Date: Tue, 30 Mar 2021 04:34:06 +0800 Subject: [PATCH 14/28] Ignore WifiNoInternetDialogTest failed test cases Bug: 183920404 Test: manual test make RunSettingsRoboTests ROBOTEST_FILTER=WifiNoInternetDialogTest Change-Id: Ib69c982913d271be3c5fb85dd15fb06a9af021f8 --- .../settings/wifi/WifiNoInternetDialogTest.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/tests/robotests/src/com/android/settings/wifi/WifiNoInternetDialogTest.java b/tests/robotests/src/com/android/settings/wifi/WifiNoInternetDialogTest.java index dc5ccb41122..6cbb19da6f8 100644 --- a/tests/robotests/src/com/android/settings/wifi/WifiNoInternetDialogTest.java +++ b/tests/robotests/src/com/android/settings/wifi/WifiNoInternetDialogTest.java @@ -44,6 +44,7 @@ import android.os.Bundle; import com.android.settings.R; import org.junit.Before; +import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.ArgumentCaptor; @@ -87,6 +88,7 @@ public class WifiNoInternetDialogTest { Robolectric.setupActivity(WifiNoInternetDialog.class); } + @Ignore @Test public void setupPromptUnvalidated_shouldShowNoInternetAccessRemember() { setupActivityWithAction(ACTION_PROMPT_UNVALIDATED, FAKE_URL); @@ -98,6 +100,7 @@ public class WifiNoInternetDialogTest { mActivity.getString(R.string.no_internet_access_remember)); } + @Ignore @Test public void setupPromptPartialConnectivity_shouldShowNoInternetAccessRemember() { setupActivityWithAction(ACTION_PROMPT_PARTIAL_CONNECTIVITY, FAKE_URL); @@ -109,6 +112,7 @@ public class WifiNoInternetDialogTest { mActivity.getString(R.string.no_internet_access_remember)); } + @Ignore @Test public void setupPromptLostValidationAction_shouldShowLostInternetAccessPersist() { setupActivityWithAction(ACTION_PROMPT_LOST_VALIDATION, FAKE_URL); @@ -120,6 +124,7 @@ public class WifiNoInternetDialogTest { mActivity.getString(R.string.lost_internet_access_persist)); } + @Ignore @Test public void clickPositiveButton_whenPromptUnvalidated_shouldCallSetAcceptUnvalidated() { setupActivityWithAction(ACTION_PROMPT_UNVALIDATED, FAKE_URL); @@ -131,6 +136,7 @@ public class WifiNoInternetDialogTest { verify(mConnectivityManager).setAcceptUnvalidated(any(Network.class), eq(true), eq(false)); } + @Ignore @Test public void positiveButton_withPartialConnectivity_shouldCallSetAcceptPartialConnectivity() { setupActivityWithAction(ACTION_PROMPT_PARTIAL_CONNECTIVITY, FAKE_URL); @@ -143,6 +149,7 @@ public class WifiNoInternetDialogTest { eq(false)); } + @Ignore @Test public void positiveButton_withLostValidation_shouldCallSetAvoidUnvalidated() { setupActivityWithAction(ACTION_PROMPT_LOST_VALIDATION, FAKE_URL); @@ -154,6 +161,7 @@ public class WifiNoInternetDialogTest { verify(mConnectivityManager).setAvoidUnvalidated(any(Network.class)); } + @Ignore @Test public void destroyWithNoClick_inPartialConnectivity_shouldCallSetAcceptPartialConnectivity() { setupActivityWithAction(ACTION_PROMPT_PARTIAL_CONNECTIVITY, FAKE_URL); @@ -167,6 +175,7 @@ public class WifiNoInternetDialogTest { eq(false)); } + @Ignore @Test public void destroyWithNoClick_whenUnvalidated_shouldCallSetAcceptUnvalidated() { setupActivityWithAction(ACTION_PROMPT_UNVALIDATED, FAKE_URL); @@ -179,6 +188,7 @@ public class WifiNoInternetDialogTest { verify(mConnectivityManager).setAcceptUnvalidated(any(Network.class), eq(false), eq(false)); } + @Ignore @Test public void networkCallbackOnLost_shouldFinish() { setupActivityWithAction(ACTION_PROMPT_UNVALIDATED, FAKE_URL); @@ -192,6 +202,7 @@ public class WifiNoInternetDialogTest { verify(mActivity).finish(); } + @Ignore @Test public void networkCallbackOnCapabilitiesChanged_shouldFinish() { setupActivityWithAction(ACTION_PROMPT_UNVALIDATED, FAKE_URL); From 4b301dba7a25e42908526dfba6b41355e44e3892 Mon Sep 17 00:00:00 2001 From: Julia Reynolds Date: Mon, 29 Mar 2021 17:43:31 -0400 Subject: [PATCH 15/28] Fix some 'clear recent issues' - Don't show the button if nothing is clearable - Optimistically remove preferences on pressing clear since the actualy clear action is asynchronous Test: RoboTests Fixes: 178765511 Change-Id: Ic305d4d199b149078ea52a614cb93cebe55cd245 --- ...centConversationsPreferenceController.java | 40 +++++++--- ...ConversationsPreferenceControllerTest.java | 80 +++++++++++++++++-- 2 files changed, 103 insertions(+), 17 deletions(-) diff --git a/src/com/android/settings/notification/app/RecentConversationsPreferenceController.java b/src/com/android/settings/notification/app/RecentConversationsPreferenceController.java index 8be6016cc43..d4ad9944765 100644 --- a/src/com/android/settings/notification/app/RecentConversationsPreferenceController.java +++ b/src/com/android/settings/notification/app/RecentConversationsPreferenceController.java @@ -72,7 +72,7 @@ public class RecentConversationsPreferenceController extends AbstractPreferenceC return true; } - Preference getClearAll(PreferenceGroup parent) { + LayoutPreference getClearAll(PreferenceGroup parent) { LayoutPreference pref = new LayoutPreference( mContext, R.layout.conversations_clear_recents); pref.setOrder(1); @@ -80,10 +80,21 @@ public class RecentConversationsPreferenceController extends AbstractPreferenceC button.setOnClickListener(v -> { try { mPs.removeAllRecentConversations(); + // Removing recents is asynchronous, so we can't immediately reload the list from + // the backend. Instead, proactively remove all of items that were marked as + // clearable, so long as we didn't get an error + + for (int i = parent.getPreferenceCount() - 1; i >= 0; i--) { + Preference p = parent.getPreference(i); + if (p instanceof RecentConversationPreference) { + if (((RecentConversationPreference) p).hasClearListener()) { + parent.removePreference(p); + } + } + } } catch (RemoteException e) { Slog.w(TAG, "Could not clear recents", e); } - updateState(parent); }); return pref; } @@ -118,36 +129,45 @@ public class RecentConversationsPreferenceController extends AbstractPreferenceC protected void populateList(List conversations, PreferenceGroup containerGroup) { containerGroup.removeAll(); + boolean hasClearable = false; if (conversations != null) { - populateConversations(conversations, containerGroup); + hasClearable = populateConversations(conversations, containerGroup); } if (containerGroup.getPreferenceCount() == 0) { containerGroup.setVisible(false); } else { containerGroup.setVisible(true); - Preference clearAll = getClearAll(containerGroup); - if (clearAll != null) { - containerGroup.addPreference(clearAll); + if (hasClearable) { + Preference clearAll = getClearAll(containerGroup); + if (clearAll != null) { + containerGroup.addPreference(clearAll); + } } } } - protected void populateConversations(List conversations, + protected boolean populateConversations(List conversations, PreferenceGroup containerGroup) { int order = 100; + boolean hasClearable = false; for (ConversationChannel conversation : conversations) { if (conversation.getParentNotificationChannel().getImportance() == IMPORTANCE_NONE || (conversation.getParentNotificationChannelGroup() != null && conversation.getParentNotificationChannelGroup().isBlocked())) { continue; } - containerGroup.addPreference( - createConversationPref(containerGroup, conversation, order++)); + RecentConversationPreference pref = + createConversationPref(containerGroup, conversation, order++); + containerGroup.addPreference(pref); + if (pref.hasClearListener()) { + hasClearable = true; + } } + return hasClearable; } - protected Preference createConversationPref(PreferenceGroup parent, + protected RecentConversationPreference createConversationPref(PreferenceGroup parent, final ConversationChannel conversation, int order) { final String pkg = conversation.getShortcutInfo().getPackage(); final int uid = conversation.getUid(); diff --git a/tests/robotests/src/com/android/settings/notification/app/RecentConversationsPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/app/RecentConversationsPreferenceControllerTest.java index 660b4e1ed57..15bc5989e60 100644 --- a/tests/robotests/src/com/android/settings/notification/app/RecentConversationsPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/notification/app/RecentConversationsPreferenceControllerTest.java @@ -47,8 +47,10 @@ import androidx.preference.PreferenceManager; import androidx.preference.PreferenceScreen; import androidx.preference.PreferenceViewHolder; +import com.android.settings.R; import com.android.settings.applications.AppInfoBase; import com.android.settings.notification.NotificationBackend; +import com.android.settingslib.widget.LayoutPreference; import org.junit.Before; import org.junit.Test; @@ -105,9 +107,9 @@ public class RecentConversationsPreferenceControllerTest { ps.addPreference(outerContainer); ConversationChannel ccw = new ConversationChannel(mock(ShortcutInfo.class), 6, - new NotificationChannel("hi", "hi", 4), - new NotificationChannelGroup("hi", "hi"), 7, - true); + new NotificationChannel("hi", "hi", 4), + new NotificationChannelGroup("hi", "hi"), 7, + false); ArrayList list = new ArrayList<>(); list.add(ccw); @@ -124,19 +126,19 @@ public class RecentConversationsPreferenceControllerTest { ConversationChannel ccw = new ConversationChannel(mock(ShortcutInfo.class), 6, new NotificationChannel("hi", "hi", 4), new NotificationChannelGroup("hi", "hi"), 7, - true); + false); ConversationChannel ccw2 = new ConversationChannel(mock(ShortcutInfo.class), 6, new NotificationChannel("hi", "hi", 0), new NotificationChannelGroup("hi", "hi"), 7, - true); + false); NotificationChannelGroup blockedGroup = new NotificationChannelGroup("hi", "hi"); blockedGroup.setBlocked(true); ConversationChannel ccw3 = new ConversationChannel(mock(ShortcutInfo.class), 6, new NotificationChannel("hi", "hi", 4), blockedGroup, 7, - true); + false); ArrayList list = new ArrayList<>(); list.add(ccw); @@ -198,7 +200,6 @@ public class RecentConversationsPreferenceControllerTest { new NotificationChannelGroup("hi", "group"), 7, true); - Intent intent = mController.getSubSettingLauncher(ccw, "title").toIntent(); Bundle extras = intent.getExtras(); @@ -257,6 +258,51 @@ public class RecentConversationsPreferenceControllerTest { si.getPackage(), UserHandle.getUserId(ccw.getUid()), si.getId()); } + @Test + public void testRemoveConversations() throws Exception { + ShortcutInfo si = mock(ShortcutInfo.class); + when(si.getId()).thenReturn("person"); + when(si.getPackage()).thenReturn("pkg"); + ConversationChannel ccw = new ConversationChannel(si, 6, + new NotificationChannel("hi", "hi", 4), + new NotificationChannelGroup("hi", "group"), 7, + false); + + ConversationChannel ccw2 = new ConversationChannel(si, 6, + new NotificationChannel("bye", "bye", 4), + new NotificationChannelGroup("hi", "group"), 7, + true); + + PreferenceCategory group = new PreferenceCategory(mContext); + PreferenceScreen screen = new PreferenceManager(mContext).createPreferenceScreen(mContext); + screen.addPreference(group); + + RecentConversationPreference pref = mController.createConversationPref( + new PreferenceCategory(mContext), ccw, 100); + final View view = View.inflate(mContext, pref.getLayoutResource(), null); + PreferenceViewHolder holder = spy(PreferenceViewHolder.createInstanceForTests(view)); + View delete = View.inflate(mContext, pref.getSecondTargetResId(), null); + when(holder.findViewById(pref.getClearId())).thenReturn(delete); + group.addPreference(pref); + + RecentConversationPreference pref2 = mController.createConversationPref( + new PreferenceCategory(mContext), ccw2, 100); + final View view2 = View.inflate(mContext, pref2.getLayoutResource(), null); + PreferenceViewHolder holder2 = spy(PreferenceViewHolder.createInstanceForTests(view2)); + View delete2 = View.inflate(mContext, pref2.getSecondTargetResId(), null); + when(holder2.findViewById(pref.getClearId())).thenReturn(delete2); + group.addPreference(pref2); + + LayoutPreference clearAll = mController.getClearAll(group); + group.addPreference(clearAll); + + clearAll.findViewById(R.id.conversation_settings_clear_recents).performClick(); + + verify(mPs).removeAllRecentConversations(); + assertThat((Preference) group.findPreference("hi:person")).isNull(); + assertThat((Preference) group.findPreference("bye:person")).isNotNull(); + } + @Test public void testNonremoveableConversation() throws Exception { ShortcutInfo si = mock(ShortcutInfo.class); @@ -272,4 +318,24 @@ public class RecentConversationsPreferenceControllerTest { new PreferenceCategory(mContext), ccw, 100); assertThat(pref.hasClearListener()).isFalse(); } + + @Test + public void testPopulateList_onlyNonremoveableConversations() { + final PreferenceManager preferenceManager = new PreferenceManager(mContext); + PreferenceScreen ps = preferenceManager.createPreferenceScreen(mContext); + PreferenceCategory outerContainer = spy(new PreferenceCategory(mContext)); + ps.addPreference(outerContainer); + + ConversationChannel ccw = new ConversationChannel(mock(ShortcutInfo.class), 6, + new NotificationChannel("hi", "hi", 4), + new NotificationChannelGroup("hi", "hi"), 7, + true /* hasactivenotifs */); + + ArrayList list = new ArrayList<>(); + list.add(ccw); + + mController.populateList(list, outerContainer); + // one for the preference, none for 'clear all' + verify(outerContainer, times(1)).addPreference(any()); + } } From d7a8b0eb21c08e952bcfb2ffab8ca0035d0ffe76 Mon Sep 17 00:00:00 2001 From: Peter Kalauskas Date: Mon, 29 Mar 2021 14:34:13 -0700 Subject: [PATCH 16/28] Fix NPE in UserSettingsTest Also, introduce a check for ACTION_USER_GUEST_ADD being logged correctly Test: m RunSettingsRoboTests ROBOTEST_FILTER="com.android.settings.users.UserSettingsTest" Bug: 183920589 Change-Id: Ie4fdf4b3429a9abec64120a38a13f2d8a3fa121a --- .../src/com/android/settings/users/UserSettingsTest.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tests/robotests/src/com/android/settings/users/UserSettingsTest.java b/tests/robotests/src/com/android/settings/users/UserSettingsTest.java index 3494c6305ad..c542c55bd21 100644 --- a/tests/robotests/src/com/android/settings/users/UserSettingsTest.java +++ b/tests/robotests/src/com/android/settings/users/UserSettingsTest.java @@ -34,6 +34,7 @@ import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.robolectric.Shadows.shadowOf; +import android.app.settings.SettingsEnums; import android.content.ComponentName; import android.content.Context; import android.content.Intent; @@ -61,6 +62,7 @@ import com.android.settings.testutils.shadow.ShadowDevicePolicyManager; import com.android.settings.testutils.shadow.ShadowUserManager; import com.android.settingslib.RestrictedLockUtils; import com.android.settingslib.RestrictedPreference; +import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; import org.junit.After; import org.junit.Before; @@ -111,6 +113,8 @@ public class UserSettingsTest { private RestrictedPreference mAddGuestPreference; @Mock private UserManager mUserManager; + @Mock + private MetricsFeatureProvider mMetricsFeatureProvider; private FragmentActivity mActivity; private Context mContext; @@ -134,6 +138,7 @@ public class UserSettingsTest { ReflectionHelpers.setField(mFragment, "mUserCaps", mUserCapabilities); ReflectionHelpers.setField(mFragment, "mDefaultIconDrawable", mDefaultIconDrawable); ReflectionHelpers.setField(mFragment, "mAddingUser", false); + ReflectionHelpers.setField(mFragment, "mMetricsFeatureProvider", mMetricsFeatureProvider); doReturn(mUserManager).when(mActivity).getSystemService(UserManager.class); @@ -616,6 +621,7 @@ public class UserSettingsTest { .isEqualTo(createdGuest.id); assertThat(arguments.getBoolean(AppRestrictionsFragment.EXTRA_NEW_USER, false)) .isEqualTo(true); + verify(mMetricsFeatureProvider).action(any(), eq(SettingsEnums.ACTION_USER_GUEST_ADD)); } @Test From 234b698fb2e87bc37542ab39125a0e4f3ee8ba32 Mon Sep 17 00:00:00 2001 From: Bonian Chen Date: Tue, 30 Mar 2021 00:51:15 +0000 Subject: [PATCH 17/28] Revert "[Settings] Support getSystemService(Class)" This reverts commit d5ccde31a81ce88dec235a3edd7ef5e0293a477b. Reason for revert: failure on test cases Change-Id: I0a179a6ebb5ef1dec566ce6e8facd5f3b82d7c8a --- .../DeviceNamePreferenceController.java | 2 +- .../deviceinfo/StorageWizardMigrateConfirm.java | 2 +- .../aboutphone/MyDeviceInfoFragment.java | 4 ++-- ...irmwareVersionDetailPreferenceController.java | 2 +- .../imei/ImeiInfoPreferenceController.java | 2 +- .../simstatus/SimStatusPreferenceController.java | 6 +++--- .../EthernetTetherPreferenceController.java | 2 +- .../network/MobilePlanPreferenceController.java | 6 +++--- .../network/NetworkResetRestrictionChecker.java | 2 +- .../settings/network/NetworkScorerPicker.java | 2 +- .../NetworkScorerPickerPreferenceController.java | 2 +- .../android/settings/network/TetherEnabler.java | 8 ++++---- .../android/settings/network/apn/ApnEditor.java | 4 ++-- .../settings/network/apn/ApnSettings.java | 4 ++-- .../network/telephony/MobileNetworkSettings.java | 2 +- .../network/telephony/NetworkSelectSettings.java | 4 ++-- .../RenameMobileNetworkDialogFragment.java | 4 ++-- .../settings/sim/SimSelectNotification.java | 16 ++++++++-------- .../settings/vpn2/AppManagementFragment.java | 2 +- src/com/android/settings/vpn2/VpnSettings.java | 8 ++++---- .../settings/wifi/ChangeWifiStateDetails.java | 2 +- .../settings/wifi/ConfigureWifiSettings.java | 2 +- .../wifi/UseOpenWifiPreferenceController.java | 2 +- src/com/android/settings/wifi/WifiAPITest.java | 2 +- .../android/settings/wifi/WifiConfigInfo.java | 2 +- src/com/android/settings/wifi/WifiEnabler.java | 4 ++-- .../settings/wifi/WifiNoInternetDialog.java | 2 +- .../android/settings/wifi/WifiStatusTest.java | 2 +- src/com/android/settings/wifi/WifiUtils.java | 2 +- .../wifi/WifiWakeupPreferenceController.java | 2 +- .../wifi/calling/WifiCallingSettingsForSub.java | 8 ++++---- .../details2/AddDevicePreferenceController2.java | 2 +- .../details2/WifiNetworkDetailsFragment2.java | 4 ++-- .../WifiPrivacyPreferenceController2.java | 2 +- .../android/settings/wifi/dpp/WifiDppUtils.java | 4 ++-- .../wifi/p2p/WifiP2pPreferenceController.java | 2 +- .../settings/wifi/p2p/WifiP2pSettings.java | 2 +- .../android/settings/wifi/qrcode/QrCamera.java | 2 +- .../settings/wifi/tether/TetherService.java | 2 +- .../WifiTetherBasePreferenceController.java | 4 ++-- .../tether/WifiTetherPreferenceController.java | 2 +- .../settings/wifi/tether/WifiTetherSettings.java | 2 +- .../tether/WifiTetherSwitchBarController.java | 4 ++-- .../imei/ImeiInfoPreferenceControllerTest.java | 4 ++-- .../BluetoothTetherPreferenceControllerTest.java | 2 +- .../EthernetTetherPreferenceControllerTest.java | 4 ++-- .../NetworkResetRestrictionCheckerTest.java | 4 ++-- .../PrivateDnsPreferenceControllerTest.java | 2 +- .../settings/network/TetherEnablerTest.java | 8 ++++---- .../UsbTetherPreferenceControllerTest.java | 2 +- ...ifiTetherDisablePreferenceControllerTest.java | 2 +- .../network/telephony/MobileDataSliceTest.java | 2 +- .../telephony/NetworkSelectSettingsTest.java | 2 +- .../wifi/NetworkRequestDialogActivityTest.java | 2 +- .../android/settings/wifi/WifiEnablerTest.java | 2 +- ...ifiPrimarySwitchPreferenceControllerTest.java | 2 +- .../android/settings/wifi/WifiSettingsTest.java | 2 +- .../calling/DisclaimerItemListAdapterTest.java | 2 +- .../EmergencyCallLimitationDisclaimerTest.java | 2 +- .../calling/LocationPolicyDisclaimerTest.java | 2 +- ...WifiTetherApBandPreferenceControllerTest.java | 4 ++-- .../wifi/tether/WifiTetherSettingsTest.java | 8 ++++---- .../MobileDataPreferenceControllerTest.java | 2 +- 63 files changed, 103 insertions(+), 103 deletions(-) diff --git a/src/com/android/settings/deviceinfo/DeviceNamePreferenceController.java b/src/com/android/settings/deviceinfo/DeviceNamePreferenceController.java index 536f6997e89..e6d9dfdbb78 100644 --- a/src/com/android/settings/deviceinfo/DeviceNamePreferenceController.java +++ b/src/com/android/settings/deviceinfo/DeviceNamePreferenceController.java @@ -58,7 +58,7 @@ public class DeviceNamePreferenceController extends BasePreferenceController public DeviceNamePreferenceController(Context context, String key) { super(context, key); - mWifiManager = context.getSystemService(WifiManager.class); + mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); mWifiDeviceNameTextValidator = new WifiDeviceNameTextValidator(); mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); diff --git a/src/com/android/settings/deviceinfo/StorageWizardMigrateConfirm.java b/src/com/android/settings/deviceinfo/StorageWizardMigrateConfirm.java index 9e969a8211e..7d20aa715db 100644 --- a/src/com/android/settings/deviceinfo/StorageWizardMigrateConfirm.java +++ b/src/com/android/settings/deviceinfo/StorageWizardMigrateConfirm.java @@ -121,7 +121,7 @@ public class StorageWizardMigrateConfirm extends StorageWizardBase { try { moveId = getPackageManager().movePrimaryStorage(mVolume); } catch (IllegalArgumentException e) { - StorageManager sm = getSystemService(StorageManager.class); + StorageManager sm = (StorageManager) getSystemService(STORAGE_SERVICE); if (Objects.equals(mVolume.getFsUuid(), sm.getPrimaryStorageVolume().getUuid())) { final Intent intent = new Intent(this, StorageWizardReady.class); diff --git a/src/com/android/settings/deviceinfo/aboutphone/MyDeviceInfoFragment.java b/src/com/android/settings/deviceinfo/aboutphone/MyDeviceInfoFragment.java index fcbd5d3b769..4af5d79c37f 100644 --- a/src/com/android/settings/deviceinfo/aboutphone/MyDeviceInfoFragment.java +++ b/src/com/android/settings/deviceinfo/aboutphone/MyDeviceInfoFragment.java @@ -146,8 +146,8 @@ public class MyDeviceInfoFragment extends DashboardFragment // TODO: There may be an avatar setting action we can use here. final int iconId = bundle.getInt("icon_id", 0); if (iconId == 0) { - final UserManager userManager = getActivity().getSystemService( - UserManager.class); + final UserManager userManager = (UserManager) getActivity().getSystemService( + Context.USER_SERVICE); final UserInfo info = Utils.getExistingUser(userManager, android.os.Process.myUserHandle()); controller.setLabel(info.name); diff --git a/src/com/android/settings/deviceinfo/firmwareversion/FirmwareVersionDetailPreferenceController.java b/src/com/android/settings/deviceinfo/firmwareversion/FirmwareVersionDetailPreferenceController.java index 14e86b4475d..d6cf442b11c 100644 --- a/src/com/android/settings/deviceinfo/firmwareversion/FirmwareVersionDetailPreferenceController.java +++ b/src/com/android/settings/deviceinfo/firmwareversion/FirmwareVersionDetailPreferenceController.java @@ -49,7 +49,7 @@ public class FirmwareVersionDetailPreferenceController extends BasePreferenceCon public FirmwareVersionDetailPreferenceController(Context context, String key) { super(context, key); - mUserManager = mContext.getSystemService(UserManager.class); + mUserManager = (UserManager) mContext.getSystemService(Context.USER_SERVICE); initializeAdminPermissions(); } diff --git a/src/com/android/settings/deviceinfo/imei/ImeiInfoPreferenceController.java b/src/com/android/settings/deviceinfo/imei/ImeiInfoPreferenceController.java index fbb29a7a981..967eea6155d 100644 --- a/src/com/android/settings/deviceinfo/imei/ImeiInfoPreferenceController.java +++ b/src/com/android/settings/deviceinfo/imei/ImeiInfoPreferenceController.java @@ -49,7 +49,7 @@ public class ImeiInfoPreferenceController extends BasePreferenceController { public ImeiInfoPreferenceController(Context context, String key) { super(context, key); - mTelephonyManager = context.getSystemService(TelephonyManager.class); + mTelephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); mIsMultiSim = mTelephonyManager.getPhoneCount() > 1; } diff --git a/src/com/android/settings/deviceinfo/simstatus/SimStatusPreferenceController.java b/src/com/android/settings/deviceinfo/simstatus/SimStatusPreferenceController.java index c3917505278..02c191679d1 100644 --- a/src/com/android/settings/deviceinfo/simstatus/SimStatusPreferenceController.java +++ b/src/com/android/settings/deviceinfo/simstatus/SimStatusPreferenceController.java @@ -46,9 +46,9 @@ public class SimStatusPreferenceController extends public SimStatusPreferenceController(Context context, Fragment fragment) { super(context); - mTelephonyManager = context.getSystemService(TelephonyManager.class); - mSubscriptionManager = context.getSystemService( - SubscriptionManager.class); + mTelephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); + mSubscriptionManager = (SubscriptionManager) context.getSystemService( + Context.TELEPHONY_SUBSCRIPTION_SERVICE); mFragment = fragment; } diff --git a/src/com/android/settings/network/EthernetTetherPreferenceController.java b/src/com/android/settings/network/EthernetTetherPreferenceController.java index 3559edb948f..06cd6a7feed 100644 --- a/src/com/android/settings/network/EthernetTetherPreferenceController.java +++ b/src/com/android/settings/network/EthernetTetherPreferenceController.java @@ -43,7 +43,7 @@ public final class EthernetTetherPreferenceController extends TetherBasePreferen super(context, preferenceKey); mEthernetRegex = context.getString( com.android.internal.R.string.config_ethernet_iface_regex); - mEthernetManager = context.getSystemService(EthernetManager.class); + mEthernetManager = (EthernetManager) context.getSystemService(Context.ETHERNET_SERVICE); } @OnLifecycleEvent(Lifecycle.Event.ON_START) diff --git a/src/com/android/settings/network/MobilePlanPreferenceController.java b/src/com/android/settings/network/MobilePlanPreferenceController.java index 65439bc2065..d8963ad9374 100644 --- a/src/com/android/settings/network/MobilePlanPreferenceController.java +++ b/src/com/android/settings/network/MobilePlanPreferenceController.java @@ -73,9 +73,9 @@ public class MobilePlanPreferenceController extends AbstractPreferenceController MobilePlanPreferenceHost host) { super(context); mHost = host; - mCm = context.getSystemService(ConnectivityManager.class); - mTm = context.getSystemService(TelephonyManager.class); - mUserManager = context.getSystemService(UserManager.class); + mCm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); + mTm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); + mUserManager = (UserManager) context.getSystemService(Context.USER_SERVICE); mIsSecondaryUser = !mUserManager.isAdminUser(); } diff --git a/src/com/android/settings/network/NetworkResetRestrictionChecker.java b/src/com/android/settings/network/NetworkResetRestrictionChecker.java index c873f9dffae..46227f9f5a0 100644 --- a/src/com/android/settings/network/NetworkResetRestrictionChecker.java +++ b/src/com/android/settings/network/NetworkResetRestrictionChecker.java @@ -31,7 +31,7 @@ public class NetworkResetRestrictionChecker { public NetworkResetRestrictionChecker(Context context) { mContext = context; - mUserManager = context.getSystemService(UserManager.class); + mUserManager = (UserManager) context.getSystemService(Context.USER_SERVICE); } @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE) diff --git a/src/com/android/settings/network/NetworkScorerPicker.java b/src/com/android/settings/network/NetworkScorerPicker.java index 011cf054d0b..9ecab3bfb6f 100644 --- a/src/com/android/settings/network/NetworkScorerPicker.java +++ b/src/com/android/settings/network/NetworkScorerPicker.java @@ -140,6 +140,6 @@ public class NetworkScorerPicker extends InstrumentedPreferenceFragment implemen @VisibleForTesting NetworkScoreManager createNetworkScorerManager(Context context) { - return context.getSystemService(NetworkScoreManager.class); + return (NetworkScoreManager) context.getSystemService(Context.NETWORK_SCORE_SERVICE); } } diff --git a/src/com/android/settings/network/NetworkScorerPickerPreferenceController.java b/src/com/android/settings/network/NetworkScorerPickerPreferenceController.java index 2abe3901c40..4b452c01c15 100644 --- a/src/com/android/settings/network/NetworkScorerPickerPreferenceController.java +++ b/src/com/android/settings/network/NetworkScorerPickerPreferenceController.java @@ -37,7 +37,7 @@ public class NetworkScorerPickerPreferenceController extends BasePreferenceContr public NetworkScorerPickerPreferenceController(Context context, String key) { super(context, key); mNetworkScoreManager = - mContext.getSystemService(NetworkScoreManager.class); + (NetworkScoreManager) mContext.getSystemService(Context.NETWORK_SCORE_SERVICE); } @Override diff --git a/src/com/android/settings/network/TetherEnabler.java b/src/com/android/settings/network/TetherEnabler.java index 550d324d6e2..ef031f69639 100644 --- a/src/com/android/settings/network/TetherEnabler.java +++ b/src/com/android/settings/network/TetherEnabler.java @@ -128,10 +128,10 @@ public class TetherEnabler implements SwitchWidgetController.OnSwitchChangeListe mSwitchWidgetController = switchWidgetController; mDataSaverBackend = new DataSaverBackend(context); mConnectivityManager = - context.getSystemService(ConnectivityManager.class); - mTetheringManager = context.getSystemService(TetheringManager.class); - mWifiManager = context.getSystemService(WifiManager.class); - mUserManager = context.getSystemService(UserManager.class); + (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); + mTetheringManager = (TetheringManager) context.getSystemService(Context.TETHERING_SERVICE); + mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); + mUserManager = (UserManager) context.getSystemService(Context.USER_SERVICE); mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); mBluetoothPan = bluetoothPan; mEthernetRegex = diff --git a/src/com/android/settings/network/apn/ApnEditor.java b/src/com/android/settings/network/apn/ApnEditor.java index 78b7ccc264a..afc68d5bb29 100644 --- a/src/com/android/settings/network/apn/ApnEditor.java +++ b/src/com/android/settings/network/apn/ApnEditor.java @@ -1291,8 +1291,8 @@ public class ApnEditor extends SettingsPreferenceFragment mReadOnlyApnTypes = null; mReadOnlyApnFields = null; - final CarrierConfigManager configManager = - getSystemService(CarrierConfigManager.class); + final CarrierConfigManager configManager = (CarrierConfigManager) + getSystemService(Context.CARRIER_CONFIG_SERVICE); if (configManager != null) { final PersistableBundle b = configManager.getConfigForSubId(mSubId); if (b != null) { diff --git a/src/com/android/settings/network/apn/ApnSettings.java b/src/com/android/settings/network/apn/ApnSettings.java index 3ba667cc047..02d9b3d1f35 100755 --- a/src/com/android/settings/network/apn/ApnSettings.java +++ b/src/com/android/settings/network/apn/ApnSettings.java @@ -209,8 +209,8 @@ public class ApnSettings extends RestrictedSettingsFragment mSubscriptionInfo = getSubscriptionInfo(mSubId); mTelephonyManager = activity.getSystemService(TelephonyManager.class); - final CarrierConfigManager configManager = - getSystemService(CarrierConfigManager.class); + final CarrierConfigManager configManager = (CarrierConfigManager) + getSystemService(Context.CARRIER_CONFIG_SERVICE); final PersistableBundle b = configManager.getConfigForSubId(mSubId); mHideImsApn = b.getBoolean(CarrierConfigManager.KEY_HIDE_IMS_APN_BOOL); mAllowAddingApns = b.getBoolean(CarrierConfigManager.KEY_ALLOW_ADDING_APNS_BOOL); diff --git a/src/com/android/settings/network/telephony/MobileNetworkSettings.java b/src/com/android/settings/network/telephony/MobileNetworkSettings.java index 7eb53b9877c..9a4cb408f20 100644 --- a/src/com/android/settings/network/telephony/MobileNetworkSettings.java +++ b/src/com/android/settings/network/telephony/MobileNetworkSettings.java @@ -202,7 +202,7 @@ public class MobileNetworkSettings extends AbstractMobileNetworkSettings { super.onCreate(icicle); final Context context = getContext(); - mUserManager = context.getSystemService(UserManager.class); + mUserManager = (UserManager) context.getSystemService(Context.USER_SERVICE); mTelephonyManager = context.getSystemService(TelephonyManager.class) .createForSubscriptionId(mSubId); diff --git a/src/com/android/settings/network/telephony/NetworkSelectSettings.java b/src/com/android/settings/network/telephony/NetworkSelectSettings.java index 588d828980a..c8121c491be 100644 --- a/src/com/android/settings/network/telephony/NetworkSelectSettings.java +++ b/src/com/android/settings/network/telephony/NetworkSelectSettings.java @@ -106,8 +106,8 @@ public class NetworkSelectSettings extends DashboardFragment { .createForSubscriptionId(mSubId); mNetworkScanHelper = new NetworkScanHelper( mTelephonyManager, mCallback, mNetworkScanExecutor); - PersistableBundle bundle = (getContext().getSystemService( - CarrierConfigManager.class)).getConfigForSubId(mSubId); + PersistableBundle bundle = ((CarrierConfigManager) getContext().getSystemService( + Context.CARRIER_CONFIG_SERVICE)).getConfigForSubId(mSubId); if (bundle != null) { mShow4GForLTE = bundle.getBoolean( CarrierConfigManager.KEY_SHOW_4G_FOR_LTE_DATA_ICON_BOOL); diff --git a/src/com/android/settings/network/telephony/RenameMobileNetworkDialogFragment.java b/src/com/android/settings/network/telephony/RenameMobileNetworkDialogFragment.java index 6cb627b8197..c782b66c677 100644 --- a/src/com/android/settings/network/telephony/RenameMobileNetworkDialogFragment.java +++ b/src/com/android/settings/network/telephony/RenameMobileNetworkDialogFragment.java @@ -212,8 +212,8 @@ public class RenameMobileNetworkDialogFragment extends InstrumentedDialogFragmen @Override public View getView(int position, View convertView, ViewGroup parent) { - final LayoutInflater inflater = - mContext.getSystemService(LayoutInflater.class); + final LayoutInflater inflater = (LayoutInflater) + mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); if (convertView == null) { convertView = inflater.inflate(mItemResId, null); diff --git a/src/com/android/settings/sim/SimSelectNotification.java b/src/com/android/settings/sim/SimSelectNotification.java index 3051b924361..7dab4c0557a 100644 --- a/src/com/android/settings/sim/SimSelectNotification.java +++ b/src/com/android/settings/sim/SimSelectNotification.java @@ -104,8 +104,8 @@ public class SimSelectNotification extends BroadcastReceiver { subId = SubscriptionManager.getDefaultSmsSubscriptionId(); } - SubscriptionManager subscriptionManager = (context.getSystemService( - SubscriptionManager.class)); + SubscriptionManager subscriptionManager = ((SubscriptionManager) context.getSystemService( + Context.TELEPHONY_SUBSCRIPTION_SERVICE)); if (!subscriptionManager.isActiveSubscriptionId(subId)) { Log.w(TAG, "onEnableMmsDataRequest invalid sub ID " + subId); return; @@ -130,8 +130,8 @@ public class SimSelectNotification extends BroadcastReceiver { return; } - TelephonyManager tm = (context.getSystemService( - TelephonyManager.class)).createForSubscriptionId(subId); + TelephonyManager tm = ((TelephonyManager) context.getSystemService( + Context.TELEPHONY_SERVICE)).createForSubscriptionId(subId); if (tm.isDataEnabledForApn(TYPE_MMS)) { Log.w(TAG, "onEnableMmsDataRequest MMS data already enabled on sub ID " + subId); @@ -230,14 +230,14 @@ public class SimSelectNotification extends BroadcastReceiver { PendingIntent.FLAG_CANCEL_CURRENT | PendingIntent.FLAG_IMMUTABLE); builder.setContentIntent(resultPendingIntent); NotificationManager notificationManager = - context.getSystemService(NotificationManager.class); + (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); notificationManager.createNotificationChannel(notificationChannel); notificationManager.notify(SIM_SELECT_NOTIFICATION_ID, builder.build()); } public static void cancelSimSelectNotification(Context context) { NotificationManager notificationManager = - context.getSystemService(NotificationManager.class); + (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); notificationManager.cancel(SIM_SELECT_NOTIFICATION_ID); } @@ -270,14 +270,14 @@ public class SimSelectNotification extends BroadcastReceiver { // Notify the notification. NotificationManager notificationManager = - context.getSystemService(NotificationManager.class); + (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); notificationManager.createNotificationChannel(notificationChannel); notificationManager.notify(ENABLE_MMS_NOTIFICATION_ID, builder.build()); } private void cancelEnableMmsNotification(Context context) { NotificationManager notificationManager = - context.getSystemService(NotificationManager.class); + (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); notificationManager.cancel(ENABLE_MMS_NOTIFICATION_ID); } diff --git a/src/com/android/settings/vpn2/AppManagementFragment.java b/src/com/android/settings/vpn2/AppManagementFragment.java index 4543f3faac9..0543fee7dbe 100644 --- a/src/com/android/settings/vpn2/AppManagementFragment.java +++ b/src/com/android/settings/vpn2/AppManagementFragment.java @@ -319,7 +319,7 @@ public class AppManagementFragment extends SettingsPreferenceFragment @VisibleForTesting static boolean appHasVpnPermission(Context context, @NonNull ApplicationInfo application) { final AppOpsManager service = - context.getSystemService(AppOpsManager.class); + (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE); final List ops = service.getOpsForPackage(application.uid, application.packageName, new int[]{OP_ACTIVATE_VPN, OP_ACTIVATE_PLATFORM_VPN}); return !ArrayUtils.isEmpty(ops); diff --git a/src/com/android/settings/vpn2/VpnSettings.java b/src/com/android/settings/vpn2/VpnSettings.java index 0b6fa911e2a..7635733d77f 100644 --- a/src/com/android/settings/vpn2/VpnSettings.java +++ b/src/com/android/settings/vpn2/VpnSettings.java @@ -116,9 +116,9 @@ public class VpnSettings extends RestrictedSettingsFragment implements public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); - mUserManager = getSystemService(UserManager.class); - mConnectivityManager = getSystemService(ConnectivityManager.class); - mVpnManager = getSystemService(VpnManager.class); + mUserManager = (UserManager) getSystemService(Context.USER_SERVICE); + mConnectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); + mVpnManager = (VpnManager) getSystemService(Context.VPN_MANAGEMENT_SERVICE); mUnavailable = isUiRestricted(); setHasOptionsMenu(!mUnavailable); @@ -509,7 +509,7 @@ public class VpnSettings extends RestrictedSettingsFragment implements } // Fetch VPN-enabled apps from AppOps. - AppOpsManager aom = context.getSystemService(AppOpsManager.class); + AppOpsManager aom = (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE); List apps = aom.getPackagesForOps(new int[] {OP_ACTIVATE_VPN, OP_ACTIVATE_PLATFORM_VPN}); if (apps != null) { diff --git a/src/com/android/settings/wifi/ChangeWifiStateDetails.java b/src/com/android/settings/wifi/ChangeWifiStateDetails.java index 4e3e62eb11c..9841615a690 100644 --- a/src/com/android/settings/wifi/ChangeWifiStateDetails.java +++ b/src/com/android/settings/wifi/ChangeWifiStateDetails.java @@ -49,7 +49,7 @@ public class ChangeWifiStateDetails extends AppInfoWithHeader super.onCreate(savedInstanceState); final Context context = getActivity(); mAppBridge = new AppStateChangeWifiStateBridge(context, mState, null); - mAppOpsManager = context.getSystemService(AppOpsManager.class); + mAppOpsManager = (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE); // find preferences addPreferencesFromResource(R.xml.change_wifi_state_details); diff --git a/src/com/android/settings/wifi/ConfigureWifiSettings.java b/src/com/android/settings/wifi/ConfigureWifiSettings.java index 484d3ccd6bf..ff313c7ca4e 100644 --- a/src/com/android/settings/wifi/ConfigureWifiSettings.java +++ b/src/com/android/settings/wifi/ConfigureWifiSettings.java @@ -69,7 +69,7 @@ public class ConfigureWifiSettings extends DashboardFragment { @Override protected List createPreferenceControllers(Context context) { - final WifiManager wifiManager = getSystemService(WifiManager.class); + final WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE); final List controllers = new ArrayList<>(); controllers.add(new WifiP2pPreferenceController(context, getSettingsLifecycle(), wifiManager)); diff --git a/src/com/android/settings/wifi/UseOpenWifiPreferenceController.java b/src/com/android/settings/wifi/UseOpenWifiPreferenceController.java index 5fa4dfb4e66..44114e5aa75 100644 --- a/src/com/android/settings/wifi/UseOpenWifiPreferenceController.java +++ b/src/com/android/settings/wifi/UseOpenWifiPreferenceController.java @@ -51,7 +51,7 @@ public class UseOpenWifiPreferenceController extends TogglePreferenceController super(context, KEY_USE_OPEN_WIFI_AUTOMATICALLY); mContentResolver = context.getContentResolver(); mNetworkScoreManager = - context.getSystemService(NetworkScoreManager.class); + (NetworkScoreManager) context.getSystemService(Context.NETWORK_SCORE_SERVICE); mSettingObserver = new SettingObserver(); updateEnableUseWifiComponentName(); checkForFeatureSupportedScorers(); diff --git a/src/com/android/settings/wifi/WifiAPITest.java b/src/com/android/settings/wifi/WifiAPITest.java index 498539d9d6d..15465edb04b 100644 --- a/src/com/android/settings/wifi/WifiAPITest.java +++ b/src/com/android/settings/wifi/WifiAPITest.java @@ -64,7 +64,7 @@ public class WifiAPITest extends SettingsPreferenceFragment implements public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - mWifiManager = getSystemService(WifiManager.class); + mWifiManager = (WifiManager) getSystemService(WIFI_SERVICE); } @Override diff --git a/src/com/android/settings/wifi/WifiConfigInfo.java b/src/com/android/settings/wifi/WifiConfigInfo.java index 18ac2e57cd5..0de306396a2 100644 --- a/src/com/android/settings/wifi/WifiConfigInfo.java +++ b/src/com/android/settings/wifi/WifiConfigInfo.java @@ -38,7 +38,7 @@ public class WifiConfigInfo extends Activity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - mWifiManager = getSystemService(WifiManager.class); + mWifiManager = (WifiManager) getSystemService(WIFI_SERVICE); setContentView(R.layout.wifi_config_info); mConfigList = (TextView) findViewById(R.id.config_list); } diff --git a/src/com/android/settings/wifi/WifiEnabler.java b/src/com/android/settings/wifi/WifiEnabler.java index ba1ee3c2347..dc5be4209a8 100644 --- a/src/com/android/settings/wifi/WifiEnabler.java +++ b/src/com/android/settings/wifi/WifiEnabler.java @@ -75,7 +75,7 @@ public class WifiEnabler implements SwitchWidgetController.OnSwitchChangeListene public WifiEnabler(Context context, SwitchWidgetController switchWidget, MetricsFeatureProvider metricsFeatureProvider) { this(context, switchWidget, metricsFeatureProvider, - context.getSystemService(ConnectivityManager.class)); + (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE)); } @VisibleForTesting @@ -86,7 +86,7 @@ public class WifiEnabler implements SwitchWidgetController.OnSwitchChangeListene mSwitchWidget = switchWidget; mSwitchWidget.setListener(this); mMetricsFeatureProvider = metricsFeatureProvider; - mWifiManager = context.getSystemService(WifiManager.class); + mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); mConnectivityManager = connectivityManager; mIntentFilter = new IntentFilter(WifiManager.WIFI_STATE_CHANGED_ACTION); diff --git a/src/com/android/settings/wifi/WifiNoInternetDialog.java b/src/com/android/settings/wifi/WifiNoInternetDialog.java index 3cd8a8a0adc..57e42f82ace 100644 --- a/src/com/android/settings/wifi/WifiNoInternetDialog.java +++ b/src/com/android/settings/wifi/WifiNoInternetDialog.java @@ -107,7 +107,7 @@ public class WifiNoInternetDialog extends AlertActivity implements } }; - mCM = getSystemService(ConnectivityManager.class); + mCM = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); mCM.registerNetworkCallback(request, mNetworkCallback); final NetworkInfo ni = mCM.getNetworkInfo(mNetwork); diff --git a/src/com/android/settings/wifi/WifiStatusTest.java b/src/com/android/settings/wifi/WifiStatusTest.java index 06242e3575b..249cd710fd6 100644 --- a/src/com/android/settings/wifi/WifiStatusTest.java +++ b/src/com/android/settings/wifi/WifiStatusTest.java @@ -116,7 +116,7 @@ public class WifiStatusTest extends Activity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - mWifiManager = getSystemService(WifiManager.class); + mWifiManager = (WifiManager) getSystemService(WIFI_SERVICE); mWifiStateFilter = new IntentFilter(WifiManager.WIFI_STATE_CHANGED_ACTION); mWifiStateFilter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION); diff --git a/src/com/android/settings/wifi/WifiUtils.java b/src/com/android/settings/wifi/WifiUtils.java index e576851fa91..d05260afe1f 100644 --- a/src/com/android/settings/wifi/WifiUtils.java +++ b/src/com/android/settings/wifi/WifiUtils.java @@ -83,7 +83,7 @@ public class WifiUtils { final DevicePolicyManager dpm = (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE); final PackageManager pm = context.getPackageManager(); - final UserManager um = context.getSystemService(UserManager.class); + final UserManager um = (UserManager) context.getSystemService(Context.USER_SERVICE); // Check if device has DPM capability. If it has and dpm is still null, then we // treat this case with suspicion and bail out. diff --git a/src/com/android/settings/wifi/WifiWakeupPreferenceController.java b/src/com/android/settings/wifi/WifiWakeupPreferenceController.java index 3aa62b97a64..e9fd35004da 100644 --- a/src/com/android/settings/wifi/WifiWakeupPreferenceController.java +++ b/src/com/android/settings/wifi/WifiWakeupPreferenceController.java @@ -73,7 +73,7 @@ public class WifiWakeupPreferenceController extends TogglePreferenceController i public WifiWakeupPreferenceController(Context context) { super(context, KEY_ENABLE_WIFI_WAKEUP); - mLocationManager = context.getSystemService(LocationManager.class); + mLocationManager = (LocationManager) context.getSystemService(Service.LOCATION_SERVICE); mWifiManager = context.getSystemService(WifiManager.class); } diff --git a/src/com/android/settings/wifi/calling/WifiCallingSettingsForSub.java b/src/com/android/settings/wifi/calling/WifiCallingSettingsForSub.java index 3cfe514ae2b..de64b911111 100644 --- a/src/com/android/settings/wifi/calling/WifiCallingSettingsForSub.java +++ b/src/com/android/settings/wifi/calling/WifiCallingSettingsForSub.java @@ -128,8 +128,8 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment boolean isWfcModeEditable = true; boolean isWfcRoamingModeEditable = false; - final CarrierConfigManager configManager = - activity.getSystemService(CarrierConfigManager.class); + final CarrierConfigManager configManager = (CarrierConfigManager) + activity.getSystemService(Context.CARRIER_CONFIG_SERVICE); if (configManager != null) { PersistableBundle b = configManager.getConfigForSubId(WifiCallingSettingsForSub.this.mSubId); @@ -343,8 +343,8 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment return; } - final CarrierConfigManager configManager = - getSystemService(CarrierConfigManager.class); + final CarrierConfigManager configManager = (CarrierConfigManager) + getSystemService(Context.CARRIER_CONFIG_SERVICE); boolean isWifiOnlySupported = true; if (configManager != null) { diff --git a/src/com/android/settings/wifi/details2/AddDevicePreferenceController2.java b/src/com/android/settings/wifi/details2/AddDevicePreferenceController2.java index 9ab64c7a661..8f9741a6b34 100644 --- a/src/com/android/settings/wifi/details2/AddDevicePreferenceController2.java +++ b/src/com/android/settings/wifi/details2/AddDevicePreferenceController2.java @@ -42,7 +42,7 @@ public class AddDevicePreferenceController2 extends BasePreferenceController { public AddDevicePreferenceController2(Context context) { super(context, KEY_ADD_DEVICE); - mWifiManager = context.getSystemService(WifiManager.class); + mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); } public void setWifiEntry(WifiEntry wifiEntry) { diff --git a/src/com/android/settings/wifi/details2/WifiNetworkDetailsFragment2.java b/src/com/android/settings/wifi/details2/WifiNetworkDetailsFragment2.java index 488ffcb5a5b..104761f7c88 100644 --- a/src/com/android/settings/wifi/details2/WifiNetworkDetailsFragment2.java +++ b/src/com/android/settings/wifi/details2/WifiNetworkDetailsFragment2.java @@ -143,8 +143,8 @@ public class WifiNetworkDetailsFragment2 extends DashboardFragment implements if (admin == null) { final DevicePolicyManager dpm = (DevicePolicyManager) getContext().getSystemService(Context.DEVICE_POLICY_SERVICE); - final UserManager um = - getContext().getSystemService(UserManager.class); + final UserManager um = (UserManager) + getContext().getSystemService(Context.USER_SERVICE); final int profileOwnerUserId = Utils.getManagedProfileId( um, UserHandle.myUserId()); if (profileOwnerUserId != UserHandle.USER_NULL) { diff --git a/src/com/android/settings/wifi/details2/WifiPrivacyPreferenceController2.java b/src/com/android/settings/wifi/details2/WifiPrivacyPreferenceController2.java index 72a23615249..c4849225641 100644 --- a/src/com/android/settings/wifi/details2/WifiPrivacyPreferenceController2.java +++ b/src/com/android/settings/wifi/details2/WifiPrivacyPreferenceController2.java @@ -45,7 +45,7 @@ public class WifiPrivacyPreferenceController2 extends BasePreferenceController i public WifiPrivacyPreferenceController2(Context context) { super(context, KEY_WIFI_PRIVACY); - mWifiManager = context.getSystemService(WifiManager.class); + mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); } public void setWifiEntry(WifiEntry wifiEntry) { diff --git a/src/com/android/settings/wifi/dpp/WifiDppUtils.java b/src/com/android/settings/wifi/dpp/WifiDppUtils.java index 081e160e44c..abf5becfbc3 100644 --- a/src/com/android/settings/wifi/dpp/WifiDppUtils.java +++ b/src/com/android/settings/wifi/dpp/WifiDppUtils.java @@ -373,8 +373,8 @@ public class WifiDppUtils { * device security or if lock screen is unlocked */ public static void showLockScreen(Context context, Runnable successRunnable) { - final KeyguardManager keyguardManager = context.getSystemService( - KeyguardManager.class); + final KeyguardManager keyguardManager = (KeyguardManager) context.getSystemService( + Context.KEYGUARD_SERVICE); if (keyguardManager.isKeyguardSecure()) { final BiometricPrompt.AuthenticationCallback authenticationCallback = diff --git a/src/com/android/settings/wifi/p2p/WifiP2pPreferenceController.java b/src/com/android/settings/wifi/p2p/WifiP2pPreferenceController.java index 8696bef2a62..96044100647 100644 --- a/src/com/android/settings/wifi/p2p/WifiP2pPreferenceController.java +++ b/src/com/android/settings/wifi/p2p/WifiP2pPreferenceController.java @@ -71,7 +71,7 @@ public class WifiP2pPreferenceController extends AbstractPreferenceController super(context); mWifiManager = wifiManager; lifecycle.addObserver(this); - mLocationManager = context.getSystemService(LocationManager.class); + mLocationManager = (LocationManager) context.getSystemService(Service.LOCATION_SERVICE); } @Override diff --git a/src/com/android/settings/wifi/p2p/WifiP2pSettings.java b/src/com/android/settings/wifi/p2p/WifiP2pSettings.java index 0aac0bb46dc..9578c802ab0 100644 --- a/src/com/android/settings/wifi/p2p/WifiP2pSettings.java +++ b/src/com/android/settings/wifi/p2p/WifiP2pSettings.java @@ -200,7 +200,7 @@ public class WifiP2pSettings extends DashboardFragment public void onActivityCreated(Bundle savedInstanceState) { final Activity activity = getActivity(); if (mWifiP2pManager == null) { - mWifiP2pManager = getSystemService(WifiP2pManager.class); + mWifiP2pManager = (WifiP2pManager) getSystemService(Context.WIFI_P2P_SERVICE); } if (mWifiP2pManager != null) { diff --git a/src/com/android/settings/wifi/qrcode/QrCamera.java b/src/com/android/settings/wifi/qrcode/QrCamera.java index 274655d45d4..3865eb1f116 100644 --- a/src/com/android/settings/wifi/qrcode/QrCamera.java +++ b/src/com/android/settings/wifi/qrcode/QrCamera.java @@ -202,7 +202,7 @@ public class QrCamera extends Handler { } final WindowManager winManager = - mContext.get().getSystemService(WindowManager.class); + (WindowManager) mContext.get().getSystemService(Context.WINDOW_SERVICE); final int rotation = winManager.getDefaultDisplay().getRotation(); int degrees = 0; switch (rotation) { diff --git a/src/com/android/settings/wifi/tether/TetherService.java b/src/com/android/settings/wifi/tether/TetherService.java index a3321bb27c7..59027193ed5 100644 --- a/src/com/android/settings/wifi/tether/TetherService.java +++ b/src/com/android/settings/wifi/tether/TetherService.java @@ -255,7 +255,7 @@ public class TetherService extends Service { } private void disableTethering(final int tetheringType) { - final TetheringManager tm = getSystemService(TetheringManager.class); + final TetheringManager tm = (TetheringManager) getSystemService(Context.TETHERING_SERVICE); tm.stopTethering(tetheringType); } diff --git a/src/com/android/settings/wifi/tether/WifiTetherBasePreferenceController.java b/src/com/android/settings/wifi/tether/WifiTetherBasePreferenceController.java index a950dc312cd..46da097959c 100644 --- a/src/com/android/settings/wifi/tether/WifiTetherBasePreferenceController.java +++ b/src/com/android/settings/wifi/tether/WifiTetherBasePreferenceController.java @@ -45,8 +45,8 @@ public abstract class WifiTetherBasePreferenceController extends AbstractPrefere OnTetherConfigUpdateListener listener) { super(context); mListener = listener; - mWifiManager = context.getSystemService(WifiManager.class); - mTm = context.getSystemService(TetheringManager.class); + mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); + mTm = (TetheringManager) context.getSystemService(Context.TETHERING_SERVICE); mWifiRegexs = mTm.getTetherableWifiRegexs(); } diff --git a/src/com/android/settings/wifi/tether/WifiTetherPreferenceController.java b/src/com/android/settings/wifi/tether/WifiTetherPreferenceController.java index 1fa41b2f359..70b6a45eb52 100644 --- a/src/com/android/settings/wifi/tether/WifiTetherPreferenceController.java +++ b/src/com/android/settings/wifi/tether/WifiTetherPreferenceController.java @@ -63,7 +63,7 @@ public class WifiTetherPreferenceController extends AbstractPreferenceController boolean initSoftApManager) { super(context); mTetheringManager = context.getSystemService(TetheringManager.class); - mWifiManager = context.getSystemService(WifiManager.class); + mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); mWifiRegexs = mTetheringManager.getTetherableWifiRegexs(); mLifecycle = lifecycle; if (lifecycle != null) { diff --git a/src/com/android/settings/wifi/tether/WifiTetherSettings.java b/src/com/android/settings/wifi/tether/WifiTetherSettings.java index 41b439bab55..e34255035e5 100644 --- a/src/com/android/settings/wifi/tether/WifiTetherSettings.java +++ b/src/com/android/settings/wifi/tether/WifiTetherSettings.java @@ -110,7 +110,7 @@ public class WifiTetherSettings extends RestrictedDashboardFragment @Override public void onAttach(Context context) { super.onAttach(context); - mWifiManager = context.getSystemService(WifiManager.class); + mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); mTetherChangeReceiver = new TetherChangeReceiver(); mSSIDPreferenceController = use(WifiTetherSSIDPreferenceController.class); diff --git a/src/com/android/settings/wifi/tether/WifiTetherSwitchBarController.java b/src/com/android/settings/wifi/tether/WifiTetherSwitchBarController.java index 379bf6d944f..3d8cd3e76c1 100644 --- a/src/com/android/settings/wifi/tether/WifiTetherSwitchBarController.java +++ b/src/com/android/settings/wifi/tether/WifiTetherSwitchBarController.java @@ -73,8 +73,8 @@ public class WifiTetherSwitchBarController implements mSwitch = mSwitchBar.getSwitch(); mDataSaverBackend = new DataSaverBackend(context); mConnectivityManager = - context.getSystemService(ConnectivityManager.class); - mWifiManager = context.getSystemService(WifiManager.class); + (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); + mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); mSwitchBar.setChecked(mWifiManager.getWifiApState() == WifiManager.WIFI_AP_STATE_ENABLED); updateWifiSwitch(); } diff --git a/tests/robotests/src/com/android/settings/deviceinfo/imei/ImeiInfoPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/deviceinfo/imei/ImeiInfoPreferenceControllerTest.java index 60eab127d3f..997c35e19e5 100644 --- a/tests/robotests/src/com/android/settings/deviceinfo/imei/ImeiInfoPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/deviceinfo/imei/ImeiInfoPreferenceControllerTest.java @@ -181,8 +181,8 @@ public class ImeiInfoPreferenceControllerTest { mController.copy(); - final ClipboardManager clipboard = mContext.getSystemService( - ClipboardManager.class); + final ClipboardManager clipboard = (ClipboardManager) mContext.getSystemService( + CLIPBOARD_SERVICE); final CharSequence data = clipboard.getPrimaryClip().getItemAt(0).getText(); assertThat(data.toString()).isEqualTo(meid); } diff --git a/tests/robotests/src/com/android/settings/network/BluetoothTetherPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/BluetoothTetherPreferenceControllerTest.java index 53dd95917ff..d3a3129f4a2 100644 --- a/tests/robotests/src/com/android/settings/network/BluetoothTetherPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/network/BluetoothTetherPreferenceControllerTest.java @@ -57,7 +57,7 @@ public class BluetoothTetherPreferenceControllerTest { mContext = spy(ApplicationProvider.getApplicationContext()); mSwitchPreference = spy(SwitchPreference.class); - when(mContext.getSystemService(TetheringManager.class)).thenReturn(mTetheringManager); + when(mContext.getSystemService(Context.TETHERING_SERVICE)).thenReturn(mTetheringManager); when(mTetheringManager.getTetherableBluetoothRegexs()).thenReturn(new String[] {""}); mController = new BluetoothTetherPreferenceController(mContext, "BLUETOOTH"); mController.setTetherEnabler(mTetherEnabler); diff --git a/tests/robotests/src/com/android/settings/network/EthernetTetherPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/EthernetTetherPreferenceControllerTest.java index de642f65ab1..8a819087296 100644 --- a/tests/robotests/src/com/android/settings/network/EthernetTetherPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/network/EthernetTetherPreferenceControllerTest.java @@ -62,9 +62,9 @@ public class EthernetTetherPreferenceControllerTest { public void setUp() { mContext = spy(ApplicationProvider.getApplicationContext()); mPreference = spy(SwitchPreference.class); - when(mContext.getSystemService(TetheringManager.class)).thenReturn(mTetheringManager); + when(mContext.getSystemService(Context.TETHERING_SERVICE)).thenReturn(mTetheringManager); when(mTetheringManager.getTetherableIfaces()).thenReturn(new String[]{ETHERNET_REGEX}); - when(mContext.getSystemService(EthernetManager.class)).thenReturn(mEthernetManager); + when(mContext.getSystemService(Context.ETHERNET_SERVICE)).thenReturn(mEthernetManager); mController = new EthernetTetherPreferenceController(mContext, "ethernet"); mController.setTetherEnabler(mTetherEnabler); ReflectionHelpers.setField(mController, "mEthernetRegex", ETHERNET_REGEX); diff --git a/tests/robotests/src/com/android/settings/network/NetworkResetRestrictionCheckerTest.java b/tests/robotests/src/com/android/settings/network/NetworkResetRestrictionCheckerTest.java index 293b6493a5a..8996c1d24a2 100644 --- a/tests/robotests/src/com/android/settings/network/NetworkResetRestrictionCheckerTest.java +++ b/tests/robotests/src/com/android/settings/network/NetworkResetRestrictionCheckerTest.java @@ -45,14 +45,14 @@ public class NetworkResetRestrictionCheckerTest { @Before public void setUp() { MockitoAnnotations.initMocks(this); - when(mContext.getSystemService(UserManager.class)).thenReturn(mUserManager); + when(mContext.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager); mRestrictionChecker = spy(new NetworkResetRestrictionChecker(mContext)); } @Test public void testHasRestriction_notAdmin_shouldReturnTrue() { final Context context = mock(Context.class); - when(context.getSystemService(UserManager.class)).thenReturn(mUserManager); + when(context.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager); when(mUserManager.isAdminUser()).thenReturn(false); assertThat(mRestrictionChecker.hasRestriction()).isTrue(); diff --git a/tests/robotests/src/com/android/settings/network/PrivateDnsPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/PrivateDnsPreferenceControllerTest.java index fce95178567..390a6744d1d 100644 --- a/tests/robotests/src/com/android/settings/network/PrivateDnsPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/network/PrivateDnsPreferenceControllerTest.java @@ -125,7 +125,7 @@ public class PrivateDnsPreferenceControllerTest { mContext = spy(RuntimeEnvironment.application); mContentResolver = mContext.getContentResolver(); mShadowContentResolver = Shadow.extract(mContentResolver); - when(mContext.getSystemService(ConnectivityManager.class)) + when(mContext.getSystemService(Context.CONNECTIVITY_SERVICE)) .thenReturn(mConnectivityManager); doNothing().when(mConnectivityManager).registerDefaultNetworkCallback( mCallbackCaptor.capture(), nullable(Handler.class)); diff --git a/tests/robotests/src/com/android/settings/network/TetherEnablerTest.java b/tests/robotests/src/com/android/settings/network/TetherEnablerTest.java index cd93865be78..bb4b0c41492 100644 --- a/tests/robotests/src/com/android/settings/network/TetherEnablerTest.java +++ b/tests/robotests/src/com/android/settings/network/TetherEnablerTest.java @@ -95,10 +95,10 @@ public class TetherEnablerTest { AtomicReference panReference = spy(AtomicReference.class); mSwitchBar = spy(new SwitchBar(context)); mSwitchWidgetController = spy(new SwitchBarController(mSwitchBar)); - when(context.getSystemService(WifiManager.class)).thenReturn(mWifiManager); - when(context.getSystemService(ConnectivityManager.class)).thenReturn( + when(context.getSystemService(Context.WIFI_SERVICE)).thenReturn(mWifiManager); + when(context.getSystemService(Context.CONNECTIVITY_SERVICE)).thenReturn( mConnectivityManager); - when(context.getSystemService(TetheringManager.class)).thenReturn(mTetheringManager); + when(context.getSystemService(Context.TETHERING_SERVICE)).thenReturn(mTetheringManager); when(context.getSystemService(Context.NETWORK_POLICY_SERVICE)).thenReturn( mNetworkPolicyManager); when(mTetheringManager.getTetherableIfaces()).thenReturn(new String[0]); @@ -311,4 +311,4 @@ public class TetherEnablerTest { assertThat(TetherEnabler.isTethering(TETHERING_ETHERNET_ON, TETHERING_ETHERNET)).isTrue(); assertThat(TetherEnabler.isTethering(~TETHERING_ETHERNET_ON, TETHERING_ETHERNET)).isFalse(); } -} +} \ No newline at end of file diff --git a/tests/robotests/src/com/android/settings/network/UsbTetherPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/UsbTetherPreferenceControllerTest.java index 0639ef320c0..e02da9002a9 100644 --- a/tests/robotests/src/com/android/settings/network/UsbTetherPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/network/UsbTetherPreferenceControllerTest.java @@ -55,7 +55,7 @@ public class UsbTetherPreferenceControllerTest { MockitoAnnotations.initMocks(this); mContext = spy(ApplicationProvider.getApplicationContext()); - when(mContext.getSystemService(TetheringManager.class)).thenReturn(mTetheringManager); + when(mContext.getSystemService(Context.TETHERING_SERVICE)).thenReturn(mTetheringManager); when(mTetheringManager.getTetherableUsbRegexs()).thenReturn(new String[]{""}); mController = new UsbTetherPreferenceController(mContext, "USB"); mController.setTetherEnabler(mTetherEnabler); diff --git a/tests/robotests/src/com/android/settings/network/WifiTetherDisablePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/WifiTetherDisablePreferenceControllerTest.java index 22ed55cbd90..a82a71f18f5 100644 --- a/tests/robotests/src/com/android/settings/network/WifiTetherDisablePreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/network/WifiTetherDisablePreferenceControllerTest.java @@ -100,7 +100,7 @@ public class WifiTetherDisablePreferenceControllerTest { mContext = spy(ApplicationProvider.getApplicationContext()); mPreference = spy(SwitchPreference.class); - when(mContext.getSystemService(TetheringManager.class)).thenReturn(mTetheringManager); + when(mContext.getSystemService(Context.TETHERING_SERVICE)).thenReturn(mTetheringManager); when(mTetheringManager.getTetherableWifiRegexs()).thenReturn(new String[]{""}); mController = new WifiTetherDisablePreferenceController(mContext, WIFI_TETHER_DISABLE_KEY); mController.setTetherEnabler(mTetherEnabler); diff --git a/tests/robotests/src/com/android/settings/network/telephony/MobileDataSliceTest.java b/tests/robotests/src/com/android/settings/network/telephony/MobileDataSliceTest.java index acc6b1a2967..ba37c30389a 100644 --- a/tests/robotests/src/com/android/settings/network/telephony/MobileDataSliceTest.java +++ b/tests/robotests/src/com/android/settings/network/telephony/MobileDataSliceTest.java @@ -74,7 +74,7 @@ public class MobileDataSliceTest { MockitoAnnotations.initMocks(this); mContext = spy(RuntimeEnvironment.application); - doReturn(mTelephonyManager).when(mContext).getSystemService(TelephonyManager.class); + doReturn(mTelephonyManager).when(mContext).getSystemService(Context.TELEPHONY_SERVICE); doReturn(mSubscriptionManager).when(mContext).getSystemService(SubscriptionManager.class); doReturn(mTelephonyManager).when(mTelephonyManager).createForSubscriptionId(SUB_ID); doReturn(mSubscriptionInfo).when(mSubscriptionManager).getActiveSubscriptionInfo(anyInt()); diff --git a/tests/robotests/src/com/android/settings/network/telephony/NetworkSelectSettingsTest.java b/tests/robotests/src/com/android/settings/network/telephony/NetworkSelectSettingsTest.java index 0d864080eb7..6bee38fba9e 100644 --- a/tests/robotests/src/com/android/settings/network/telephony/NetworkSelectSettingsTest.java +++ b/tests/robotests/src/com/android/settings/network/telephony/NetworkSelectSettingsTest.java @@ -77,7 +77,7 @@ public class NetworkSelectSettingsTest { MockitoAnnotations.initMocks(this); mContext = spy(RuntimeEnvironment.application); - when(mContext.getSystemService(TelephonyManager.class)).thenReturn(mTelephonyManager); + when(mContext.getSystemService(Context.TELEPHONY_SERVICE)).thenReturn(mTelephonyManager); when(mContext.getSystemService(SubscriptionManager.class)).thenReturn(mSubscriptionManager); when(mTelephonyManager.createForSubscriptionId(SUB_ID)).thenReturn(mTelephonyManager); diff --git a/tests/robotests/src/com/android/settings/wifi/NetworkRequestDialogActivityTest.java b/tests/robotests/src/com/android/settings/wifi/NetworkRequestDialogActivityTest.java index be3267e5628..094e2826459 100644 --- a/tests/robotests/src/com/android/settings/wifi/NetworkRequestDialogActivityTest.java +++ b/tests/robotests/src/com/android/settings/wifi/NetworkRequestDialogActivityTest.java @@ -78,7 +78,7 @@ public class NetworkRequestDialogActivityTest { mActivity = spy(activity); mWifiManager = mock(WifiManager.class); - when(mActivity.getSystemService(WifiManager.class)).thenReturn(mWifiManager); + when(mActivity.getSystemService(Context.WIFI_SERVICE)).thenReturn(mWifiManager); } @Test diff --git a/tests/robotests/src/com/android/settings/wifi/WifiEnablerTest.java b/tests/robotests/src/com/android/settings/wifi/WifiEnablerTest.java index 2475d807f94..65cc8111e36 100644 --- a/tests/robotests/src/com/android/settings/wifi/WifiEnablerTest.java +++ b/tests/robotests/src/com/android/settings/wifi/WifiEnablerTest.java @@ -53,7 +53,7 @@ public class WifiEnablerTest { @Before public void setUp() { MockitoAnnotations.initMocks(this); - when(mContext.getSystemService(WifiManager.class)).thenReturn(mWifiManager); + when(mContext.getSystemService(Context.WIFI_SERVICE)).thenReturn(mWifiManager); mEnabler = new WifiEnabler(mContext, mock(SwitchWidgetController.class), mock(MetricsFeatureProvider.class), mConnectivityManager); } diff --git a/tests/robotests/src/com/android/settings/wifi/WifiPrimarySwitchPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/wifi/WifiPrimarySwitchPreferenceControllerTest.java index 4100d058050..b94df29401e 100644 --- a/tests/robotests/src/com/android/settings/wifi/WifiPrimarySwitchPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/wifi/WifiPrimarySwitchPreferenceControllerTest.java @@ -78,7 +78,7 @@ public class WifiPrimarySwitchPreferenceControllerTest { when(mContext.getSystemService(NetworkScoreManager.class)).thenReturn(mNetworkScoreManager); mController = new WifiPrimarySwitchPreferenceController(mContext, mMetricsFeatureProvider); when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mPreference); - when(mContext.getSystemService(WifiManager.class)).thenReturn(mWifiManager); + when(mContext.getSystemService(Context.WIFI_SERVICE)).thenReturn(mWifiManager); when(mWifiManager.getWifiState()).thenReturn(WifiManager.WIFI_STATE_DISABLED); } diff --git a/tests/robotests/src/com/android/settings/wifi/WifiSettingsTest.java b/tests/robotests/src/com/android/settings/wifi/WifiSettingsTest.java index 428a3600a13..7eba586720c 100644 --- a/tests/robotests/src/com/android/settings/wifi/WifiSettingsTest.java +++ b/tests/robotests/src/com/android/settings/wifi/WifiSettingsTest.java @@ -209,7 +209,7 @@ public class WifiSettingsTest { final Resources.Theme theme = mContext.getTheme(); when(activity.getTheme()).thenReturn(theme); UserManager userManager = mock(UserManager.class); - when(activity.getSystemService(UserManager.class)) + when(activity.getSystemService(Context.USER_SERVICE)) .thenReturn(userManager); when(mWifiSettings.findPreference(WifiSettings.PREF_KEY_DATA_USAGE)) diff --git a/tests/robotests/src/com/android/settings/wifi/calling/DisclaimerItemListAdapterTest.java b/tests/robotests/src/com/android/settings/wifi/calling/DisclaimerItemListAdapterTest.java index 3e15348c9f3..8478a5471ac 100644 --- a/tests/robotests/src/com/android/settings/wifi/calling/DisclaimerItemListAdapterTest.java +++ b/tests/robotests/src/com/android/settings/wifi/calling/DisclaimerItemListAdapterTest.java @@ -77,7 +77,7 @@ public class DisclaimerItemListAdapterTest { when(mLayoutInflater.inflate(anyInt(), anyObject(), anyBoolean())).thenReturn(mView); when(mViewGroup.getContext()).thenReturn(mContext); - when(mViewGroup.getContext().getSystemService(LayoutInflater.class)).thenReturn( + when(mViewGroup.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE)).thenReturn( mLayoutInflater); when(mView.findViewById(ID_DISCLAIMER_ITEM_TITLE)).thenReturn(mTestView); when(mView.findViewById(ID_DISCLAIMER_ITEM_DESCRIPTION)).thenReturn(mDescView); diff --git a/tests/robotests/src/com/android/settings/wifi/calling/EmergencyCallLimitationDisclaimerTest.java b/tests/robotests/src/com/android/settings/wifi/calling/EmergencyCallLimitationDisclaimerTest.java index c15e8507397..985edda69b5 100644 --- a/tests/robotests/src/com/android/settings/wifi/calling/EmergencyCallLimitationDisclaimerTest.java +++ b/tests/robotests/src/com/android/settings/wifi/calling/EmergencyCallLimitationDisclaimerTest.java @@ -54,7 +54,7 @@ public class EmergencyCallLimitationDisclaimerTest { mContext = spy(RuntimeEnvironment.application); doReturn(mCarrierConfigManager).when(mContext).getSystemService( - CarrierConfigManager.class); + Context.CARRIER_CONFIG_SERVICE); when(mCarrierConfigManager.getConfigForSubId(anyInt())).thenReturn(mBundle); doReturn(getSharedPreferences()).when(mContext).getSharedPreferences(anyString(), anyInt()); diff --git a/tests/robotests/src/com/android/settings/wifi/calling/LocationPolicyDisclaimerTest.java b/tests/robotests/src/com/android/settings/wifi/calling/LocationPolicyDisclaimerTest.java index 108acf8195e..3fe9678c26e 100644 --- a/tests/robotests/src/com/android/settings/wifi/calling/LocationPolicyDisclaimerTest.java +++ b/tests/robotests/src/com/android/settings/wifi/calling/LocationPolicyDisclaimerTest.java @@ -54,7 +54,7 @@ public class LocationPolicyDisclaimerTest { mContext = spy(RuntimeEnvironment.application); doReturn(mCarrierConfigManager).when(mContext).getSystemService( - CarrierConfigManager.class); + Context.CARRIER_CONFIG_SERVICE); when(mCarrierConfigManager.getConfigForSubId(anyInt())).thenReturn(mBundle); doReturn(getSharedPreferences()).when(mContext).getSharedPreferences(anyString(), anyInt()); } diff --git a/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherApBandPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherApBandPreferenceControllerTest.java index 252d876c1b0..d777a597936 100644 --- a/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherApBandPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherApBandPreferenceControllerTest.java @@ -73,8 +73,8 @@ public class WifiTetherApBandPreferenceControllerTest { MockitoAnnotations.initMocks(this); mContext = spy(RuntimeEnvironment.application); mPreference = new ListPreference(RuntimeEnvironment.application); - when(mContext.getSystemService(WifiManager.class)).thenReturn(mWifiManager); - when(mContext.getSystemService(TetheringManager.class)).thenReturn(mTetheringManager); + when(mContext.getSystemService(Context.WIFI_SERVICE)).thenReturn(mWifiManager); + when(mContext.getSystemService(Context.TETHERING_SERVICE)).thenReturn(mTetheringManager); when(mTetheringManager.getTetherableWifiRegexs()).thenReturn(new String[]{"1", "2"}); when(mContext.getResources()).thenReturn(RuntimeEnvironment.application.getResources()); when(mScreen.findPreference(anyString())).thenReturn(mPreference); diff --git a/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherSettingsTest.java b/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherSettingsTest.java index 9a3432392f0..2ecc7d26d54 100644 --- a/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherSettingsTest.java +++ b/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherSettingsTest.java @@ -80,10 +80,10 @@ public class WifiTetherSettingsTest { MockitoAnnotations.initMocks(this); doReturn(mConnectivityManager) - .when(mContext).getSystemService(ConnectivityManager.class); - doReturn(mTetheringManager).when(mContext).getSystemService(TetheringManager.class); + .when(mContext).getSystemService(Context.CONNECTIVITY_SERVICE); + doReturn(mTetheringManager).when(mContext).getSystemService(Context.TETHERING_SERVICE); doReturn(WIFI_REGEXS).when(mTetheringManager).getTetherableWifiRegexs(); - doReturn(mUserManager).when(mContext).getSystemService(UserManager.class); + doReturn(mUserManager).when(mContext).getSystemService(Context.USER_SERVICE); mWifiTetherSettings = new WifiTetherSettings(); } @@ -133,7 +133,7 @@ public class WifiTetherSettingsTest { when(settings.getContext()).thenReturn(mContext); final Resources.Theme theme = mContext.getTheme(); when(activity.getTheme()).thenReturn(theme); - when(activity.getSystemService(UserManager.class)).thenReturn(mUserManager); + when(activity.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager); doNothing().when(settings) .onCreatePreferences(any(Bundle.class), nullable(String.class)); final FakeFeatureFactory fakeFeatureFactory = FakeFeatureFactory.setupForTest(); diff --git a/tests/unit/src/com/android/settings/network/telephony/MobileDataPreferenceControllerTest.java b/tests/unit/src/com/android/settings/network/telephony/MobileDataPreferenceControllerTest.java index 0c8ffb9c9b0..45f3693a298 100644 --- a/tests/unit/src/com/android/settings/network/telephony/MobileDataPreferenceControllerTest.java +++ b/tests/unit/src/com/android/settings/network/telephony/MobileDataPreferenceControllerTest.java @@ -74,7 +74,7 @@ public class MobileDataPreferenceControllerTest { MockitoAnnotations.initMocks(this); mContext = spy(ApplicationProvider.getApplicationContext()); - doReturn(mTelephonyManager).when(mContext).getSystemService(TelephonyManager.class); + doReturn(mTelephonyManager).when(mContext).getSystemService(Context.TELEPHONY_SERVICE); when(mContext.getSystemService(SubscriptionManager.class)).thenReturn(mSubscriptionManager); doReturn(mTelephonyManager).when(mTelephonyManager).createForSubscriptionId(SUB_ID); From bb332bcf0677d0a33f801598dee6a214b32a36d2 Mon Sep 17 00:00:00 2001 From: Bill Yi Date: Mon, 29 Mar 2021 19:09:43 -0700 Subject: [PATCH 18/28] Import translations. DO NOT MERGE ANYWHERE Auto-generated-cl: translation import Change-Id: Ibc4689e62ec0e346015676571e920106ac05960a --- res/values-iw/arrays.xml | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/res/values-iw/arrays.xml b/res/values-iw/arrays.xml index a579c4457b4..1015c32ac69 100644 --- a/res/values-iw/arrays.xml +++ b/res/values-iw/arrays.xml @@ -27,7 +27,7 @@ "אסיה" "אוסטרליה" "האוקיינוס השקט" - "הכל" + "הכול" "15 שניות" @@ -70,7 +70,7 @@ - "סורק..." + "הסריקה מתבצעת…" "מתבצעת התחברות..." "מתבצע אימות…" "‏המערכת משיגה כתובת IP…" @@ -139,7 +139,7 @@ "30 הימים האחרונים" - "הגדר מחזור שימוש..." + "הגדרת מחזור שימוש..." "זמן שימוש" @@ -233,17 +233,17 @@ "רטט" "קריאת אנשי קשר" "שנה אנשי קשר" - "קרא יומן שיחות" + "קריאת יומן שיחות" "שינוי יומן השיחות" "קריאת יומן" - "שנה יומן" + "שינוי יומן" "‏סריקת Wi-Fi" "התראה" "סריקה סלולרית" "שיחת טלפון" "‏קריאת SMS" "‏כתוב SMS" - "‏קבל SMS" + "‏קבלת SMS" "‏קבלת SMS חירום" "‏קבל MMS" "‏קבלת WAP בדחיפה" @@ -256,8 +256,8 @@ "מצלמה" "הקלט אודיו" "הפעלת האודיו" - "קרא לוח" - "שנה לוח" + "קריאת לוח" + "שינוי לוח" "לחצני מדיה" "מיקוד אודיו" "שליטה ראשית בעוצמת קול" @@ -270,7 +270,7 @@ "שמירה במצב פעיל" "עקוב אחר מיקום" "מעקב אחר מיקום עם צריכת סוללה גבוהה" - "קבל סטטיסטיקת שימוש" + "קבלת סטטיסטיקת שימוש" "השתקה/ביטול השתקה של המיקרופון" "הצגת הודעה קופצת" "הקרנת מדיה" @@ -299,10 +299,10 @@ "מיקום" "רטט" "קריאת אנשי קשר" - "שנה אנשי קשר" + "שינוי אנשי קשר" "קרא יומן שיחות" "שינוי יומן שיחות" - "קרא יומן" + "קריאת יומן" "שינוי יומן" "מיקום" "פרסום התראה" @@ -322,7 +322,7 @@ "גישה אל ההתראות" "מצלמה" "הקלטת אודיו" - "הפעל את האודיו" + "הפעלת האודיו" "קריאת הלוח" "שינוי הלוח" "לחצני מדיה" @@ -430,14 +430,14 @@ "מנותק" "מאתחל..." - "מתחבר ..." + "מתבצעת התחברות…" "מחובר" "זמן קצוב לתפוגה" "נכשל" - "שאל" - "לעולם אל תאפשר" + "יש לשאול" + "לעולם לא לאפשר" "התרה תמיד" From 3828724b764fa55e87119bcbf2dcdfff4c552344 Mon Sep 17 00:00:00 2001 From: ykhung Date: Mon, 29 Mar 2021 11:10:07 +0800 Subject: [PATCH 19/28] Export methods from BatteryEntry and controller for battery usage Export getting icon and name function as static method in the BatteryEntry for further restoring from database history records, and export the mBatteryConsumer to record the type into local database. Bug: 183906918 Test: make RunSettingsRoboTests Test: make RunSettingsGoogleRoboTests Change-Id: Ib3f0a457c8265baf0f6b97798bef0ea4a7156070 --- .../settings/fuelgauge/BatteryEntry.java | 96 ++++++++++++++----- 1 file changed, 70 insertions(+), 26 deletions(-) diff --git a/src/com/android/settings/fuelgauge/BatteryEntry.java b/src/com/android/settings/fuelgauge/BatteryEntry.java index 09380ff5590..ed52f480e94 100644 --- a/src/com/android/settings/fuelgauge/BatteryEntry.java +++ b/src/com/android/settings/fuelgauge/BatteryEntry.java @@ -52,6 +52,19 @@ import java.util.Locale; * and icon image. */ public class BatteryEntry { + + public static final class NameAndIcon { + public final String name; + public final Drawable icon; + public final int iconId; + + public NameAndIcon(String name, Drawable icon, int iconId) { + this.name = name; + this.icon = icon; + this.iconId = iconId; + } + } + public static final int MSG_UPDATE_NAME_ICON = 1; public static final int MSG_REPORT_FULLY_DRAWN = 2; @@ -186,22 +199,16 @@ public class BatteryEntry { } else if (batteryConsumer instanceof SystemBatteryConsumer) { mConsumedPower = batteryConsumer.getConsumedPower() - ((SystemBatteryConsumer) batteryConsumer).getPowerConsumedByApps(); - final Pair resourcePair = getResourcePairFromDrainType( + final NameAndIcon nameAndIcon = getNameAndIconFromDrainType( context, ((SystemBatteryConsumer) batteryConsumer).getDrainType()); - iconId = resourcePair.first; - name = resourcePair.second; + iconId = nameAndIcon.iconId; + name = nameAndIcon.name; } else if (batteryConsumer instanceof UserBatteryConsumer) { mConsumedPower = batteryConsumer.getConsumedPower(); - - UserInfo info = um.getUserInfo(((UserBatteryConsumer) batteryConsumer).getUserId()); - if (info != null) { - icon = Utils.getUserIcon(context, um, info); - name = Utils.getUserLabel(context, info); - } else { - icon = null; - name = context.getResources().getString( - R.string.running_process_item_removed_user_label); - } + final NameAndIcon nameAndIcon = getNameAndIconFromUserId( + context, ((UserBatteryConsumer) batteryConsumer).getUserId()); + icon = nameAndIcon.icon; + name = nameAndIcon.name; } if (iconId != 0) { @@ -238,15 +245,9 @@ public class BatteryEntry { } if (packages == null || packages.length == 0) { - if (uid == 0) { - name = mContext.getResources().getString(R.string.process_kernel_label); - } else if ("mediaserver".equals(name)) { - name = mContext.getResources().getString(R.string.process_mediaserver_label); - } else if ("dex2oat".equals(name)) { - name = mContext.getResources().getString(R.string.process_dex2oat_label); - } - iconId = R.drawable.ic_power_system; - icon = mContext.getDrawable(iconId); + final NameAndIcon nameAndIcon = getNameAndIconFromUid(mContext, name, uid); + icon = nameAndIcon.icon; + name = nameAndIcon.name; } else { icon = mContext.getPackageManager().getDefaultActivityIcon(); } @@ -418,6 +419,13 @@ public class BatteryEntry { } } + /** + * Returns the BatteryConsumer of the app described by this entry. + */ + public BatteryConsumer getBatteryConsumer() { + return mBatteryConsumer; + } + /** * Returns foreground foreground time (in milliseconds) that is attributed to this entry. */ @@ -462,10 +470,46 @@ public class BatteryEntry { } /** - * Gets icon ID and name from system battery consumer drain type. + * Gets name and icon resource from UserBatteryConsumer userId. */ - public static Pair getResourcePairFromDrainType( - Context context, int drainType) { + public static NameAndIcon getNameAndIconFromUserId( + Context context, final int userId) { + UserManager um = context.getSystemService(UserManager.class); + UserInfo info = um.getUserInfo(userId); + + Drawable icon = null; + String name = null; + if (info != null) { + icon = Utils.getUserIcon(context, um, info); + name = Utils.getUserLabel(context, info); + } else { + name = context.getResources().getString( + R.string.running_process_item_removed_user_label); + } + return new NameAndIcon(name, icon, 0 /* iconId */); + } + + /** + * Gets name and icon resource from UidBatteryConsumer uid. + */ + public static NameAndIcon getNameAndIconFromUid( + Context context, String name, final int uid) { + Drawable icon = context.getDrawable(R.drawable.ic_power_system); + if (uid == 0) { + name = context.getResources().getString(R.string.process_kernel_label); + } else if ("mediaserver".equals(name)) { + name = context.getResources().getString(R.string.process_mediaserver_label); + } else if ("dex2oat".equals(name)) { + name = context.getResources().getString(R.string.process_dex2oat_label); + } + return new NameAndIcon(name, icon, 0 /* iconId */); + } + + /** + * Gets name annd icon resource from SystemBatteryConsumer drain type. + */ + public static NameAndIcon getNameAndIconFromDrainType( + Context context, final int drainType) { String name = null; int iconId = 0; switch (drainType) { @@ -511,6 +555,6 @@ public class BatteryEntry { iconId = R.drawable.ic_power_system; break; } - return new Pair<>(Integer.valueOf(iconId), name); + return new NameAndIcon(name, null /* icon */, iconId); } } From 0b2ae5a68f07180a668e94fcb338c23a4f6c07e0 Mon Sep 17 00:00:00 2001 From: Bill Yi Date: Mon, 29 Mar 2021 19:58:30 -0700 Subject: [PATCH 20/28] Import translations. DO NOT MERGE ANYWHERE Auto-generated-cl: translation import Change-Id: I5ede9d88bd047f9d7a5f2f932736593beda3d3af --- res/values-ar/strings.xml | 2 +- res/values-as/strings.xml | 2 +- res/values-be/strings.xml | 4 +- res/values-bg/strings.xml | 4 +- res/values-da/strings.xml | 2 +- res/values-de/strings.xml | 2 +- res/values-el/strings.xml | 4 +- res/values-eu/strings.xml | 8 +- res/values-fr-rCA/strings.xml | 4 +- res/values-gu/strings.xml | 16 +-- res/values-hi/strings.xml | 6 +- res/values-hu/strings.xml | 4 +- res/values-hy/strings.xml | 48 +++---- res/values-in/strings.xml | 16 +-- res/values-iw/strings.xml | 256 +++++++++++++++++----------------- res/values-kk/strings.xml | 14 +- res/values-km/strings.xml | 2 +- res/values-mn/strings.xml | 10 +- res/values-ne/strings.xml | 6 +- res/values-nl/strings.xml | 102 +++++++------- res/values-or/strings.xml | 2 +- res/values-pl/strings.xml | 2 +- res/values-sw/strings.xml | 4 +- res/values-ta/strings.xml | 4 +- res/values-ur/strings.xml | 4 +- res/values-uz/strings.xml | 2 +- res/values-vi/strings.xml | 2 +- res/values-zh-rTW/strings.xml | 2 +- 28 files changed, 267 insertions(+), 267 deletions(-) diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml index ec6acf97f2e..609e001fb85 100644 --- a/res/values-ar/strings.xml +++ b/res/values-ar/strings.xml @@ -2399,7 +2399,7 @@ "مفعّل" "غير مفعّل" "معاينة" - "خيارات قياسية" + "خيارات عادية" "اللغة" "حجم النص" "نمط الشرح" diff --git a/res/values-as/strings.xml b/res/values-as/strings.xml index a0cc0bc7841..5559d5f73db 100644 --- a/res/values-as/strings.xml +++ b/res/values-as/strings.xml @@ -2591,7 +2591,7 @@ "ৰিফ্ৰেশ্ব" "মিডিয়াছাৰ্ভাৰ" "এপ অপ্টিমাইজেশ্বন" - "বেটাৰি সঞ্চয়কাৰী" + "বেটাৰী সঞ্চয়কাৰী" "স্বয়ংক্ৰিয়ভাৱে অন কৰক" "কোনো সময়সূচী নাই" "আপোনাৰ নিত্যকৰ্মৰ ওপৰত ভিত্তি কৰি" diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml index e7e201ea6e3..616c7ed60cd 100644 --- a/res/values-be/strings.xml +++ b/res/values-be/strings.xml @@ -369,7 +369,7 @@ "Палепшыце эфектыўнасць функцыі распазнавання твару" "Паўторна наладзьце распазнаванне твару" "Паўторна наладзьце функцыю распазнавання твару" - "Палепшыце бяспеку і эфектыўнасць працы" + "Палепшыце бяспеку і прадукцыйнасць працы" "Наладзьце функцыю распазнавання твару" "Каб паўторна наладзіць функцыю распазнавання твару, выдаліце існуючыя даныя твару.\n\nДаныя, якія выкарыстоўваюцца гэтай функцыяй, будуць бяспечна выдалены. Пасля выдалення для разблакіроўкі тэлефона, уваходу ў праграмы і пацвярджэння плацяжоў трэба выкарыстоўваць PIN-код, узор разблакіроўкі ці пароль." "Налады распазнавання" @@ -2683,7 +2683,7 @@ "Уключыць" - "Карыстанне функцыяй эканоміі зараду" + "Карыстанне рэжымам эканоміі зараду" "Уключаць аўтаматычна" "Ніколі" "пры ўзроўні зараду акумулятара %1$s" diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml index aff3596cb70..b0fa521fa45 100644 --- a/res/values-bg/strings.xml +++ b/res/values-bg/strings.xml @@ -1726,7 +1726,7 @@ "Приложенията да използват GPS на телефона ви, за да посочат местоположението ви" "Използване на помощ за GPS" "Използване на сървър за помощ с GPS (премахнете отметката за намаляване на употребата на мрежа)" - "Използване на сървър за помощ с GPS (премахнете отметката за подобряване на качеството нa услугата)" + "Използване на сървър за помощ с GPS (премахнете отметката за подобряване на ефективността нa услугата)" "Местопол. и търсене с Google" "Разрешавам на Google да използва местоположението ми за подобряване на резултатите от търсенето и др. услуги" "Достъп до местоположението ми" @@ -4413,7 +4413,7 @@ "Демонстрационен режим на системния ПИ" "Тъмна тема" "Включено/временно деактивирано с цел запазване на батерията" - "Временно включено с цел запазване на батерията" + "Временно включено с цел режим за запазване на батерията" "Поддържаните приложения също ще превключат към тъмна тема" "Разбрах" "Изпробвайте тъмната тема" diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml index 43b616168b2..299605380ef 100644 --- a/res/values-da/strings.xml +++ b/res/values-da/strings.xml @@ -4935,7 +4935,7 @@ "Vis ikke noget indhold" "Følsomt indhold" "Vis betjening og kort, når skærmen er låst" - "Vi styringselementer, når enheden er låst" + "Vis styring, når enheden er låst" "Vis kort, når enheden er låst" "Skjul betjening og kort, når skærmen er låst" "Du skal først konfigurere en skærmlås" diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml index ed0f70d8280..c05cc7e0f1b 100644 --- a/res/values-de/strings.xml +++ b/res/values-de/strings.xml @@ -3545,7 +3545,7 @@ "Profilbenachrichtigungen" "Benachrichtigungen" "App-Benachrichtigung" - "Benachrichtigungskategorie" + "Benachrichtigungs­kategorie" "Kategoriegruppe für Benachrichtigungen" "Verhalten" "Akustisches Signal erlauben" diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml index 34d80cfc3c7..9cfe81227c0 100644 --- a/res/values-el/strings.xml +++ b/res/values-el/strings.xml @@ -2122,9 +2122,9 @@ "Πατήστε στοιχεία στην οθόνη σας για να ακούσετε την εκφώνησή τους" "Προτιμήσεις υπότιτλων" "Μεγιστοποίηση" - "Περιοχή μεγέθυνσης" + "Μεγιστοποίηση περιοχής" "Ενεργοποίηση μεγέθυνσης" - "Επιλέξτε τις περιοχές μεγέθυνσης που θέλετε να χρησιμοποιήσετε κατά τη μεγέθυνση της οθόνης" + "Επιλέξτε τις μεγιστοποιήσεις περιοχών που θέλετε να χρησιμοποιήσετε κατά τη μεγέθυνση της οθόνης" "Πλήρης οθόνη" "Μέρος της οθόνης" "Πλήρης οθόνη και μέρος της οθόνης" diff --git a/res/values-eu/strings.xml b/res/values-eu/strings.xml index 9589e46eb3c..c2dc752c126 100644 --- a/res/values-eu/strings.xml +++ b/res/values-eu/strings.xml @@ -273,7 +273,7 @@ "%1$s erabiltzen da. Egun honetan hasiko da %2$s: %3$s." "%1$s erabiltzen da. Ez da erabiltzen udako ordutegia." "Udako ordutegia" - "Ordu arrunta" + "Ordu estandarra" "Lurraldearen arabera" "UTC orduarekiko aldearen arabera" "Data" @@ -1594,7 +1594,7 @@ "Berrezarri wifia, Bluetooth-a eta sare mugikorrak" "Hori eginez gero, sare guztien ezarpenak berrezarriko dira, besteak beste: \n\n"
  • "Wifia"
  • \n
  • "Datu-konexioa"
  • \n
  • "Bluetooth-a"
  • "Ezabatu deskargatutako SIMetako edukia" - "Ordezko SIM txartelak deskargatzeko, jarri operadorearekin harremanetan. Ez da utziko bertan behera mugikorraren zerbitzu-planik." + "Ordezko SIM txartelak deskargatzeko, jarri operadorearekin harremanetan. Ez da utziko bertan behera mugikorreko zerbitzu-planik." "Berrezarri ezarpenak" "Sareko ezarpen guztiak berrezarri nahi dituzu? Ezin da desegin ekintza hori." "Sareko ezarpen guztiak berrezarri eta deskargatutako SIM txartelen datu guztiak ezabatu nahi dituzu? Ezin da desegin ekintza hori." @@ -1612,7 +1612,7 @@ \n\n"Badaude erabiltzaile gehiago gailu honetan.\n"
  • "Musika"
  • \n
  • "Argazkiak"
  • \n
  • "Bestelako erabiltzaile-datuak"
  • "eSIM txartelak"
  • - \n\n"Horrek ez du utziko bertan behera operadorearekin kontratatuta duzun zerbitzu-plana." + \n\n"Horrek ez du utziko bertan behera mugikorreko zerbitzu-plana." \n\n"Musika, irudiak eta bestelako erabiltzaile-datuak garbitzeko, ""USB bidezko memoria"" ezabatu behar da." \n\n"Musika, irudiak eta bestelako erabiltzaile-datuak garbitzeko, ""SD txartela"" ezabatu behar da." "Ezabatu USB bidezko memoria" @@ -1726,7 +1726,7 @@ "Utzi aplikazioei telefonoan GPSa erabiltzen zure kokapena zehatz-mehatz zehazteko." "Erabili lagundutako GPSa" "Erabili zerbitzaria GPSari laguntzeko (kendu marka sarearen erabilera murrizteko)" - "Erabili zerbitzaria GPSari laguntzeko (kendu marka GPSaren funtzionamendua hobetzeko)" + "Erabili zerbitzaria GPSari laguntzeko (kendu marka GPSaren errendimendua hobetzeko)" "Kokapena eta Google bilaketa" "Utzi Google-ri zure kokapena erabiltzen bilaketa-emaitzak eta bestelako zerbitzuak hobetzeko" "Nire kokapenerako sarbidea" diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml index e26a6804946..65cf5f309f3 100644 --- a/res/values-fr-rCA/strings.xml +++ b/res/values-fr-rCA/strings.xml @@ -2122,9 +2122,9 @@ "Touchez les éléments à l\'écran pour les entendre à haute voix" "Préférences de sous-titres" "Zoom" - "Région d\'agrandissement" + "Agrandissement de région" "Activer l\'agrandissement" - "Choisir la ou les régions d\'agrandissement que vous voulez utiliser quand vous agrandissez l\'écran" + "Choisir les agrandissements de région que vous voulez utiliser quand vous agrandissez l\'écran" "Plein écran" "Partie de l\'écran" "Plein écran et partie de l\'écran" diff --git a/res/values-gu/strings.xml b/res/values-gu/strings.xml index 926531dec38..6ca805579bf 100644 --- a/res/values-gu/strings.xml +++ b/res/values-gu/strings.xml @@ -273,7 +273,7 @@ "%1$sનો ઉપયોગ કરે છે. %3$s ના રોજ %2$s શરૂ થાય છે." "%1$sનો ઉપયોગ કરે છે. કોઈ ડેલાઇટ સેવિંગ ટાઇમ નથી." "ડેલાઇટ સેવિંગ ટાઇમ" - "માનક સમય" + "સ્ટૅન્ડર્ડ સમય" "પ્રદેશ પ્રમાણે પસંદ કરો" "UTC ઑફસેટ પ્રમાણે પસંદ કરો" "તારીખ" @@ -1510,7 +1510,7 @@ "^1 ને ખસેડી રહ્યાં છે…" "ખસેડવા દરમિયાન ^1 ને દૂર કરશો નહીં. \n\nજ્યાં સુધી ખસેડવાનું પૂર્ણ થતું નથી ત્યાં સુધી આ ઉપકરણ પરની ^2 ઍપ્લિકેશન ઉપલબ્ધ થશે નહીં." "ખસેડવાનું રદ કરો" - "આ ^1 ધીમું હોય તેવું જણાય છે. \n\nતમે ચાલુ રાખી શકો છો, પરંતુ આ સ્થાને ખસેડવામાં આવેલી એપ્લિકેશન્સમાં અટકાઈ શકે અને ડેટા ટ્રાંસ્ફરમાં વધુ સમય લાગી શકે છે. \n\nબહેતર પ્રદર્શન માટે વધુ ઝડપી ^1 ને ઉપયોગમાં લેવાનું વિચારો." + "આ ^1 ધીમું હોય તેવું જણાય છે. \n\nતમે ચાલુ રાખી શકો છો, પરંતુ આ સ્થાને ખસેડવામાં આવેલી ઍપ્લિકેશનોમાં અટકાઈ શકે અને ડેટા ટ્રાંસ્ફરમાં વધુ સમય લાગી શકે છે. \n\nબહેતર કાર્યપ્રદર્શન માટે વધુ ઝડપી ^1 ને ઉપયોગમાં લેવાનું વિચારો." "તમે આ ^1નો કેવી રીતે ઉપયોગ કરશો?" "અતિરિક્ત ટૅબ્લેટ સ્ટોરેજ તરીકે ઉપયોગ" "ફક્ત આ ટૅબ્લેટ પર ઍપ, ફાઇલો અને મીડિયા માટે" @@ -1726,7 +1726,7 @@ "તમારા સ્થાનનું નિર્દેશન કરવા માટે એપ્લિકેશન્સને તમારા ફોન પરના GPS નો ઉપયોગ કરવા દો" "સહાયિત GPS નો ઉપયોગ કરો" "GPS ને સહાય કરવા માટે સર્વરનો ઉપયોગ કરો (નેટવર્ક ઉપયોગને ઘટાડવા માટે અનચેક કરો)" - "GPS ને સહાય કરવા માટે સર્વરનો ઉપયોગ કરો (GPS કામગીરીને સુધારવા માટે અનચેક કરો)" + "GPS ને સહાય કરવા માટે સર્વરનો ઉપયોગ કરો (GPS કાર્યપ્રદર્શનને સુધારવા માટે અનચેક કરો)" "સ્થાન અને Google શોધ" "Google ને શોધ પરિણામો અને અન્ય સેવાઓને બહેતર બનાવવા માટે તમારા સ્થાનનો ઉપયોગ કરવા દો" "મારા સ્થાનને ઍક્સેસ કરો" @@ -2122,9 +2122,9 @@ "તમારી સ્ક્રીન પરની આઇટમો મોટેથી વંચાઈને સાંભળવા માટે તેમને ટૅપ કરો" "કૅપ્શનની પસંદગીઓ" "વિસ્તૃતીકરણ" - "વિસ્તૃતીકરણ ક્ષેત્ર" + "સ્ક્રીનનો અમુક ભાગ મોટો કરવો" "વિસ્તૃતીકરણ ચાલુ" - "સ્ક્રીનનો વિસ્તાર કરો, ત્યારે તમે ઉપયોગ કરવા માગો છો તે વિસ્તૃતીકરણ ક્ષેત્રને પસંદ કરો" + "સ્ક્રીનને મોટી કરતી વખતે તમે ઉપયોગ કરવા માંગો છો તે સ્ક્રીનનો અમુક ભાગ મોટો કરવા પસંદ કરો" "પૂર્ણ સ્ક્રીન" "સ્ક્રીનનો ભાગ" "પૂર્ણ સ્ક્રીન અને સ્ક્રીનનો ભાગ" @@ -2283,7 +2283,7 @@ "ચાલુ" "બંધ" "પ્રીવ્યૂ" - "માનક વિકલ્પો" + "સ્ટૅન્ડર્ડ વિકલ્પો" "ભાષા" "ટેક્સ્ટ કદ" "કૅપ્શન શૈલી" @@ -3254,7 +3254,7 @@ "ઍપ્લિકેશનો, પરવાનગીઓ, સુરક્ષા" "ઍપ્લિકેશનો, ડિફોલ્ટ" "ઓપ્ટિમાઇઝેશન્સને અવગણો, ડોઝ, ઍપ્લિકેશન સ્ટેન્ડબાય" - "વાઇબ્રન્ટ, RGB, sRGB, રંગ, કુદરતી, માનક" + "વાઇબ્રન્ટ, RGB, sRGB, રંગ, કુદરતી, સ્ટૅન્ડર્ડ" "રંગ, તાપમાન, D65, D73, સફેદ, પીળો, વાદળી, ઉષ્ણ, શીતળ" "અનલૉક કરવા માટે સ્લાઇડ કરો, પાસવર્ડ, પૅટર્ન, પિન" "સ્ક્રીન પિનિંગ" @@ -4114,7 +4114,7 @@ "છેલ્લા 3 કલાકમાં કોઈ મેમરી ઉપયોગમાં લીધી નથી" "સરેરાશ વપરાશ દ્વારા સોર્ટ કરો" "મહત્તમ વપરાશ દ્વારા સોર્ટ કરો" - "પ્રદર્શન" + "કાર્યપ્રદર્શન" "કુલ મેમરી" "સરેરાશ વપરાશ (%)" "ખાલી" diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml index 8a1829d1261..6562965a308 100644 --- a/res/values-hi/strings.xml +++ b/res/values-hi/strings.xml @@ -1510,7 +1510,7 @@ "^1 को ले जाया जा रहा है…" "ले जाने के दौरान ^1 को न निकालें. \n\nइस डिवाइस में मौजूद ^2 ले जाने का काम पूरा होने तक ऐप्लिकेशन उपलब्ध नहीं रहेगा." "ले जाना रोकें" - "यह ^1 ज़्यादा वक्त ले रहा है. \n\nआप जारी रख सकते हैं, लेकिन इस जगह पर लाए गए ऐप अटक सकते हैं और डेटा ट्रांसफर में ज़्यादा समय लग सकता है. \n\nबेहतर प्रदर्शन के लिए आप और तेज़ ^1 का इस्तेमाल कर सकते हैं." + "यह ^1 ज़्यादा वक्त ले रहा है. \n\nआप जारी रख सकते हैं, लेकिन इस जगह पर लाए गए ऐप अटक सकते हैं और डेटा ट्रांसफर में ज़्यादा समय लग सकता है. \n\nबेहतर परफ़ॉर्मेंस के लिए आप और तेज़ ^1 का इस्तेमाल कर सकते हैं." "आप इस ^1 को कैसे इस्तेमाल करेंगे?" "टैबलेट में ज़्यादा मेमोरी के लिए इस्तेमाल करें" "सिर्फ़ इस टैबलेट पर मौजूद ऐप्लिकेशन, फ़ाइल और मीडिया के लिए" @@ -1726,7 +1726,7 @@ "आपकी जगह का पता लगाने के लिए, ऐप को आपके फ़ोन पर जीपीएस का इस्तेमाल करने दें" "सहायता पाने वाले GPS का उपयोग करें" "GPS की सहायता के लिए सर्वर का उपयोग करें (नेटवर्क उपयोग कम करने के लिए अनचेक करें)" - "GPS की सहायता के लिए सर्वर का उपयोग करें (GPS निष्‍पादन बेहतर बनाने के लिए अनचेक करें)" + "GPS की सहायता के लिए सर्वर का इस्तेमाल करें (GPS की परफ़ॉर्मेंस को बेहतर बनाने के लिए अनचेक करें)" "जगह और Google सर्च" "सर्च नतीजों और अन्‍य सेवाओं में सुधार के लिए Google को आपकी जगह का इस्तेमाल करने दें" "मेरी जगह को ऐक्सेस करें" @@ -4114,7 +4114,7 @@ "पिछले 3 घंटों में किसी मेमोरी का उपयोग नहीं किया गया" "औसत इस्तेमाल के हिसाब से क्रम से लगाएं" "सबसे ज़्यादा इस्तेमाल के हिसाब से क्रम से लगाएं" - "प्रदर्शन" + "परफ़ॉर्मेंस" "कुल मेमोरी" "औसत उपयोग (%)" "खाली" diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml index 973136db2e2..fd49a9dd2a7 100644 --- a/res/values-hu/strings.xml +++ b/res/values-hu/strings.xml @@ -2283,7 +2283,7 @@ "be" "Ki" "Előnézet" - "Alapértelmezett beállítások" + "Normál beállítások" "Nyelv" "Szöveg mérete" "Felirat stílusa" @@ -3890,7 +3890,7 @@ "Az alkalmazáskitűzés funkcióval az aktuális alkalmazás az előtérben marad egészen addig, amíg meg nem szünteti a kitűzést. Így például biztosíthatja, hogy ha valaki másnak adja át eszközét, az illető csak a kiválasztott alkalmazást használhatja. \n\nA kitűzött alkalmazás megnyithat más alkalmazásokat, és bizonyos személyes adatok hozzáférhetők lehetnek. \n\nHa szeretné biztonságosan megosztani eszközét másokkal, próbáljon inkább vendégprofilt használni. \n\nAz alkalmazásokat a következőképpen tűzheti ki: \n1. Kapcsolja be az alkalmazáskitűzés beállítást. \n2. Nyissa meg az Áttekintés nézetet. \n3. Koppintson a képernyő tetején található alkalmazásikonra, majd a Kitűzés elemre." "Az alkalmazás kitűzését követően: \n\n• Bizonyos személyes adatok hozzáférhetők lehetnek \n (például a névjegyek és az e-mailek tartalma). \n• A kitűzött alkalmazás más alkalmazásokat is megnyithat. \n\nCsak olyan személyekkel használja az alkalmazáskitűzést, akikben megbízik." "Feloldási minta kérése a rögzítés feloldásához" - "PIN-kód kérése a feloldáshoz" + "PIN-kód kérése a kitűzés megszüntetéséhez" "Jelszó kérése a rögzítés feloldásához" "Eszköz zárolása a rögzítés feloldásakor" "SIM törlésének megerősítése" diff --git a/res/values-hy/strings.xml b/res/values-hy/strings.xml index 87f4ab5334c..d7203c9b0f7 100644 --- a/res/values-hy/strings.xml +++ b/res/values-hy/strings.xml @@ -628,27 +628,27 @@ "Պետք է պարունակի առնվազն մեկ թվանշան" "Պետք է պարունակի առնվազն մեկ նշան" - Must contain at least %d letters + Պետք է պարունակի առնվազն %d տառ Պետք է պարունակի առնվազն %d տառ - Must contain at least %d lowercase letters + Պետք է պարունակի առնվազն %d փոքրատառ Պետք է պարունակի առնվազն %d փոքրատառ - Must contain at least %d uppercase letters + Պետք է պարունակի առնվազն %d մեծատառ Պետք է պարունակի առնվազն %d մեծատառ - Must contain at least %d numerical digits + Պետք է պարունակի առնվազն %d թվանշան Պետք է պարունակի առնվազն %d թվանշան - Must contain at least %d special symbols + Պետք է պարունակի առնվազն %d հատուկ նշան Պետք է պարունակի առնվազն %d հատուկ նշան - Must contain at least %d non-letter characters + Պետք է պարունակի առնվազն %d ոչ-տառային գրանշան Պետք է պարունակի առնվազն %d ոչ-տառային գրանշան @@ -2343,7 +2343,7 @@ Միացված է %1$d տպման ծառայություն - %1$d print jobs + %1$d տպելու առաջադրանք %1$d տպելու առաջադրանք "Տպման ծառայություններ" @@ -3187,7 +3187,7 @@ "SIM քարտի ընտրություն" "Կարգավորումներ" - Show %d hidden items + Ցույց տալ %d թաքնված տարր Ցույց տալ %d թաքնված տարրեր "Ցանց և ինտերնետ" @@ -3684,7 +3684,7 @@ Անջատված է %d հավելվածի համար - %d categories deleted + Ջնջվել է %d կատեգորիա Ջնջվել է %d կատեգորիա "Միացված է" @@ -3864,11 +3864,11 @@ "Հաջորդ օրը %s-ին" "Անորոշ ժամանակով ակտիվացնել «Միայն զարթուցիչը» ռեժիմը" - Change to alarms only for %1$d minutes (until %2$s) + Ակտիվացնել «Միայն զարթուցիչը» ռեժիմը %1$d րոպեով (մինչև %2$s) Ակտիվացնել «Միայն զարթուցիչը» ռեժիմը %1$d րոպեով (մինչև %2$s) - Change to alarms only for %1$d hours until %2$s + Ակտիվացնել «Միայն զարթուցիչը» ռեժիմը %1$d ժամով մինչև %2$s Ակտիվացնել «Միայն զարթուցիչը» ռեժիմը %1$d ժամով մինչև %2$s "Ակտիվացնել «Միայն զարթուցիչը» ռեժիմը մինչև %1$s-ը" @@ -3957,7 +3957,7 @@ Տրամադրվել է %d թույլտվություն - %d of %d permissions granted + Տրվել է %d-ից %d թույլտվություն Տրվել է %d-ից %d թույլտվություն @@ -3990,7 +3990,7 @@ "Բացել %s և այլ URL-ներ" "Ոչ մի հավելված չի կարող աջակցվող հղումներ բացել" - %d apps opening supported links + %d հավելված կարող է աջակցվող հղումներ բացել %d հավելված կարող է աջակցվող հղումներ բացել "Թույլ տալ հավելվածին բացել աջակցվող հղումները" @@ -4039,11 +4039,11 @@ "Սարքի ամբողջ օգտագործումը" "Ցույց տալ հավելվածների օգտագործումը" - %2$d apps behaving abnormally + %2$d հավելված սխալ է աշխատում %2$d հավելված սխալ է աշխատում - Apps draining battery + Մարտկոցի լիցքն արագ սպառող հավելվածներ Մարտկոցի լիցքն արագ սպառող հավելվածներ "Առանց օպտիմալացման" @@ -4120,7 +4120,7 @@ "Ազատ է" "Հավելվածների օգտագործած հիշողությունը" - %1$d apps used memory in the last %2$s + Վերջին %2$sում հիշողությունն օգտագործել է %1$d հավելված Վերջին %2$sում հիշողությունն օգտագործել է %1$d հավելված "Հաճախականություն" @@ -4194,7 +4194,7 @@ "Օգտագործված տվյալներ՝ %1$s" "^1-ը փոխանցվել է Wi-Fi-ի միջոցով" - Off for %d apps + Անջատված է %d հավելվածի համար Անջատված է %d հավելվածի համար "Միացված է բոլոր հավելվածների համար" @@ -4541,7 +4541,7 @@ "Տեղադրված հավելվածներ" "Հավելվածների թիվը մոտավոր է: Հնարավոր է, որ այն չի ներառում Play Խանութից դուրս տեղադրված հավելվածները:" - Minimum %d apps + Նվազագույնը %d հավելված Նվազագույնը %d հավելված "Տեղորոշման թույլտվությունները" @@ -4549,7 +4549,7 @@ "Տեսախցիկի թույլտվությունները" "Կանխադրված հավելվածները" - %d apps + %d հավելված %d հավելված "Կանխադրված ստեղնաշար" @@ -4562,7 +4562,7 @@ "Վստահելի ՀԿ հավաստագրեր ձեր անձնական պրոֆիլում" "Վստահելի ՀԿ հավաստագրեր ձեր աշխատանքային պրոֆիլում" - Minimum %d CA certificates + Նվազագույնը %d ՎԿ հավաստագիր Նվազագույնը %d ՎԿ հավաստագիր "Ադմինիստրատորը կարող է կողպել սարքը և վերակայել գաղտնաբառը" @@ -4570,7 +4570,7 @@ "Գաղտնաբառ մուտքագրելու անհաջող փորձերի քանակը, որից հետո սարքի բոլոր տվյալները կջնջվեն" "Գաղտնաբառ մուտքագրելու անհաջող փորձերի քանակը, որից հետո աշխատանքային պրոֆիլի տվյալները կջնջվեն" - %d attempts + %d փորձ %d փորձ "Այս սարքի կառավարիչը ձեր կազմակերպությունն է։" @@ -4578,18 +4578,18 @@ " " "Իմանալ ավելին" - Camera apps + Տեսախցիկի հավելված Տեսախցիկի հավելվածներ "Օրացույցի հավելված" "Կոնտակտների հավելված" - Email client apps + Էլփոստի սպասառու հավելված Էլփոստի սպասառու հավելվածներ "Քարտեզի հավելված" - Phone apps + Հեռախոսի հավելված Հեռախոսի հավելվածներ "%1$s, %2$s" diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml index 2fa284c0950..f00ec88e599 100644 --- a/res/values-in/strings.xml +++ b/res/values-in/strings.xml @@ -3257,7 +3257,7 @@ "terang, RGB, SRGB, warna, alami, standar" "warna, suhu, D65, D73 putih, kuning, biru, hangat, sejuk" "geser untuk membuka kunci, sandi, pola, PIN" - "pin ke layar" + "sematkan ke layar" "tantangan kerja, kerja, profil" "profil kerja, profil yang dikelola, menyatukan, penyatuan, kerja, profil" "gestur" @@ -3885,14 +3885,14 @@ "Masukkan PIN admin" "Aktif" "Nonaktif" - "Pemasangan pin aplikasi" - "Pemasangan pin aplikasi memungkinkan Anda terus menampilkan aplikasi saat ini hingga pinnya dilepas. Fitur ini dapat digunakan, misalnya, untuk mengizinkan teman tepercaya memainkan game tertentu. \n\nSaat sebuah aplikasi dipasangi pin, aplikasi itu dapat membuka aplikasi lain dan data pribadi dapat diakses. \n\nUntuk menggunakan pemasangan pin aplikasi: \n1. Aktifkan pemasangan pin aplikasi \n2. Buka Ringkasan \n3. Ketuk ikon aplikasi di bagian atas layar, lalu ketuk Pasang pin" - "Pemasangan pin aplikasi memungkinkan Anda terus menampilkan aplikasi saat ini hingga pinnya dilepas. Fitur ini dapat digunakan, misalnya, untuk mengizinkan teman tepercaya memainkan game tertentu. \n\nSaat sebuah aplikasi dipasangi pin, aplikasi itu dapat membuka aplikasi lain dan data pribadi dapat diakses. \n\nJika Anda ingin membagikan perangkat secara aman ke seseorang, coba gunakan pengguna tamu. \n\nUntuk menggunakan pemasangan pin aplikasi: \n1. Aktifkan pemasangan pin aplikasi \n2. Buka Ringkasan \n3. Ketuk ikon aplikasi di bagian atas layar, lalu ketuk Pasang pin" + "Penyematan aplikasi" + "Penyematan aplikasi memungkinkan Anda terus menampilkan aplikasi saat ini hingga sematannya dilepas. Fitur ini dapat digunakan, misalnya, untuk mengizinkan teman tepercaya memainkan game tertentu. \n\nSaat sebuah aplikasi disematkan, aplikasi itu dapat membuka aplikasi lain dan data pribadi dapat diakses. \n\nUntuk menggunakan penyematan aplikasi: \n1. Aktifkan penyematan aplikasi \n2. Buka Ringkasan \n3. Ketuk ikon aplikasi di bagian atas layar, lalu ketuk Sematkan" + "Penyematan aplikasi memungkinkan Anda terus menampilkan aplikasi saat ini hingga sematannya dilepas. Fitur ini dapat digunakan, misalnya, untuk mengizinkan teman tepercaya memainkan game tertentu. \n\nSaat sebuah aplikasi disematkan, aplikasi itu dapat membuka aplikasi lain dan data pribadi dapat diakses. \n\nJika Anda ingin membagikan perangkat secara aman ke seseorang, coba gunakan pengguna tamu. \n\nUntuk menggunakan penyematan aplikasi: \n1. Aktifkan penyematan aplikasi \n2. Buka Ringkasan \n3. Ketuk ikon aplikasi di bagian atas layar, lalu ketuk Sematkan" "Saat aplikasi disematkan: \n\n•  Data pribadi dapat diakses \n (seperti kontak dan konten email) \n•  Aplikasi yang disematkan dapat membuka aplikasi lain \n\nGunakan penyematan aplikasi hanya untuk orang yang Anda percayai." - "Minta pola pembuka kunci sebelum melepas pin" - "Minta PIN sebelum lepas pin" - "Minta sandi sebelum melepas pin" - "Kunci perangkat saat melepas pin" + "Minta pola pembuka kunci sebelum melepas sematan" + "Minta PIN sebelum melepas sematan" + "Minta sandi sebelum melepas sematan" + "Kunci perangkat saat melepas sematan" "Konfirmasi penghapusan SIM" "Verifikasi bahwa ini adalah Anda sebelum menghapus SIM yang didownload" "Profil kerja ini dikelola oleh:" diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml index 95940cf9722..8a3a85c9dd7 100644 --- a/res/values-iw/strings.xml +++ b/res/values-iw/strings.xml @@ -24,10 +24,10 @@ "הפעלה" "לא ידוע" - נותרו לך עוד %1$d צעדים כדי להיות מפתח. - נותרו לך עוד %1$d צעדים כדי להיות מפתח. - נותרו לך עוד %1$d צעדים כדי להיות מפתח. - נותר לך עוד צעד %1$d כדי להיות מפתח. + נותרו לך עוד %1$d שלבים כדי להיות מפתח. + נותרו לך עוד %1$d שלבים כדי להיות מפתח. + נותרו לך עוד %1$d שלבים כדי להיות מפתח. + נותר לך עוד שלב %1$d כדי להיות מפתח. "הוגדרת כמפתח!" "אין צורך, כבר הוגדרת כמפתח/ת." @@ -47,7 +47,7 @@ "לא ידוע" "‏ביטול טעינה של אחסון USB" "‏ביטול טעינה של כרטיס SD" - "‏מחק אחסון USB" + "‏מחיקת אחסון USB" "‏מחיקת כרטיס SD" "תצוגה מקדימה" "תצוגה מקדימה, דף %1$d מתוך %2$d" @@ -134,7 +134,7 @@ "בקשת גישה להודעות" "‏%1$s רוצה לגשת להודעות שלך. להעניק גישה ל-%2$s?" "‏בקשת גישה אל כרטיס SIM" - "‏%1$s רוצה לגשת אל כרטיס ה-SIM. הענקת גישה אל כרטיס ה-SIM תשבית את קישוריות הנתונים במכשיר לכל משך החיבור. הענק גישה ל-%2$s?" + "‏%1$s רוצה לגשת אל כרטיס ה-SIM. הענקת גישה אל כרטיס ה-SIM תשבית את קישוריות הנתונים במכשיר לכל משך החיבור. להענקת גישה ל-%2$s?" "משתמשים אחרים יכולים לראות את המכשיר שלך בתור \'^1\'" "‏צריך להפעיל Bluetooth כדי להתחבר למכשירים אחרים." "המכשירים שלך" @@ -169,7 +169,7 @@ "‏שרת Proxy" "ניקוי" "‏יציאת שרת Proxy" - "‏עקוף שרת Proxy עבור" + "‏עקיפת שרת Proxy עבור" "שחזור ברירות מחדל" "סיום" "‏שם מארח של שרת Proxy" @@ -206,7 +206,7 @@ "דילוג" "הבא" "שפות" - "הסר" + "הסרה" "הוספת שפה" האם להסיר את השפות שנבחרו? @@ -242,8 +242,8 @@ "מצב טיסה" "אלחוטי ורשתות" "‏ניהול Wi-Fi, ‏Bluetooth, מצב טיסה, רשתות סלולריות ורשתות VPN" - "התר שימוש בנתונים ברשת סלולרית" - "אפשר שימוש בנתונים בעת נדידה" + "התרת שימוש בנתונים ברשת סלולרית" + "לאפשר שימוש בנתונים בעת נדידה" "נדידה" "חיבור לשירותי נתונים בנדידה" "חיבור לשירותי נתונים בנדידה" @@ -389,7 +389,7 @@ "שימוש בשחרור נעילה על ידי זיהוי פנים לצורך ביטול הנעילה של הטלפון" "טביעת אצבע" "ניהול טביעות אצבע" - "השתמש בטביעות אצבע ל-" + "שימוש בטביעות אצבע ל-" "הוספת טביעת אצבע" "נעילת מסך" @@ -450,7 +450,7 @@ "אופס. זה לא החיישן הנכון" "יש לגעת בחיישן שבגב הטלפון באצבע המורה." "ההרשמה לא הושלמה" - "חלף הזמן הקצוב להרשמה באמצעות טביעת אצבע. נסה שוב." + "חלף הזמן הקצוב להרשמה באמצעות טביעת אצבע. יש לנסות שוב." "ההרשמה באמצעות טביעת אצבע נכשלה. כדאי לנסות שוב או להשתמש באצבע אחרת." "עוד אחת" "הבא" @@ -477,15 +477,15 @@ "כדאי לטעון את הסוללה ולנסות שוב." "יש לחבר את המטען ולנסות שוב." "אין קוד גישה או סיסמה לנעילת מסך" - "עליך להגדיר קוד גישה או סיסמה לנעילת מסך כדי שתוכל להתחיל בהצפנה." + "עליך להגדיר קוד גישה או סיסמה לנעילת מסך כדי שאפשר יהיה להתחיל בהצפנה." "האם להצפין?" "פעולת ההצפנה אינה ניתנת לביטול, ואם היא תופסק, יאבדו נתונים. ההצפנה אורכת שעה לפחות, ובמהלך זמן זה הטאבלט יופעל מחדש כמה פעמים." "פעולת ההצפנה אינה ניתנת לביטול, ואם תפסיק אותה תאבד נתונים. ההצפנה אורכת שעה לפחות, ובמהלך זמן זה הטלפון יופעל מחדש כמה פעמים." "מצפין" "יש להמתין בזמן הצפנת הטאבלט. ^1 הושלמו." - "המתן בזמן הצפנת הטלפון. ^1 הושלמו." + "יש להמתין בזמן הצפנת הטלפון. ^1 הושלמו." "יש להמתין עד להשלמת ההצפנה של הטאבלט. הזמן הנותר: ^1" - "המתן עד להשלמת ההצפנה של הטלפון. זמן נותר: ^1" + "יש להמתין עד להשלמת ההצפנה של הטלפון. זמן נותר: ^1" "כדי לבטל את נעילת הטאבלט, יש לכבות את הטאבלט ולהפעיל אותו שוב." "כדי לבטל את נעילת הטלפון, כבה את הטלפון והפעל אותו שוב." "אזהרה: המכשיר שלך יימחק לאחר ^1 ניסיונות כושלים נוספים לביטול הנעילה!" @@ -507,14 +507,14 @@ "בחירת נעילת מסך" "בחירת מנעול עבודה" - "הגן על הטאבלט שלך" + "הגנה על הטאבלט שלך" "הגנה על המכשיר" - "הגן על הטלפון שלך" + "הגנה על הטלפון שלך" "לשיפור האבטחה, מומלץ להגדיר נעילת מסך לגיבוי" "אפשר להפעיל את תכונות הגנת המכשיר כדי למנוע מאחרים להשתמש בטאבלט הזה ללא אישורך. עליך לבחור בנעילת המסך שבה ברצונך להשתמש." "אפשר להפעיל את תכונות הגנת המכשיר כדי למנוע מאחרים להשתמש במכשיר הזה ללא אישורך. עליך לבחור בנעילת המסך שבה ברצונך להשתמש." "תכונות הגנת המכשיר מאפשרות למנוע מאחרים להשתמש בטלפון הזה ללא אישורך. עליך לבחור בנעילת המסך שבה ברצונך להשתמש." - "בחר את שיטת הגיבוי לנעילת המסך" + "בחירת שיטת הגיבוי לנעילת המסך" "יש לבחור את שיטת הגיבוי לנעילת המסך" "אפשרויות לנעילת המסך" "אפשרויות לנעילת המסך" @@ -541,7 +541,7 @@ "טביעת אצבע + קוד גישה" "טביעת אצבע + סיסמה" "המשך ללא טביעת אצבע" - "תוכל לבטל את נעילת הטלפון באמצעות טביעת אצבע. מטעמי אבטחה, אפשרות זו מחייבת נעילת מסך לגיבוי." + "אפשר לבטל את נעילת הטלפון באמצעות טביעת אצבע. מטעמי אבטחה, אפשרות זו מחייבת נעילת מסך לגיבוי." "שחרור נעילה על ידי זיהוי פנים וקו ביטול נעילה" "שחרור נעילה על ידי זיהוי פנים וקוד אימות" "שחרור נעילה על ידי זיהוי פנים וסיסמה" @@ -599,10 +599,10 @@ "%1$s ממליצה על נעילת מסך חדשה" "יש לנסות שוב. ניסיון %1$d מתוך %2$d." "הנתונים שלך יימחקו" - "אם תזין קו ביטול נעילה שגוי בניסיון הבא, הנתונים במכשיר יימחקו" - "אם תזין קוד גישה שגוי בניסיון הבא, הנתונים במכשיר יימחקו" - "אם תזין סיסמה שגויה בניסיון הבא, הנתונים במכשיר יימחקו" - "אם תזין קו ביטול נעילה שגוי בניסיון הבא, המשתמש הזה יימחק" + "אם יוזן קו ביטול נעילה שגוי בניסיון הבא, הנתונים במכשיר יימחקו" + "אם יוזן קוד גישה שגוי בניסיון הבא, הנתונים במכשיר יימחקו" + "אם תוזן סיסמה שגויה בניסיון הבא, הנתונים במכשיר יימחקו" + "אם יוזן קו ביטול נעילה שגוי בניסיון הבא, המשתמש הזה יימחק" "אם יוזן קוד גישה שגוי בניסיון הבא, המשתמש הזה יימחק" "אם תוזן סיסמה שגויה בניסיון הבא, המשתמש הזה יימחק" "בעקבות הזנה נוספת של קו ביטול נעילה שגוי בניסיון הבא, פרופיל העבודה והנתונים המשויכים אליו יימחקו" @@ -865,7 +865,7 @@ "יש בעיה בשינוי ההגדרה" "שיפור היעילות" "‏אופטימיזציה ל-Wi-Fi" - "‏צמצם את השימוש בסוללה כאשר Wi-Fi פועל" + "‏צמצום השימוש בסוללה כאשר Wi-Fi פועל" "‏הגבלת השימוש של Wi‑Fi בסוללה" "‏יש לעבור לשימוש בחבילת הגלישה אם ה-Wi‑Fi יתנתק מהאינטרנט." "מעבר אוטומטי לחבילת גלישה" @@ -921,13 +921,13 @@ "זהות אנונימית" "סיסמה" "הצגת סיסמה" - "‏בחר תדר AP" + "‏בחירת תדר AP" "אוטומטי" "‏תדר ‎2.4 GHz" - "‏תדר ‎5.0 GHz" + "‏תדר ‎5.0GHz" "‏עדיפות לתדר 5.0 GHz" "‎2.4 GHz" - "‎5.0 GHz" + "‎5.0GHz" "‏יש לבחור תדר אחד לכל הפחות לנקודת Wi‑Fi לשיתוף אינטרנט:" "‏הגדרות IP" "פרטיות" @@ -989,9 +989,9 @@ "‏לשיפור של דיוק המיקום ולמטרות אחרות, אפליקציה לא ידועה רוצה להפעיל את סריקת הרשתות, גם כאשר ה-Wi-Fi כבוי.\n\nהאם להתיר זאת עבור כל האפליקציות שרוצות לסרוק?" "כדי לכבות, עוברים אל \'מתקדם\' באפשרויות הנוספות." "כן, זה בסדר" - "דחה" + "דחייה" "האם להיכנס כדי להתחבר?" - "%1$s דורש כניסה באינטרנט לפני חיבור לרשת." + "%1$s מחייבת כניסה באינטרנט לפני חיבור לרשת." "התחברות" "אין לרשת הזו חיבור לאינטרנט. האם להישאר מחובר?" "ייתכן שחלק מהאפליקציות והשירותים לא יפעלו עקב קישוריות מוגבלת. להשתמש בכל זאת?" @@ -1050,9 +1050,9 @@ "‏הגדרות Wi-Fi מתקדמות אינן זמינות למשתמש הזה" "שמירה" "ביטול" - "‏הקלד כתובת IP חוקית." - "הקלד כתובת שער חוקית." - "‏הקלד כתובת DNS חוקית." + "‏יש להקליד כתובת IP חוקית." + "יש להקליד כתובת שער חוקית." + "‏יש להקליד כתובת DNS חוקית." "יש להקליד אורך לקידומת רשת בין 0 ו-32." "DNS 1" "DNS 2" @@ -1062,7 +1062,7 @@ "מידע מהמכשיר" "אני רוצה לזכור את החיבור הזה" "חיפוש מכשירים" - "מחפש…" + "החיפוש מתבצע…" "שינוי שם המכשיר" "‏מכשירי p2p" "קבוצות שמורות בזיכרון" @@ -1144,7 +1144,7 @@ "תצוגה" "צלילים" "עוצמות קול" - "אפקטים מוסיקליים" + "אפקטים מוזיקליים" "עוצמת קול של צלצול והתראות" "רטט במצב שקט" "צליל ברירת מחדל להתראה" @@ -1154,7 +1154,7 @@ "לא תומך בפרופילים של עבודה" "צליל ברירת מחדל להתראה" "מדיה" - "קביעת עוצמת קול למוסיקה ולסרטוני וידאו" + "קביעת עוצמת קול למוזיקה ולסרטונים" "התראה" "הגדרות אודיו של העגינה המצורפת" "צלילי מגע של משטח חיוג" @@ -1168,7 +1168,7 @@ "השתקת רינגטונים והתראות" "השתקת מוזיקה וסוגי מדיה אחרים" "השתקת התראות" - "השתק התראות קוליות" + "השתקת התראות קוליות" "עגינה" "הגדרות עגינה" "אודיו" @@ -1400,7 +1400,7 @@ "‏מספר טלפון ב-SIM" "MIN" "MSID" - "‏גירסת PRL" + "‏גרסת PRL" "‏MEID (חריץ SIM ‏%1$d)" "‏חיפוש נקודות Wi‑Fi פועל וגם סריקת Bluetooth פועלת" "‏חיפוש נקודות Wi-Fi פועל, סריקת Bluetooth כבויה" @@ -1429,7 +1429,7 @@ "זמין" "זמין (לקריאה בלבד)" "שטח כולל" - "מחשב…" + "החישוב מתבצע…" "אפליקציות ונתוני אפליקציות" "מדיה" "הורדות" @@ -1464,16 +1464,16 @@ "‏לא ניתן לבטל את טעינת כרטיס ה-SD. אפשר לנסות שוב מאוחר יותר." "‏הטעינה של אחסון USB תבוטל." "‏הטעינה של כרטיס SD תבוטל." - "מבטל טעינה" + "ביטול הטעינה מתבצע" "ביטול טעינה מתבצע" "שטח האחסון הולך ואוזל" "ייתכן שפונקציות מסוימות של המערכת, כמו סנכרון, לא יפעלו כראוי. אפשר לפנות מקום על ידי מחיקה או ביטול הצמדה של פריטים, כגון אפליקציות או תוכן מדיה." "שינוי שם" - "טען" + "טעינה" "הוצא" "פירמוט" "פירמוט כאחסון חיצוני" - "פרמט כאחסון פנימי" + "פרמוט כאחסון פנימי" "העברת נתונים" "אפשר לשכוח" "הגדרה" @@ -1508,7 +1508,7 @@ "המכשיר הזה אינו תומך ב-^1 הזה. \n\nראשית עליך להגדיר את ה-^1 הזה כדי להשתמש בו." "‏לאחר קביעת פורמט יתאפשר להשתמש ב-^1 זה במכשירים אחרים. \n\nכל הנתונים ב-^1 יימחקו. כדאי לבצע גיבוי לפני כן. \n\n""גיבוי תמונות וסוגי מדיה אחרים"" \nהעברת קובצי המדיה לאחסון חלופי במכשיר, או למחשב באמצעות כבל USB.‏ \n\n""גיבוי אפליקציות"" \nתוסר ההתקנה של כל האפליקציות המאוחסנות ב-^1 זה והנתונים שלהן יימחקו. כדי להשאיר את האפליקציות האלה, יש להעביר אותן לאחסון חלופי במכשיר זה." "כשמוציאים את ה-^1 הזה, האפליקציות המאוחסנות בו מפסיקות לפעול, וקובצי המדיה המאוחסנים בו לא זמינים עד שמכניסים אותו שוב."\n\n"ה-^1 הזה הוגדר באמצעות פרמוט לפעול במכשיר הזה בלבד. הוא לא יפעל במכשירים אחרים." - "כדי להשתמש באפליקציות, בתמונות או בנתונים המאוחסנים ב-^1 הזה, הכנס אותו שוב. \n\nלחלופין, תוכל לבחור לשכוח את האחסון הזה אם ההתקן אינו זמין. \n\nאם תבחר לשכוח, כל הנתונים שבהתקן יאבדו לצמיתות. \n\nתוכל להתקין מחדש את האפליקציות מאוחר יותר, אך הנתונים שלהן שהיו מאוחסנים בהתקן הזה יאבדו." + "כדי להשתמש באפליקציות, בתמונות או בנתונים המאוחסנים ב-^1 הזה, יש להכניס אותו שוב. \n\nלחלופין, אפשר לבחור לשכוח את האחסון הזה אם ההתקן אינו זמין. \n\nאם בוחרים לשכוח, כל הנתונים שבהתקן יאבדו לצמיתות. \n\nאפשר להתקין מחדש את האפליקציות מאוחר יותר, אך הנתונים שלהן שהיו מאוחסנים בהתקן הזה יאבדו." "האם לשכוח את ^1?" "כל האפליקציות, התמונות והנתונים המאוחסנים ב-^1 הזה יימחקו לתמיד." "אפליקציות" @@ -1518,7 +1518,7 @@ "נתונים בקובץ שמור" "אחר" "מערכת" - "עיין ב-^1" + "עיון ב-^1" "‏קבצים אחרים כוללים, בין השאר, קבצים משותפים שנשמרו על-ידי אפליקציות, קבצים שהורדו מהאינטרנט או באמצעות Bluetooth, קובצי Android וכו\'. \n\nכדי לראות את התוכן הגלוי ב-^1, צריך להקיש על \'גילוי\'." "‏המערכת כוללת קבצים המשמשים להרצת גרסת Android %s" "ייתכן שנשמרו תמונות, מוזיקה, אפליקציות או נתונים אחרים על ידי ^1, בצריכת אחסון כוללת של ^2. \n\nכדי לעיין בפרטים, יש לעבור אל ^1." @@ -1531,18 +1531,18 @@ "יש לפרמט את ^1 כדי שיהיה מאובטח. \n\nלאחר הפרמוט, ^1 זה יפעל רק במכשיר הזה. \n\n""הפרמוט מוחק את כל הנתונים שמאוחסנים כרגע ב-^1."" כדי למנוע את אובדן הנתונים, מומלץ לגבות אותם." "פירמוט כאחסון נייד" "יש לפרמט את ^1 כדי לבצע את הפעולה הזו. \n\n""פרמוט מוחק את כל הנתונים המאוחסנים ב^1."" מומלץ לגבות את הנתונים כדי לא לאבד אותם." - "מחק ופרמט" - "מפרמט את ^1…" + "מחיקה ופרמוט" + "פרמוט ^1 מתבצע…" "אין להסיר את ^1 במהלך הפרמוט." "העברת נתונים לאחסון חדש" - "תוכל להעביר את התמונות, הקבצים וחלק מהאפליקציות אל ה-^1 החדש הזה. \n\nההעברה אורכת כ-^2 ותפנה ^3 מהאחסון הפנימי. אפליקציות מסוימות לא יעבדו במהלך ההעברה." + "אפשר להעביר את התמונות, הקבצים וחלק מהאפליקציות אל ה-^1 החדש הזה. \n\nההעברה אורכת כ-^2 ותפנה ^3 מהאחסון הפנימי. אפליקציות מסוימות לא יעבדו במהלך ההעברה." "ביצוע העברה עכשיו" "העברה במועד מאוחר יותר" "העברת נתונים כעת" "ההעברה אורכת בערך ^1. היא תשחרר ^2 ב^3." "העברה" "העברת נתונים..." - "במהלך ההעברה: \n• אל תסיר ^1. \n• אפליקציות מסוימות לא יעבדו באופן תקין. \n• השאר את המכשיר בטעינה." + "במהלך ההעברה: \n• אין להסיר את ^1. \n• אפליקציות מסוימות לא יעבדו באופן תקין. \n• יש להשאיר את המכשיר בטעינה." "^1 שלך מוכן לשימוש" "^1 מוכן לשימוש עם תמונות וסוגי מדיה אחרים." "ה-^1 החדש עובד. \n\nכדי להעביר תמונות, קבצים ונתוני אפליקציות למכשיר, יש לעבור אל \'הגדרות\' ו\'אחסון\'." @@ -1550,7 +1550,7 @@ "העברת ^1 והנתונים שבה אל ^2 אורכת מספר דקות בלבד. אי אפשר להשתמש באפליקציה לפני השלמת ההעברה. \n\nמומלץ שלא להסיר את ה-^2 במהלך ההעברה." "כדי להעביר נתונים יש לבטל את נעילת המשתמש ^1." "העברת ^1…" - "אל תסיר את ה-^1 במהלך ההעברה. \n\nהאפליקציה ^2 לא תהיה זמינה במכשיר לפני השלמת ההעברה." + "אין להסיר את ה-^1 במהלך ההעברה. \n\nהאפליקציה ^2 לא תהיה זמינה במכשיר לפני השלמת ההעברה." "ביטול העברה" "נראה שפעולת ה-^1 הזה איטית. \n\nתוכל להמשיך, אבל אפליקציות שהועברו אל המיקום הזה עשויות לפעול באופן מקוטע והעברות הנתונים עשויות לארוך זמן רב. \n\nמומלץ להשתמש ב-^1 מהיר יותר לשיפור הביצועים." "למה ישמש ^1?" @@ -1736,7 +1736,7 @@ "‏מפעיל SIM לא ידוע" "ל-%1$s אין אתר ידוע לניהול תצורה" "‏יש להכניס כרטיס SIM ולאתחל" - "התחבר לאינטרנט" + "יש להתחבר לאינטרנט" "בקשות של מיקומים אחרונים" "הצגת הכול" "שירותי מיקום" @@ -1763,11 +1763,11 @@ "‏אפליקציות ושירותים יוכלו לסרוק מכשירים בקרבת מקום בכל עת, גם כאשר ה-Bluetooth כבוי. ניתן להשתמש בכך, למשל, כדי לשפר תכונות ושירותים מבוססי מיקום." "שירותי מיקום לעבודה" "‏מיקום רשת Wi-Fi ורשת סלולרית" - "‏אפשר לאפליקציות להשתמש בשירות המיקום של Google כדי להעריך את מיקומך מהר יותר. נתוני מיקום אנונימיים ייאספו ויישלחו אל Google." + "‏מאפשרים לאפליקציות להשתמש בשירות המיקום של Google כדי להעריך את מיקומך מהר יותר. נתוני מיקום אנונימיים ייאספו ויישלחו אל Google." "‏המיקום נקבע באמצעות Wi-Fi" "‏לווייני GPS" "‏אני רוצה לאפשר לאפליקציות להשתמש ב-GPS בטאבלט כדי לאתר את המיקום שלי" - "‏אפשר לאפליקציות להשתמש ב-GPS בטלפון שלך כדי לאתר את מיקומך" + "‏מאפשרים לאפליקציות להשתמש ב-GPS בטלפון שלך כדי לאתר את מיקומך" "‏שימוש ב-Assisted GPS" "‏שרת מסייע ל-GPS (יש להסיר את הסימון כדי לצמצם את השימוש ברשת)" "‏שרת מסייע ל-GPS (יש להסיר את הסימון כדי לשפר את ביצועי ה-GPS)" @@ -1830,7 +1830,7 @@ "שכחת את קוד האימות?" "יש להשתמש בקו ביטול הנעילה של המכשיר כדי להמשיך" "יש להזין את קוד הגישה של המכשיר כדי להמשיך" - "הזן את סיסמת המכשיר כדי להמשיך" + "יש להזין את סיסמת המכשיר כדי להמשיך" "אפשר להשתמש בקו ביטול הנעילה בעבודה כדי להמשיך" "יש להזין את קוד הגישה בעבודה כדי להמשיך" "יש להזין את הסיסמה בעבודה כדי להמשיך" @@ -1939,7 +1939,7 @@ "‏כרטיס SD" "הסרת התקנה" "להסרת התקנה עבור כל המשתמשים" - "התקן" + "התקנה" "השבתה" "הפעלה" "פינוי שטח אחסון" @@ -1948,7 +1948,7 @@ "בחרת לאפשר לאפליקציה ליצור ווידג\'טים ולגשת לנתונים שלהם." "לא הוגדרו ברירות מחדל." "ניקוי ברירות מחדל" - "ייתכן שאפליקציה זו אינה מיועדת למסך שלך. תוכל לשלוט באופן שבה היא מותאמת למסך שלך כאן." + "ייתכן שאפליקציה זו אינה מיועדת למסך שלך. אפשר לשלוט באופן שבה היא מותאמת למסך שלך כאן." "אני רוצה לאשר בעת הפעלה" "שינוי קנה המידה של אפליקציה" "לא ידוע" @@ -1986,7 +1986,7 @@ "לא ניתן לפנות שטח אחסון לאפליקציה." "%1$s וגם %2$s" "%1$s, %2$s" - "מחשב..." + "החישוב מתבצע…" "לא ניתן לחשב את גודל החבילה." "גרסה %1$s" "העברה" @@ -2045,7 +2045,7 @@ "לא פעיל" "שירותים" "תהליכים" - "עצור" + "עצירה" "הגדרות" "שירות זה הופעל על ידי האפליקציה שלו. הפסקת הפעילות עלולה לגרום לכשל באפליקציה." "לא ניתן להפסיק אפליקציה זו באופן בטוח. אם היא תופסק, ייתכן שיאבד חלק מהעבודה הנוכחית שלך." @@ -2056,7 +2056,7 @@ "הספק %1$s נמצא בשימוש." "להפסיק שירות מערכת?" "אם תפסיק שירות זה, תכונות מסוימות של הטאבלט עלולות להפסיק לפעול כהלכה עד לכיבוי המכשיר והפעלתו מחדש." - "אם תפסיק שירות זה, תכונות מסוימות של הטלפון עלולות להפסיק לפעול כהלכה עד לכיבוי המכשיר והפעלתו מחדש." + "אם מפסיקים שירות זה, תכונות מסוימות של הטלפון עלולות להפסיק לפעול כהלכה עד לכיבוי המכשיר והפעלתו מחדש." "שפות, קלט ותנועות" @@ -2115,7 +2115,7 @@ "מילה:" "קיצור דרך:" "שפה:" - "הקלד מילה" + "יש להקליד מילה" "קיצור אופציונלי" "עריכת מילה" "עריכה" @@ -2373,7 +2373,7 @@ "ברצונך להעניק לשירות %1$s שליטה מלאה במכשיר?" "‏%1$s צריך אפשרות לבצע:" "יש אפליקציה שמסתירה את בקשת ההרשאה, ולכן להגדרות אין אפשרות לאמת את התשובה." - "אם תפעיל את %1$s, המכשיר לא ישתמש בנעילת המסך כדי להגביר את הצפנת הנתונים." + "אם מפעילים את %1$s, המכשיר לא ישתמש בנעילת המסך כדי לשפר את הצפנת הנתונים." "מפני שהפעלת שירות נגישות, המכשיר לא ישתמש בנעילת המסך כדי להגביר את הצפנת הנתונים." "הפעלת %1$s משפיעה על הצפנת הנתונים, לכן עליך לאשר את קו ביטול הנעילה שלך." "מאחר שהפעלת %1$s משפיעה על הצפנת הנתונים, עליך לאשר את קוד הגישה שלך." @@ -2418,7 +2418,7 @@ "הוספת שירות" "הוספת מדפסת" "חיפוש" - "מחפש מדפסות" + "חיפוש מדפסות מתבצע" "השירות הושבת" "עבודות הדפסה" "עבודת הדפסה" @@ -2751,7 +2751,7 @@ "התקנת אישורים מאמצעי אחסון" "‏התקנת אישורים מכרטיס SD" "ניקוי פרטי כניסה" - "הסר את כל האישורים" + "הסרת כל האישורים" "פרטי כניסה מהימנים" "‏הצגת אישורי CA מהימנים" "פרטי משתמש" @@ -2794,7 +2794,7 @@ "‏האם להפסיק לגבות את סיסמאות ה-Wi-Fi, הסימניות, הגדרות אחרות ונתוני האפליקציות שלך ולמחוק את כל העותקים משרתי Google?" "‏האם להפסיק לגבות את נתוני המכשיר (כמו סיסמאות לרשתות Wi-Fi והיסטוריית שיחות) ונתוני אפליקציות (כמו הגדרות וקבצים המאוחסנים על ידי אפליקציות) ולמחוק את כל העותקים בשרתים מרוחקים?" - "‏גבה מרחוק באופן אוטומטי נתונים מהמכשיר (כמו סיסמאות לרשתות Wi-Fi והיסטוריית שיחות) ונתוני אפליקציות (כמו הגדרות וקבצים שאוחסנו על ידי אפליקציות) אל Google Drive.‏\n\nכשתפעיל את הגיבוי האוטומטי, נתוני המכשיר והאפליקציות יישמרו מדי פעם באופן מרוחק. נתוני אפליקציות יכולים להיות מכל סוג שהאפליקציה שומרת (בהתבסס על הגדרות המפתח), כולל נתונים שעשויים להיות רגישים, כמו אנשי קשר, הודעות ותמונות." + "‏גיבוי אוטומטי מרחוק של נתונים מהמכשיר (כמו סיסמאות לרשתות Wi-Fi והיסטוריית שיחות) ונתוני אפליקציות (כמו הגדרות וקבצים שאוחסנו על ידי אפליקציות) אל Google Drive.‏\n\nכשמפעילים את הגיבוי האוטומטי, נתוני המכשיר והאפליקציות יישמרו מדי פעם באופן מרוחק. נתוני אפליקציות יכולים להיות מכל סוג שהאפליקציה שומרת (בהתבסס על הגדרות המפתח), כולל נתונים שעשויים להיות רגישים, כמו אנשי קשר, הודעות ותמונות." "הגדרות מנהל המכשיר" "אפליקציית מנהל המכשיר" "השבתה של אפליקציית מנהל המכשיר" @@ -2829,7 +2829,7 @@ "פרטי רשת" "הסנכרון מופעל" "הסנכרון מושבת" - "מסנכרן כעת" + "הסנכרון מתבצע כעת" "שגיאת סנכרון" "הסנכרון נכשל" "סנכרון פעיל" @@ -2860,10 +2860,10 @@ "Gmail" "‏יומן Google" "אנשי קשר" - "‏""ברוכים הבאים אל סנכרון Google‏!"" \nזוהי גישה של Google לסנכרון נתונים במטרה לאפשר לך גישה לאנשי קשר, לפגישות ועוד מכל מקום שבו אתה נמצא." + "‏""ברך בואך אל Google Sync!"" \nזוהי גישה של Google לסנכרון נתונים במטרה לאפשר לך גישה לאנשי קשר, לפגישות ועוד מכל מקום שבו נמצאים." "הגדרות סנכרון אפליקציות" - "נתונים וסינכרון" - "שנה סיסמה" + "נתונים וסנכרון" + "שינוי סיסמה" "הגדרות חשבון" "הסרת החשבון" "הוספת חשבון" @@ -2873,15 +2873,15 @@ "הסרת חשבון זה תגרום למחיקת כל ההודעות, אנשי הקשר ונתונים נוספים מהמכשיר!" "מנהל המכשיר אינו מתיר שינוי זה" "לא ניתן לסנכרן באופן ידני" - "אפשרות הסנכרון עבור פריט זה מושבתת כרגע. כדי לשנות את ההגדרה, הפעל באופן זמני את נתוני הרקע והסנכרון האוטומטי." + "אפשרות הסנכרון עבור פריט זה מושבתת כרגע. כדי לשנות את ההגדרה, יש להפעיל באופן זמני את נתוני הרקע והסנכרון האוטומטי." "‏כדי להפעיל את Android עליך להזין את הסיסמה שלך" - "‏כדי להפעיל את Android, הזן את קוד האימות" - "‏כדי להפעיל את Android, שרטט את קו ביטול הנעילה" + "‏כדי להפעיל את Android, יש להזין את קוד האימות" + "‏כדי להפעיל את Android, יש לשרטט את קו ביטול הנעילה" "קו ביטול נעילה שגוי" "סיסמה שגויה" "קוד גישה שגוי" "מתבצעת בדיקה…" - "‏מפעיל את Android…" + "‏הפעלת Android מתבצעת…" "מחיקה" "קובצי \'שונות\'" "נבחרו %1$d מתוך %2$d" @@ -2901,9 +2901,9 @@ "התרת נתונים ברקע" "‏שימוש נפרד ב-4G" "‏הצגת Wi‑Fi" - "‏הסתר Wi‑Fi" + "‏הסתרת Wi‑Fi" "‏הצגת השימוש ב-Ethernet" - "הסתר שימוש באתרנט" + "הסתרת שימוש באתרנט" "הגבלות רשת" "סנכרון אוטומטי של נתונים" "‏כרטיסי SIM" @@ -2919,7 +2919,7 @@ "מוגבל" "לכבות את חבילת הגלישה?" "הגדרת מגבלת נתונים לנייד" - "‏הגדר מגבלת נתונים של 4G" + "‏הגדרת מגבלת נתונים של 4G" "‏הגדרת מגבלת נתונים של 2G-3G" "‏הגדרת מגבלת נתונים של Wi-Fi" "Wi-Fi" @@ -2956,7 +2956,7 @@ "הטאבלט יכבה את חבילת הגלישה כאשר הוא יגיע למגבלה שהגדרת.\n\nמכיוון שעשויים להיות הבדלים בין השימוש בנתונים שנמדד על ידי המכשיר לבין השימוש שנמדד על ידי הספק, מומלץ להגדיר מגבלה סבירה." "הטלפון יכבה את חבילת הגלישה כאשר הוא יגיע למגבלה שהגדרת.\n\nמכיוון שעשויים להיות הבדלים בין השימוש בנתונים שנמדד על ידי המכשיר לבין השימוש שנמדד על ידי הספק, מומלץ להגדיר מגבלה סבירה." "להגביל נתוני רקע?" - "‏אם תגביל את השימוש בחבילת הגלישה ברקע, אפליקציות ושירותים מסוימים לא יפעלו אלא אם תהיה מחובר ל-Wi‑Fi." + "‏אם מגבילים את השימוש בחבילת הגלישה ברקע, אפליקציות ושירותים מסוימים לא יפעלו אלא אם מחוברים ל-Wi‑Fi." "‏אם תגביל את השימוש בחבילת הגלישה ברקע, אפליקציות ושירותים מסוימים לא יפעלו אלא אם תהיה מחובר ל-Wi‑Fi.‏\n\nהגדרה זו משפיעה על כל המשתמשים בטאבלט." "‏אם יוגבל השימוש בחבילת הגלישה ברקע, אפליקציות ושירותים מסוימים לא יפעלו אלא אם יהיה חיבור ל-Wi‑Fi.‏\n\nהגדרה זו משפיעה על כל המשתמשים בטלפון." "^1"" ""^2"\n"אזהרה" @@ -3005,7 +3005,7 @@ "‏הכתובות של שרת ה-DNS צריכות להיות מספריות עבור VPN בחיבור תמידי" "‏המידע שהוזן לא תומך ב VPN בחיבור תמידי" "ביטול" - "סגור" + "סגירה" "שמירה" "התחברות" "החלפה" @@ -3021,20 +3021,20 @@ "‏לאחר שהגדרה זו תופעל, לא יהיה לך חיבור אינטרנט עד שה-VPN יחובר בהצלחה" "‏רשת ה-VPN הקיימת תוחלף ולא יהיה לך חיבור אינטרנט עד שה-VPN יחובר בהצלחה" "‏כבר התחברת לרשת VPN בחיבור תמידי. בהתחברות לרשת VPN שונה, הרשת הקיימת תוחלף ומצב החיבור התמידי יכבה." - "‏אתה כבר מחובר לרשת VPN. אם תתחבר לרשת VPN שונה, הרשת הקיימת תוחלף." + "‏התחברת כבר לרשת VPN. אם מתחברים לרשת VPN שונה, הרשת הקיימת תוחלף." "הפעלה" "%1$s לא מצליחה להתחבר" "‏אפליקציה זו לא תומכת באפשרות של רשת VPN בחיבור תמידי" "VPN" "‏הוספת פרופיל VPN" - "ערוך פרופיל" + "עריכת פרופיל" "מחיקת פרופיל" "‏VPN מופעל תמיד" "‏לא נוספו רשתות VPN" - "‏הישאר מחובר ל-VPN תמיד" + "‏נשארים מחוברים ל-VPN תמיד" "לא נתמך על ידי אפליקציה זו" "התכונה \'מופעל תמיד\' פעילה" - "‏חסום חיבורים ללא VPN" + "‏חסימת חיבורים ללא VPN" "‏תמיד לדרוש חיבור VPN?" "‏בוחרים פרופיל VPN שנשארים מחוברים אליו תמיד. תנועת רשת תהיה מותרת רק כאשר יהיה חיבור ל-VPN זה." "ללא" @@ -3042,7 +3042,7 @@ "אין חיבור לרשת. כדאי לנסות שוב מאוחר יותר." "‏החיבור ל-VPN נותק" "ללא" - "חסר אישור. נסה לערוך את הפרופיל." + "חסר אישור. יש לנסות לערוך את הפרופיל." "מערכת" "משתמש" "השבתה" @@ -3062,9 +3062,9 @@ "לא הותקנו פרטי כניסה של המשתמש" "בודק איות" "בדיקת איות לעבודה" - "הקלד כאן את הסיסמה הנוכחית שלך לגיבוי מלא" + "יש להקליד כאן את הסיסמה הנוכחית שלך לגיבוי מלא" "כאן יש להקליד סיסמה חדשה לגיבויים מלאים" - "הקלד מחדש את הסיסמה החדשה שלך לגיבוי מלא כאן" + "יש להקליד מחדש את הסיסמה החדשה שלך לגיבוי מלא כאן" "הגדר סיסמת גיבוי" "ביטול" "עדכוני מערכת נוספים" @@ -3077,10 +3077,10 @@ קבלת מהימנות או הסרה של אישור - %s התקין במכשירך רשויות אישורים שעשויות לאפשר לו לנהל מעקב אחר פעילות המכשיר ברשת, כולל אימיילים, אפליקציות ואתרים מאובטחים.\n\nלקבלת מידע נוסף על אישורים אלה, פנה למנהל המערכת. - %s התקין במכשירך רשויות אישורים שעשויות לאפשר לו לנהל מעקב אחר פעילות המכשיר ברשת, כולל אימיילים, אפליקציות ואתרים מאובטחים.\n\nלקבלת מידע נוסף על אישורים אלה, פנה למנהל המערכת. - %s התקין במכשירך רשויות אישורים שעשויות לאפשר לו לנהל מעקב אחר פעילות המכשיר ברשת, כולל אימיילים, אפליקציות ואתרים מאובטחים.\n\nלקבלת מידע נוסף על אישורים אלה, פנה למנהל המערכת. - %s התקין במכשירך רשות אישורים שעשויה לאפשר לו לנהל מעקב אחר פעילות המכשיר ברשת, כולל אימיילים, אפליקציות ואתרים מאובטחים.\n\nלקבלת מידע נוסף על אישור זה, פנה למנהל המערכת. + %s התקין במכשירך רשויות אישורים שעשויות לאפשר לו לנהל מעקב אחר פעילות המכשיר ברשת, כולל אימיילים, אפליקציות ואתרים מאובטחים.\n\nלקבלת מידע נוסף על אישורים אלה, יש לפנות למנהל המערכת. + %s התקין במכשירך רשויות אישורים שעשויות לאפשר לו לנהל מעקב אחר פעילות המכשיר ברשת, כולל אימיילים, אפליקציות ואתרים מאובטחים.\n\nלקבלת מידע נוסף על אישורים אלה, יש לפנות למנהל המערכת. + %s התקין במכשירך רשויות אישורים שעשויות לאפשר לו לנהל מעקב אחר פעילות המכשיר ברשת, כולל אימיילים, אפליקציות ואתרים מאובטחים.\n\nלקבלת מידע נוסף על אישורים אלה, יש לפנות למנהל המערכת. + %s התקין במכשירך רשות אישורים שעשויה לאפשר לו לנהל מעקב אחר פעילות המכשיר ברשת, כולל אימיילים, אפליקציות ואתרים מאובטחים.\n\nלקבלת מידע נוסף על אישור זה, יש לפנות למנהל המערכת. %s התקין רשויות אישורים לפרופיל העבודה שלך. ייתכן שהדבר יאפשר לו לנהל מעקב אחר פעילות רשת בעבודה, כולל אימיילים, אפליקציות ואתרים מאובטחים.\n\nלקבלת מידע נוסף על אישורים אלה, פנה למנהל המערכת. @@ -3090,10 +3090,10 @@ "צד שלישי מסוגל לעקוב אחר הפעילות שלך ברשת, כולל הודעות אימייל, אפליקציות ואתרים מאובטחים.\n\nאישור מהימן המותקן במכשיר מאפשר זאת." - בדוק אישורים - בדוק אישורים - בדוק אישורים - בדוק אישור + בדיקת אישורים + בדיקת אישורים + בדיקת אישורים + בדיקת אישור "משתמשים מרובים" "ניתן לשתף את המכשיר על ידי הוספת משתמשים חדשים. לכל משתמש יהיה מרחב אישי במכשיר למסכי בית מותאמים אישית, חשבונות, אפליקציות, הגדרות ועוד." @@ -3113,7 +3113,7 @@ "רק הבעלים של הטאבלט יכול לנהל משתמשים." "רק הבעלים של הטלפון יכול לנהל משתמשים." "פרופילים מוגבלים לא יכולים להוסיף חשבונות" - "מחק את %1$s ממכשיר זה" + "מחיקת %1$s ממכשיר זה" "הגדרות מסך נעילה" "הוספת משתמשים ממסך הנעילה" "האם למחוק אותך?" @@ -3132,7 +3132,7 @@ "הסרת אורח" "להסיר אורח?" "כל האפליקציות והנתונים בפעילות זו באתר יימחקו." - "הסר" + "הסרה" "הפעלת שיחות טלפון" "‏הפעלת שיחות טלפון ו-SMS" "מחיקת משתמש" @@ -3147,7 +3147,7 @@ "הרחבת ההגדרות עבור האפליקציה" "תשלומים ללא מגע" "איך זה עובד" - "שלם עם הטלפון בחנויות" + "משלמים עם הטלפון בחנויות" "ברירת המחדל לתשלום" "לא מוגדרת" "%1$s - %2$s" @@ -3156,7 +3156,7 @@ "מלבד כשאפליקציית תשלום אחרת פועלת" "במסוף ללא מגע, יש לשלם באמצעות:" "תשלום במסוף" - "הגדר אפליקציית תשלום. לאחר מכן עליך רק להצמיד את גב הטלפון למסוף שעליו מופיע סמל התשלום ללא מגע." + "יש להגדיר אפליקציית תשלום. לאחר מכן עליך רק להצמיד את גב הטלפון למסוף שעליו מופיע סמל התשלום ללא מגע." "הבנתי" "עוד..." "הגדרה של אפליקציית התשלומים שתשמש כברירת המחדל" @@ -3216,7 +3216,7 @@ "האפליקציה הזו יכולה לגשת לחשבונות שלך" "האפליקציה הזו יכולה לגשת אל החשבונות שלך. בשליטה של %1$s" "‏רשת Wi‑Fi ורשת סלולרית" - "‏אפשר שינוי של הגדרות רשת Wi-Fi ורשת סלולרית" + "‏לאפשר שינוי של הגדרות רשת Wi-Fi ורשת סלולרית" "Bluetooth" "‏התרת שינויים של התאמות והגדרות Bluetooth" "NFC" @@ -3238,9 +3238,9 @@ "‏כרטיסי SIM השתנו" "יש להקיש כדי להגדיר פעילויות" "חבילת הגלישה לא זמינה" - "‏הקש כדי לבחור SIM לנתונים" + "‏יש להקיש כדי לבחור SIM לחבילת גלישה" "שימוש תמיד עבור שיחות" - "‏בחר SIM לנתונים" + "‏בחירת SIM לחבילת גלישה" "‏יש לבחור SIM ל-SMS" "‏המערכת מחליפה את כרטיס ה-SIM המשמש לתקשורת נתונים. הפעולה עשויה לערוך עד דקה..." "התקשר באמצעות" @@ -3252,7 +3252,7 @@ "ספק" "מספר" "‏צבע SIM" - "‏בחר כרטיס SIM" + "‏בחירת כרטיס SIM" "כתום" "סגול" "‏לא הוכנסו כרטיסי SIM" @@ -3267,7 +3267,7 @@ "‏Disabling Network Name Broadcast ימנע חיבור אוטומטי אל רשתות מוסתרות." "‏%1$d dBm ‏%2$d asu" "‏כרטיסי SIM הוחלפו." - "הקש כדי להגדיר" + "יש להקיש כדי להגדיר" "אני רוצה לאשר בכל פעם" "יש לציין בחירה" "‏בחירת SIM" @@ -3547,7 +3547,7 @@ "צליל ברירת המחדל להתראת עבודה" "זהה לצלילים של הפרופיל האישי" "להחליף צלילים?" - "החלף" + "החלפה" "הצלילים המוגדרים בפרופיל האישי יופעלו בפרופיל העבודה" "להוסיף צליל מותאם אישית?" "קובץ זה יועתק לתיקייה %s" @@ -3642,7 +3642,7 @@ "קבוצת קטגוריות של התראות" "התנהגות" "הפעלת צליל" - "לעולם אל תציג התראות" + "לעולם לא להציג התראות" "שיחות" "שיחה" "קטע התראות השיחה" @@ -3669,10 +3669,10 @@ "שיחות בעדיפות גבוהה ושיחות שנערכו בהן שינויים יופיעו כאן" "שיחות שסומנה כשיחות בעדיפות גבוהה או שיחות שנערכו בהן שינויים אחרים יופיעו כאן. \n\nכדי לשנות את הגדרות השיחות: \nיש להחליק למטה מהחלק העליון של המסך כדי לפתוח את חלונית ההתראות הנפתחת, ואז ללחוץ לחיצה ארוכה על שיחה כלשהי." "יש להציג באופן שקט וממוזער" - "הצג ללא צליל" + "הצגה ללא צליל" "עם צליל" "השמעת צליל והצגה במסך" - "הצג במסך" + "הצגה במסך" "ברמה מינימלית" "בינונית" "גבוהה" @@ -3731,7 +3731,7 @@ "‏האם לאפשר לשירות VR גישה אל %1$s?" "%1$s יוכל לפעול אם משתמשים באפליקציות במצב של מציאות מדומה." "‏כשהמכשיר במצב VR" - "הפחת טשטוש (מומלץ)" + "הפחתת טשטוש (מומלץ)" "הפחתת הבהובים" "תמונה בתוך תמונה" "אין אפליקציות מותקנות שתומכות ב\'תמונה בתוך תמונה\'" @@ -3750,7 +3750,7 @@ "לאפליקציות מקושרות יש הרשאות משותפות, ויש להן גישה לנתונים שבכל אחת מהן." "‏יש לקשר רק אפליקציות שניתן לבטוח בהן שלא ייעשה באמצעותן שיתוף של מידע אישי עם מנהל ה-IT." "תמיד אפשר לנתק אפליקציות בהגדרות הפרטיות של המכשיר." - "האם תסכים/י לחשוף את המידע האישי שלך באפליקציה %1$s, שמיועדת לעבודה?" + "האם מקובל עליך לחשוף את המידע האישי שלך באפליקציה %1$s, שמיועדת לעבודה?" "‏יש לקשר רק אפליקציות שניתן לבטוח בהן שלא ייעשה באמצעותן שיתוף של מידע אישי עם מנהל ה-IT." "נתוני האפליקציה" "האפליקציה הזו יכולה לגשת לנתונים באפליקציה שלך לשימוש אישי, %1$s." @@ -3769,7 +3769,7 @@ "גישה אל \'נא לא להפריע\'" "הפעלת ההרשאה \'נא לא להפריע\'" "אין אפליקציות מותקנות שביקשו גישה אל \'נא לא להפריע\'" - "טוען אפליקציות..." + "האפליקציות בטעינה..." "‏לבקשתך, מערכת Android לא מאפשרת להציג במכשיר הזה התראות מהאפליקציה הזו" "‏לבקשתך, מערכת Android לא מאפשרת להציג במכשיר הזה התראות ששייכות לקטגוריה הזו" "‏לבקשתך, מערכת Android לא מאפשרת להציג במכשיר הזה התראות מקבוצה זו" @@ -3799,7 +3799,7 @@ "מופעל" "כבוי" - "לחסום הכל" + "לחסום הכול" "לעולם את תציג את ההתראות אלה" "הצגת התראות" "לעולם אל תציג את ההתראות בלוח ההתראות או במכשירים היקפיים" @@ -4015,7 +4015,7 @@ "לאחר שמקפיאים אפליקציה: \n\n•  ייתכן שתתאפשר גישה למידע אישי \n (כמו אנשי קשר ותוכן מהאימייל) \n•  האפליקציה שהוקפאה עשויה לפתוח אפליקציות אחרות \n\nיש להשתמש בהקפאת אפליקציה רק עם אנשים מהימנים." "בקשת קו ביטול נעילה לפני ביטול הצמדה" "בקשת קוד גישה לפני ביטול הצמדה" - "בקש סיסמה לפני ביטול הצמדה" + "יש לבקש סיסמה לפני ביטול הצמדה" "נעילת מכשיר בזמן ביטול הצמדה" "‏אישור מחיקה של SIM" "‏יש לאמת את זהותך לפני מחיקה של SIM שהורד" @@ -4040,8 +4040,8 @@ "לדרוש קוד גישה?" "לדרוש קו לביטול נעילה?" "לדרוש סיסמה?" - "כשתזין את קוד הגישה להפעלת המכשיר הזה, שירותי נגישות כמו %1$s עדיין לא יהיו זמינים." - "כשתזין את קו ביטול הנעילה להפעלת המכשיר הזה, שירותי נגישות כמו %1$s עדיין לא יהיו זמינים." + "כשמזינים את קוד הגישה להפעלת המכשיר הזה, שירותי נגישות כמו %1$s עדיין לא יהיו זמינים." + "כשמזינים את קו ביטול הנעילה להפעלת המכשיר הזה, שירותי נגישות כמו %1$s עדיין לא יהיו זמינים." "כשתזין את הסיסמה להפעלת המכשיר הזה, שירותי נגישות כמו %1$s עדיין לא יהיו זמינים." "הערה: אם ביצעת הפעלה מחדש לטלפון ונעילת המסך מוגדרת, לא ניתן יהיה להפעיל את האפליקציה הזו לפני ביטול נעילת המסך של הטלפון" "‏פרטי IMEI" @@ -4049,7 +4049,7 @@ "(חריץ %1$d)" "ברירת מחדל" "פתיחת קישורים" - "פתח קישורים נתמכים" + "פתיחת קישורים נתמכים" "אפשר לפתוח בלי לשאול" "קישורים נתמכים" "ברירות מחדל אחרות" @@ -4115,7 +4115,7 @@ "אפליקציות המשתמשות ב%1$s" "אפליקציות שמשתמשות בהרשאת %1$s ועוד" "יש להקיש כדי להעיר" - "הקש פעמיים בנקודה כלשהי במסך כדי להעיר את המכשיר" + "יש להקיש פעמיים בנקודה כלשהי במסך כדי להעיר את המכשיר" "פתיחת קישורים" "בלי לפתוח קישורים נתמכים" "פתיחה של %s" @@ -4128,7 +4128,7 @@ אפליקציה אחת פותחת קישורים נתמכים "לתת לאפליקציה הרשאה לפתוח קישורים שיש להם תמיכה" - "שאל בכל פעם" + "יש לשאול בכל פעם" "לא לתת לאפליקציה הרשאה לפתוח קישורים" יש דרישה של האפליקציה לטפל ב-%d קישורים @@ -4155,10 +4155,10 @@ "(ברירת מחדל של המערכת)" "אחסון אפליקציות" "גישה לנתוני שימוש" - "התר גישה לנתוני שימוש" + "התרת גישה לנתוני שימוש" "העדפות לשימוש באפליקציות" "זמן מסך" - "גישה לנתוני שימוש מאפשרת לאפליקציה לעקוב אחר האפליקציות האחרות שבהן אתה משתמש ואחר תדירות השימוש בהן. המידע כולל גם את זהות הספק, הגדרות השפה ופרטים אחרים." + "גישה לנתוני שימוש מאפשרת לאפליקציה לעקוב אחר האפליקציות האחרות שבהן משתמשים ואחר תדירות השימוש בהן. המידע כולל גם את זהות הספק, הגדרות השפה ופרטים אחרים." "זיכרון" "פרטי זיכרון" "פועלת תמיד (%s)" @@ -4197,14 +4197,14 @@ "ניהול צריכת החשמל" "לא נעשה שימוש בסוללה מאז הטעינה המלאה האחרונה" "הגדרות אפליקציה" - "‏הצג את SystemUI Tuner" + "‏הצגת SystemUI Tuner" "הרשאות נוספות" "עוד %1$d" "האם לשתף דוח על באג?" "‏מנהל ה-IT שלך ביקש דוח על באג כדי לסייע בפתרון בעיות במכשיר זה. ייתכן שאפליקציות ונתונים ישותפו." "‏מנהל ה-IT שלך ביקש דוח על באג כדי לסייע בפתרון בעיות במכשיר זה. ייתכן שאפליקציות ונתונים ישותפו. פעילות המכשיר עשויה להאט באופן זמני." "‏הדוח על באג זה משותף כעת עם מנהל ה-IT שלך. למידע נוסף, אפשר ליצור איתו קשר." - "שתף" + "שיתוף" "לא, תודה" "אין העברת נתונים" "רק לטעינת המכשיר" @@ -4234,7 +4234,7 @@ "MIDI" "העברת קבצים ואספקת מתח" "‏שיתוף אינטרנט בין מכשירים באמצעות USB ואספקת מתח" - "‏PTP ואספקת מתח" + "‏PTP ואספקת חשמל" "‏MIDI ואספקת מתח" "בדיקה ברקע" "גישה מלאה ברקע" @@ -4274,7 +4274,7 @@ "לבטל את הגישה של %1$s ל\'נא לא להפריע\'?" "כל כללי \'נא לא להפריע\' שנוצרו על ידי האפליקציה הזו יוסרו." "אל תבצע אופטימיזציה" - "בצע אופטימיזציה" + "ביצוע אופטימיזציה" "הסוללה עלולה להתרוקן מהר יותר. האפליקציה תוכל להשתמש בסוללה ברקע." "מומלץ להארכת חיי הסוללה" "האם להתיר ל-%s להתעלם מאופטימיזציה של הסוללה?" @@ -4309,11 +4309,11 @@ "ההרשאה הזו מתירה לאפליקציה לשנות את הגדרות המערכת." "כן" "לא" - "אפשר ממקור זה" + "לאפשר ממקור זה" "סיבוב כפול להפעלת המצלמה" "התכונה הזו מאפשרת לפתוח את אפליקציית המצלמה על ידי סיבוב כפול של פרק כף היד" "לחיצה כפולה על לחצן ההפעלה" - "הפעל את המצלמה במהירות מבלי לבטל את נעילת הטלפון" + "הפעלת המצלמה במהירות מבלי לבטל את נעילת הטלפון" "גודל תצוגה" "הגדלה והקטנה של הפריטים המופיעים במסך" "דחיסות תצוגה, מרחק מתצוגה במסך, קנה מידה, שינוי קנה מידה" @@ -4346,7 +4346,7 @@ "הותקנו 24 אפליקציות" "%1$s בשימוש, %2$s פנויים" "אחסון פנימי: %1$s בשימוש – %2$s פנוי" - "עבור למצב שינה לאחר %1$s של חוסר פעילות" + "מעבר למצב שינה לאחר %1$s של חוסר פעילות" "טפטים, שינה וגודל הגופן" "סגנונות, טפטים, זמן קצוב לכיבוי המסך, גודל גופן" "שינה, גודל גופן" @@ -4415,10 +4415,10 @@ %1$d הצעות נוספות הצעה אחת נוספת - "הסר" + "הסרה" "טמפרטורת צבעים קרים" "השתמש בצבעי תצוגה קרירים יותר" - "כבה את המסך כדי להחיל שינוי צבע" + "יש לכבות את המסך כדי להחיל שינוי צבע" "חיישן הלייזר של המצלמה" "עדכוני מערכת אוטומטיים" "החלת עדכונים כאשר המכשיר מופעל מחדש" @@ -4553,7 +4553,7 @@ "תכונות נוספות" "האם ברצונך למחוק נתוני משתמשים ולהמיר להצפנת קבצים?" "מחיקה והמרה" - "‏אפס הגבלת דירוג ב-ShortcutManager" + "‏איפוס הגבלת דירוג ב-ShortcutManager" "‏אופסה הגבלת דירוג ב-ShortcutManager" "בחירת הפרטים שמופיעים במסך הנעילה" "הצגה או הסתרה של תוכן ההתראה" @@ -4581,7 +4581,7 @@ "כיבוי חיישנים" "הגדרות של פרופיל עבודה" "חיפוש אנשי קשר" - "אפשר לחיפושי אנשי קשר שמבצע הארגון לזהות מתקשרים ואנשי קשר" + "מאפשרים לחיפושי אנשי קשר שמבצע הארגון לזהות מתקשרים ואנשי קשר" "יומן למספר פרופילים" "הצגת אירועי עבודה ביומן האישי" @@ -4680,7 +4680,7 @@ "הגדרה" "סנכרון אוטומטי של נתוני האפליקציה" "סנכרון נתונים אישיים באופן אוטומטי" - "סנכרן נתוני עבודה באופן אוטומטי" + "סנכרון נתוני עבודה באופן אוטומטי" "אפשר לאפליקציות לרענן נתונים באופן אוטומטי" "סנכרון חשבון" "הסנכרון פועל ל-%1$d מתוך %2$d פריטים" @@ -4788,7 +4788,7 @@ "‏(WebView מושבתת אצל %s)" "שירות מילוי אוטומטי" "‏אוטומטי, אוטומטית, מילוי, מילוי אוטומטי, autofill" - "‏<b>ודא שאתה סומך על האפליקציה הזו</b>‏ ‏<br/> <br/>‏ ‏<xliff:g id=app_name example=Google Autofill>‏%1$s‏</xliff:g> ניגשת למידע המופיע במסך כדי לזהות אילו שדות אפשר למלא באופן אוטומטי." + "‏<b>יש לוודא שסומכים על האפליקציה הזו</b>‏ ‏<br/> <br/>‏ ‏<xliff:g id=app_name example=Google Autofill>‏%1$s‏</xliff:g> ניגשת למידע המופיע במסך כדי לזהות אילו שדות אפשר למלא באופן אוטומטי." "מילוי אוטומטי" "רמת רישום ביומן" "מספר מרבי של בקשות לסשן" diff --git a/res/values-kk/strings.xml b/res/values-kk/strings.xml index c6c5f462787..1128625142e 100644 --- a/res/values-kk/strings.xml +++ b/res/values-kk/strings.xml @@ -2596,18 +2596,18 @@ "Кесте жоқ" "Әрекеттеріңіз негізінде" "Зарядтың пайыздық шамасы негізінде" - "Батарея қуаты келесі зарядтағанға дейін жетпеуі мүмкін болса, Battery Saver іске қосылады" + "Батарея қуаты келесі зарядтағанға дейін жетпеуі мүмкін болса, Батареяны үнемдеу режимі іске қосылады" "Заряд деңгейі %1$s болғанда, қосылады" "Кестені белгілеу" "Батарея жұмысының ұзақтығын арттыру" "Толық зарядталғанда өшіру" "Телефон заряды %1$s болғанда, Батареяны үнемдеу режимі өшеді." - "Планшет заряды %1$s болғанда, Battery Saver өшіріледі." - "Құрылғы заряды %1$s болғанда, Battery Saver өшіріледі." + "Планшет заряды %1$s болғанда, Батареяны үнемдеу режимі өшіріледі." + "Құрылғы заряды %1$s болғанда, Батареяны үнемдеу режимі өшіріледі." "Қосу" - "\"Battery Saver\" функциясын пайдалану" + "Батареяны үнемдеу режимін пайдалану" "Автоматты түрде қосу" "Ешқашан" "батарея заряды %1$s болғанда" @@ -3295,7 +3295,7 @@ "жанасу сезімталдығы, діріл, экран, сезімталдық" "сенсорлар, діріл, телефон, қоңырау, сезгіштік" "сенсорлар, діріл, сезгіштік" - "battery saver, бекітілген, тұрақты, power saver, батарея" + "батареяны үнемдеу режимі, бекітілген, тұрақты, power saver, батарея" "әрекеттер тізімі, кесте, battery saver, қуат үнемдеу, батарея, автоматты, пайыз" "VoLTE, жетілдірілген қоңырау, 4g қоңырауы" "тілді енгізу, тіл енгізу" @@ -4412,8 +4412,8 @@ "Түрлі құрылғыларға қосылған" "Жүйе интерфейсінің демо режимі" "Қараңғы тақырып" - "Battery Saver функциясына байланысты қосулы/уақытша өшірулі" - "Battery Saver функциясына байланысты уақытша қосулы" + "Батареяны үнемдеу режиміне байланысты қосулы/уақытша өшірулі" + "Батареяны үнемдеу режиміне байланысты уақытша қосулы" "Қолдауға ие қолданбалар да қараңғы тақырыпқа ауысады." "Түсінікті" "Қараңғы тақырыпты пайдаланып көру" diff --git a/res/values-km/strings.xml b/res/values-km/strings.xml index fd2728ce343..27adb1cdc05 100644 --- a/res/values-km/strings.xml +++ b/res/values-km/strings.xml @@ -4114,7 +4114,7 @@ "មិនបានប្រើអង្គចងចាំទេក្នុងរយៈពេល 3 ម៉ោងចុងក្រោយ" "តម្រៀបតាមការប្រើជាមធ្យម" "តម្រៀបតាមការប្រើអតិបរមា" - "ដំណើរការ" + "ប្រតិបត្តិការ" "អង្គចងចាំសរុប" "បានប្រើជាមធ្យម (%)" "ទំនេរ" diff --git a/res/values-mn/strings.xml b/res/values-mn/strings.xml index 6cf5a85ba34..de0df503707 100644 --- a/res/values-mn/strings.xml +++ b/res/values-mn/strings.xml @@ -2122,9 +2122,9 @@ "Дэлгэц дээрх зүйлсийг чанга уншуулахын тулд дарна уу" "Тайлбарын сонголт" "Томруулах" - "Томруулалтын хэсэг" + "Томруулах хэсэг" "Томруулалтыг идэвхжүүлэх" - "Дэлгэцийг томруулах үедээ хэрэглэхийг хүсэж байгаа томруулалтын хэсг(үүд)ээ сонгоно уу" + "Дэлгэцийг томруулах үедээ хэрэглэхийг хүсэж байгаа томруулах хэсг(үүд)ээ сонгоно уу" "Бүтэн дэлгэц" "Дэлгэцийн нэг хэсэг" "Бүтэн дэлгэц; дэлгэцийн нэг хэсэг" @@ -2423,7 +2423,7 @@ "Батерейны менежерийг асаах" "Батарей хэмнэгчийг асаах" "Батарей ердийн үеийнхээс хурдан дуусаж болзошгүй" - "Тэжээл хэмнэгч асаалттай байна" + "Батарей хэмнэгч асаалттай байна" "Зарим онцлогийг хязгаарласан байж болзошгүй" "Утсыг ердийнхөөс их хэмжээгээр ашигласан" "Таблетыг ердийнхөөс их хэмжээгээр ашигласан" @@ -3886,7 +3886,7 @@ "Идэвхтэй" "Идэвхгүй" "Апп бэхлэлт" - "Апп бэхлэлт нь одоогийн аппыг бэхлэснийг болиулах хүртэл харагдуулах боломжтой. Энэ онцлогийг итгэдэг найздаа тодорхой тоглоом тоглохыг нь зөвшөөрөх гэх мэтээр ашиглах боломжтой. \n\nАппыг тогтоосон үед тогтоосон апп бусад аппыг нээж, хувийн өгөгдөлд хандах боломжтой байж болзошгүй. \n\nАпп тогтоохыг ашиглахын тулд: \n1. Апп тогтоохыг асаана уу \n2. Тоймыг нээнэ үү \n3. Дэлгэцийн дээд хэсэгт байрлах аппын дүрс тэмдгийг товшиж, дараа нь Тогтоох дээр товшино уу" + "Апп бэхлэлт нь одоогийн аппыг бэхлэснийг болиулах хүртэл харагдуулах боломжтой. Энэ онцлогийг итгэдэг найздаа тодорхой тоглоом тоглохыг нь зөвшөөрөх гэх мэтээр ашиглах боломжтой. \n\nАппыг бэхэлсэн үед бэхэлсэн апп бусад аппыг нээж, хувийн өгөгдөлд хандах боломжтой байж болзошгүй. \n\nАпп бэхлэхийн ашиглахын тулд: \n1. Апп бэхлэхийг асаана уу \n2. Тоймыг нээнэ үү \n3. Дэлгэцийн дээд хэсэгт байрлах аппын дүрс тэмдгийг товшиж, дараа нь Бэхлэх дээр товшино уу" "Апп бэхлэлт нь үүнийг болиулах хүртэл одоогийн аппыг харагдахаар байлгахыг зөвшөөрдөг. Энэ онцлогийг итгэдэг найздаа тодорхой тоглоом тоглохыг зөвшөөрөх зэргээр ашиглах боломжтой. \n\nАппыг бэхэлсэн үед бэхэлсэн апп бусад аппыг нээх болон хувийн өгөгдлийн хандалт боломжтой байж болзошгүй. \n\nХэрэв та төхөөрөмжийг хэн нэгэнтэй аюулгүйгээр хуваалцахыг хүсвэл оронд нь зочин хэрэглэгчийг ашиглаж үзнэ үү. \n\nАппын бэхлэлтийг ашиглахын тулд: \n1. Аппын бэхлэлтийг асаана уу \n2. Тоймыг нээнэ үү \n3. Дэлгэцийн дээд хэсгийн аппын дүрс тэмдгийг товшиж, дараа нь бэхлэх дээр товшино уу" "Аппыг бэхэлсэн үед: \n\n•  Хувийн өгөгдөлд хандах боломжтой байж болзошгүй \n (харилцагчид болон имэйлийн контент зэрэг) \n•  Бэхэлсэн апп бусад аппыг нээж болзошгүй \n\nАпп бэхлэхийг зөвхөн итгэдэг хүмүүстэйгээ ашиглаарай." "Тогтоосныг суллахаас өмнө түгжээ тайлах хээ асуух" @@ -4235,7 +4235,7 @@ "Бүү саад бол горим асаалттай байна" "Утасны дууг хаасан" "Онцгой тохиолдолд" - "Тэжээл хэмнэгч асаалттай" + "Батарей хэмнэгч асаалттай" "Онцлогуудыг хязгаарласан" "Мобайл дата унтраалттай байна" "Интернэтэд зөвхөн Wi‑Fi-р холбогдох боломжтой байна" diff --git a/res/values-ne/strings.xml b/res/values-ne/strings.xml index a70afe94e0b..f2cc6c809a1 100644 --- a/res/values-ne/strings.xml +++ b/res/values-ne/strings.xml @@ -273,7 +273,7 @@ "%1$s प्रयोग गर्दछ। %2$s %3$s मा सुरु हुन्छ।" "%1$s प्रयोग गर्छ। दिवाप्रकाश बचत समय छैन।" "दिवाप्रकाश बचत समय" - "मानक समय" + "डिफल्ट समय" "क्षेत्रका आधारमा चयन गर्नुहोस्" "UTC अफसेटका आधारमा चयन गर्नुहोस्‌" "मिति" @@ -2283,7 +2283,7 @@ "खुल्ला" "बन्द" "पूर्वावलोकन" - "मानक विकल्पहरू" + "डिफल्ट विकल्पहरू" "भाषा" "पाठ आकार" "क्याप्सन शैली" @@ -3254,7 +3254,7 @@ "एपहरू, अनुमतिहरू, सुरक्षा" "एपहरू, पूर्वनिर्धारित" "अनुकूलनहरूलाई बेवास्ता गर्नुहोस्, डोज, एप स्ट्यान्डबाइ" - "चम्किलो RGB, sRGB, रङ्ग, प्राकृतिक, मानक" + "चम्किलो RGB, sRGB, रङ्ग, प्राकृतिक, डिफल्ट" "रङ्ग, तापक्रम, D65, D73, सेतो, पहेँलो, निलो, न्यानो, शीतल" "अनलक गर्न स्लाइड गर्नुहोस्, पासवर्ड, ढाँचा, PIN" "स्क्रिन पिनिङ" diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml index 28881fb2f60..761150db3ae 100644 --- a/res/values-nl/strings.xml +++ b/res/values-nl/strings.xml @@ -101,9 +101,9 @@ "Tik om in te schakelen" "Bluetooth-apparaat kiezen" "%1$s wil bluetooth aanzetten" - "%1$s wil Bluetooth uitschakelen" + "%1$s wil Bluetooth uitzetten" "Een app wil Bluetooth aanzetten" - "Een app wil Bluetooth uitschakelen" + "Een app wil Bluetooth uitzetten" "%1$s wil je tablet %2$d seconden zichtbaar maken voor andere Bluetooth-apparaten." "%1$s wil je telefoon %2$d seconden zichtbaar maken voor andere Bluetooth-apparaten." "Een app wil je tablet %1$d seconden zichtbaar maken voor andere Bluetooth-apparaten." @@ -120,8 +120,8 @@ "%1$s wil bluetooth aanzetten en je telefoon zichtbaar maken voor andere apparaten. Je kunt dit later wijzigen in de bluetooth-instellingen." "Een app wil bluetooth aanzetten en je telefoon zichtbaar maken voor andere apparaten. Je kunt dit later wijzigen in de bluetooth-instellingen." "Een app wil bluetooth aanzetten en je telefoon zichtbaar maken voor andere apparaten. Je kunt dit later wijzigen in de bluetooth-instellingen." - "Bluetooth aanzetten..." - "Bluetooth uitschakelen…" + "Bluetooth aanzetten…" + "Bluetooth uitzetten…" "Bluetooth-verbindingsverzoek" "Tik om verbinding te maken met \'%1$s\'." "Wil je verbinding maken met \'%1$s\'?" @@ -140,7 +140,7 @@ "Je tablet toestaan om te communiceren met Bluetooth-apparaten in de nabije omgeving" "Je apparaat toestaan om te communiceren met Bluetooth-apparaten in de nabije omgeving" "Je telefoon toestaan om te communiceren met Bluetooth-apparaten in de nabije omgeving" - "Bluetooth A2DP-hardware-offload uitschakelen" + "Bluetooth A2DP-hardware-offload uitzetten" "Apparaat herstarten?" "Start het apparaat opnieuw op om de instelling te wijzigen." "Herstarten" @@ -515,7 +515,7 @@ "%1$s/%2$s na slaapstand" "Werkprofielvergr." "Schermvergrendeling wijzigen" - "Beveiliging via patroon, PIN of wachtwoord wijzigen of uitschakelen" + "Patroon, pincode of wachtwoord wijzigen of uitzetten" "Kies een methode voor schermvergrendeling" "Geen" @@ -546,7 +546,7 @@ "Pincode" "Wachtwoord" "Zodra je een schermvergrendeling hebt ingesteld, kun je ook je vingerafdruk instellen in \'Instellingen\' > \'Beveiliging\'." - "Schermvergrendeling uitschakelen" + "Schermvergrendeling uitzetten" "Apparaatbeveiliging verwijderen?" "Profielbeveiliging verwijderen?" "De apparaatbeveiliging werkt niet zonder je patroon." @@ -777,7 +777,7 @@ "%1$d Mbps" "%1$d Mbps" "%s wil wifi aanzetten" - "%s wil wifi uitschakelen" + "%s wil wifi uitzetten" "Bytecode verifiëren van apps met foutopsporing" "ART toestaan de bytecode te verifiëren voor apps waarop foutopsporing kan worden toegepast" "Vernieuwingssnelheid tonen" @@ -804,7 +804,7 @@ "Draadloze toegangspunten instellen en beheren" "Wifi selecteren" "Wifi aanzetten…" - "Wifi uitschakelen…" + "Wifi uitzetten…" "Fout" "5 GHz-band niet beschikbaar in dit land" "In vliegtuigmodus" @@ -1041,16 +1041,16 @@ "App deelt content. Als je de internetverbinding wilt delen, schakel je de hotspot uit en weer in." "Geen wachtwoord ingesteld" "Naam hotspot" - "%1$s aanzetten..." + "%1$s aanzetten…" "Andere apparaten kunnen verbinding maken met %1$s" "Wachtwoord hotspot" "Frequentieband voor toegangspunt" "Gebruik een hotspot om een wifi-netwerk te maken voor je andere apparaten. De hotspot biedt internet via je mobiele dataverbinding. Er kunnen extra kosten voor mobiele data van toepassing zijn." "Apps kunnen hotspots maken om content te delen met apparaten in de buurt." - "Hotspot automatisch uitschakelen" + "Hotspot automatisch uitzetten" "Als er geen apparaten zijn verbonden" "Hotspot aanzetten…" - "Hotspot uitschakelen…" + "Hotspot uitzetten…" "%1$s is actief" "Fout met draagbare wifi-hotspot" "Wifi-hotspot instellen" @@ -1221,18 +1221,18 @@ "Wordt automatisch uitgeschakeld om %1$s" "Wordt automatisch uitgeschakeld bij zonsopgang" "Nu aanzetten" - "Nu uitschakelen" + "Nu uitzetten" "Aanzetten tot zonsopgang" - "Uitschakelen tot zonsondergang" + "Uitzetten tot zonsondergang" "Aanzetten tot %1$s" - "Uitschakelen tot %1$s" + "Uitzetten tot %1$s" "Nachtverlichting uitgeschakeld" "Apparaatlocatie is vereist om de tijden voor zonsondergang en zonsopgang te bepalen" "Locatie-instellingen" "Nu aanzetten" - "Nu uitschakelen" + "Nu uitzetten" "Aanzetten tot zonsopgang" - "Uitschakelen tot zonsondergang" + "Uitzetten tot zonsondergang" "Donkere modus" "Planning" "Geen" @@ -1248,7 +1248,7 @@ "Wordt automatisch uitgeschakeld bij zonsopgang" "Wordt automatisch uitgeschakeld om %1$s" "Aanzetten tot %1$s" - "Uitschakelen tot %1$s" + "Uitzetten tot %1$s" "Het donkere thema gebruikt een zwarte achtergrond zodat je batterij langer meegaat op sommige schermen. Schema\'s voor het donkere thema worden pas ingeschakeld als je scherm uit is." "Time-out voor scherm" "Scherm wordt uitgeschakeld" @@ -1892,7 +1892,7 @@ "Verwijderen" "Verwijderen voor alle gebruikers" "Installeren" - "Uitschakelen" + "Uitzetten" "Aanzetten" "Opslag wissen" "Updates verwijderen" @@ -1956,9 +1956,9 @@ "Als je een app gedwongen stopt, kan deze onverwacht gedrag vertonen." "Voorkeursinstallatielocatie" "De voorkeursinstallatielocatie voor nieuwe apps wijzigen" - "App uitschakelen" - "Als je deze app uitschakelt, werken Android en andere apps mogelijk niet meer zoals bedoeld. Onthoud dat je deze app niet kunt verwijderen, omdat deze vooraf geïnstalleerd was op je apparaat. Uitschakelen betekent dat je deze app uitschakelt en verbergt op je apparaat." - "Meldingen uitschakelen?" + "App uitzetten" + "Als je deze app uitzet, werken Android en andere apps mogelijk niet meer zoals bedoeld. Je kunt deze app niet verwijderen omdat deze vooraf geïnstalleerd was op je apparaat. Door de app uit te zetten verberg je deze ook op je apparaat." + "Meldingen uitzetten?" "Store" "App-details" "App geïnstalleerd vanuit %1$s" @@ -2496,16 +2496,16 @@ "Je tablet kan de batterij niet normaal beheren omdat %1$s je tablet ingeschakeld houdt.\n\nAls je dit probleem wilt verhelpen, kun je %1$s stoppen.\n\nAls dit blijft gebeuren, moet je de app mogelijk verwijderen om de prestaties van de batterij te verbeteren." "Je apparaat kan de batterij niet normaal beheren omdat %1$s je apparaat ingeschakeld houdt.\n\nAls je dit probleem wilt verhelpen, kun je %1$s stoppen.\n\nAls dit blijft gebeuren, moet je de app mogelijk verwijderen om de prestaties van de batterij te verbeteren." "App stoppen" - "Achtergrondgebruik uitschakelen en app stoppen?" + "Niet meer op achtergrond gebruiken en app stoppen?" "Je telefoon kan de batterij niet normaal beheren omdat %1$s je telefoon ingeschakeld houdt.\n\nAls je dit probleem wilt verhelpen, kun je %1$s stoppen en voorkomen dat deze app op de achtergrond wordt uitgevoerd." "Je tablet kan de batterij niet normaal beheren omdat %1$s je tablet ingeschakeld houdt.\n\nAls je dit probleem wilt verhelpen, kun je %1$s stoppen en voorkomen dat deze app op de achtergrond wordt uitgevoerd." "Je apparaat kan de batterij niet normaal beheren omdat %1$s je apparaat ingeschakeld houdt.\n\nAls je dit probleem wilt verhelpen, kun je %1$s stoppen en voorkomen dat deze app op de achtergrond wordt uitgevoerd." - "Uitschakelen" - "Locatie uitschakelen?" - "Je telefoon kan de batterij niet normaal beheren omdat %1$s je locatie blijft opvragen wanneer je de app niet gebruikt.\n\nAls je dit probleem wilt verhelpen, kun je locatie uitschakelen voor deze app." - "Je tablet kan de batterij niet normaal beheren omdat %1$s je locatie blijft opvragen wanneer je de app niet gebruikt.\n\nAls je dit probleem wilt verhelpen, kun je locatie uitschakelen voor deze app." - "Je apparaat kan de batterij niet normaal beheren omdat %1$s je locatie blijft opvragen wanneer je de app niet gebruikt.\n\nAls je dit probleem wilt verhelpen, kun je locatie uitschakelen voor deze app." - "Uitschakelen" + "Uitzetten" + "Locatie uitzetten?" + "Je telefoon kan de batterij niet normaal beheren omdat %1$s je locatie blijft opvragen wanneer je de app niet gebruikt.\n\nAls je dit probleem wilt verhelpen, kun je locatie voor deze app uitzetten." + "Je tablet kan de batterij niet normaal beheren omdat %1$s je locatie blijft opvragen wanneer je de app niet gebruikt.\n\nAls je dit probleem wilt verhelpen, kun je locatie voor deze app uitzetten." + "Je apparaat kan de batterij niet normaal beheren omdat %1$s je locatie blijft opvragen wanneer je de app niet gebruikt.\n\nAls je dit probleem wilt verhelpen, kun je locatie voor deze app uitzetten." + "Uitzetten" "Scherm" "Zaklamp" "Camera" @@ -2600,7 +2600,7 @@ "Wordt ingeschakeld bij %1$s" "Een planning instellen" "Gebruiksduur van de batterij verlengen" - "Uitschakelen als opgeladen" + "Uitzetten na opladen" "Batterijbesparing wordt uitgeschakeld als je telefoon %1$s batterijlading heeft" "Batterijbesparing wordt uitgeschakeld wanneer je tablet %1$s batterijlading heeft" "Batterijbesparing wordt uitgeschakeld wanneer je apparaat %1$s batterijlading heeft" @@ -2721,9 +2721,9 @@ "Automatisch op afstand een back-up maken van apparaatgegevens (zoals wifi-wachtwoorden en gespreksgeschiedenis) en app-gegevens (zoals instellingen en bestanden opgeslagen door apps).\n\nAls je de functie voor automatische back-ups inschakelt, worden apparaat- en app-gegevens periodiek op afstand opgeslagen. App-gegevens kunnen gegevens omvatten die een app heeft opgeslagen (op basis van de instellingen van de ontwikkelaar), waaronder potentieel gevoelige gegevens als contacten, berichten en foto\'s." "Instellingen voor apparaatbeheer" "Apparaatbeheer-app" - "Deze apparaatbeheer-app uitschakelen" + "Deze apparaatbeheer-app uitzetten" "App verwijderen" - "Uitschakelen en verwijderen" + "Uitzetten en verwijderen" "Apparaatbeheer-apps" "Geen apparaatbeheer-apps beschikbaar" "Geen beschikbare trust-agents" @@ -2765,7 +2765,7 @@ "Werkprofiel verwijderen" "Achtergrondgegevens" "Onbeperkt gegevens synchroniseren, verzenden en ontvangen" - "Achtergrondgegevens uitschakelen?" + "Achtergrondgegevens uitzetten?" "Als je achtergrondgegevens uitschakelt, bespaar je acculading en wordt het datagebruik verlaagd. Sommige apps maken mogelijk nog steeds gebruik van de verbinding voor achtergrondgegevens." "Appgegevens automatisch synchr." "Synchroniseren AAN" @@ -2839,7 +2839,7 @@ "Voorgrond" "Achtergrond" "beperkt" - "Mobiele data uitschakelen?" + "Mobiele data uitzetten?" "Mobiele-datalimiet instellen" "4G-gegevenslimiet instellen" "2G-3G-gegevenslimiet instellen" @@ -2867,7 +2867,7 @@ "Auto-synchronisatie aanzetten?" "Wijzigingen die je op internet aanbrengt in je accounts, worden automatisch naar je telefoon gekopieerd.\n\nBij sommige accounts worden mogelijk ook de wijzigingen die je op de tablet aanbrengt, naar internet gekopieerd. Dit geldt bijvoorbeeld voor Google-accounts." "Wijzigingen die je op internet aanbrengt in je accounts, worden automatisch naar je telefoon gekopieerd.\n\nBij sommige accounts worden mogelijk ook de wijzigingen die je op de telefoon aanbrengt, naar internet gekopieerd. Dit geldt bijvoorbeeld voor Google-accounts." - "Auto-synchr. uitschakelen?" + "Auto-synchronisatie uitzetten?" "Hiermee beperk je data- en batterijgebruik. Je moet elk account echter handmatig synchroniseren om recente informatie te verzamelen. Je ontvangt geen meldingen wanneer er updates zijn." "Datum voor resetten gebruikscyclus" "Dag van elke maand:" @@ -2967,12 +2967,12 @@ "Er ontbreekt een certificaat. Bewerk het profiel." "Systeem" "Gebruiker" - "Uitschakelen" + "Uitzetten" "Aanzetten" "Verwijderen" "Vertrouwen" "Het CA-certificaat voor het systeem aanzetten?" - "Het CA-certificaat voor het systeem uitschakelen?" + "CA-certificaat voor systeem uitzetten?" "CA-certificaat van gebruiker permanent verwijderen?" "Dit inlogitem bevat:" "één gebruikerssleutel" @@ -3177,8 +3177,8 @@ "Andere instellingen voor bellen" "Voorrang voorkeursnetwerk" "Broadcast v. netwerkn. uitsch." - "\'Broadcast van netwerknaam uitschakelen\' voorkomt dat derden toegang krijgen tot je netwerkgegevens." - "\'Broadcast van netwerknaam uitschakelen\' voorkomt automatische verbinding met verborgen netwerken." + "Broadcast van netwerknaam uitzetten voorkomt dat derden toegang krijgen tot je netwerkgegevens." + "Broadcast van netwerknaam uitzetten voorkomt automatische verbinding met verborgen netwerken." "%1$d dBm %2$d asu" "Simkaarten gewijzigd." "Tik om in te stellen" @@ -3400,7 +3400,7 @@ "Toevoegen" "Aanzetten" "Nu aanzetten" - "Nu uitschakelen" + "Nu uitzetten" "\'Niet storen\' is ingeschakeld tot %s" "\'Niet storen\' blijft ingeschakeld totdat je deze functie uitschakelt" "\'Niet storen\' is automatisch ingeschakeld door een planning (%s)" @@ -3504,7 +3504,7 @@ "Niets kan als bubbel worden getoond" "Gesprekken" "Alle gesprekken kunnen als bubbel worden getoond, behalve" - "Bubbels uitschakelen voor dit gesprek" + "Bubbels voor dit gesprek uitzetten" "Bubbels aanzetten voor dit gesprek" "Swipeacties" "Swipe naar rechts om te sluiten of naar links voor het menu" @@ -3618,11 +3618,11 @@ "Er zijn geen geïnstalleerde apps die toegang tot meldingen hebben aangevraagd." "Toegang tot meldingen toestaan" "Toegang tot meldingen toestaan voor %1$s?" - "%1$s kan alle meldingen lezen, waaronder persoonlijke informatie zoals contactnamen en de tekst van berichten die je ontvangt. Deze app kan deze meldingen ook sluiten of acties uitvoeren voor knoppen in meldingen, waaronder het beantwoorden van oproepen. \n\nHierdoor kan de app ook \'Niet storen\' in- of uitschakelen en gerelateerde instellingen wijzigen." + "%1$s kan alle meldingen lezen, waaronder persoonlijke informatie zoals contactnamen en de tekst van berichten die je ontvangt. Deze app kan ook deze meldingen sluiten of acties uitvoeren voor knoppen in meldingen, waaronder het beantwoorden van oproepen. \n\nHierdoor kan de app ook Niet storen aan- of uitzetten en gerelateerde instellingen wijzigen." "Toegang tot meldingen toestaan voor %1$s?" - "%1$s kan alle meldingen lezen, waaronder persoonlijke informatie zoals contactnamen en de tekst van berichten die je ontvangt. Deze app kan deze meldingen ook sluiten of acties uitvoeren voor knoppen in meldingen, waaronder het beantwoorden van oproepen. \n\nHierdoor kan de app ook \'Niet storen\' in- of uitschakelen en gerelateerde instellingen wijzigen." + "%1$s kan alle meldingen lezen, waaronder persoonlijke informatie zoals contactnamen en de tekst van berichten die je ontvangt. Deze app kan ook deze meldingen sluiten of acties uitvoeren voor knoppen in meldingen, waaronder het beantwoorden van oproepen. \n\nHierdoor kan de app ook Niet storen aan- of uitzetten en gerelateerde instellingen wijzigen." "Als je toegang tot meldingen uitschakelt voor %1$s, kan toegang tot \'Niet storen\' ook worden uitgeschakeld." - "Uitschakelen" + "Uitzetten" "Annuleren" "VR-helperservices" "Er zijn geen geïnstalleerde apps die hebben gevraagd om te worden uitgevoerd als VR-helperservices." @@ -4127,7 +4127,7 @@ "Maximaal gebruik" "Geen gegevens gebruikt" "Toegang tot \'Niet storen\' toestaan voor %1$s?" - "De app kan de functie Niet storen in-/uitschakelen en wijzigingen aanbrengen in gerelateerde instellingen." + "De app kan de functie Niet storen aan- of uitzetten en gerelateerde instellingen wijzigen." "Moet ingeschakeld blijven omdat toegang tot meldingen is ingeschakeld" "Toegang tot \'Niet storen\' intrekken voor %1$s?" "Alle \'Niet storen\'-regels die door deze app zijn gemaakt, worden verwijderd." @@ -4225,7 +4225,7 @@ "Je beheerder kan apps en gegevens bijhouden en beheren die aan je werkprofiel zijn gekoppeld (waaronder instellingen, rechten, zakelijke toegang, netwerkactiviteit en locatiegegevens van het apparaat)." "Je beheerder kan apps en gegevens bijhouden en beheren die aan deze gebruiker zijn gekoppeld (waaronder instellingen, rechten, zakelijke toegang, netwerkactiviteit en locatiegegevens van het apparaat)." "Je beheerder kan apps en gegevens bijhouden en beheren die aan dit apparaat zijn gekoppeld (waaronder instellingen, rechten, zakelijke toegang, netwerkactiviteit en locatiegegevens van het apparaat)." - "Uitschakelen" + "Uitzetten" "Aanzetten" "Tonen" "Verbergen" @@ -4349,7 +4349,7 @@ "Batterijbesparing wordt ingeschakeld bij %1$s" "Uit" "Nu aanzetten" - "Nu uitschakelen" + "Nu uitzetten" "Batterijoptimalisatie wordt niet gebruikt" "Het typen van reacties of andere tekst in meldingen blokkeren als het apparaat is vergrendeld" "Standaard spellingcontrole" @@ -4419,7 +4419,7 @@ "Probeer \'Donker thema\'" "Helpt de batterijduur te verlengen" "Ontwikkelaarstegels voor Snelle instellingen" - "Time-out voor uitschakelen ADB-machtiging" + "Time-out voor uitzetten ADB-machtiging" "Schakel het automatisch intrekken van ADB-rechten uit voor systemen die niet binnen de standaardperiode (zeven dagen) of de door de gebruiker ingestelde periode (minimaal één dag) opnieuw verbinding hebben gemaakt." "Winscope-tracering" "Sensoren uit" @@ -4627,7 +4627,7 @@ "Uit" "Aan" "Instant-app" - "Opslagbeheer uitschakelen?" + "Opslagbeheer uitzetten?" "Film- en tv-apps" "Gegevens voor providerregistratie" "Providerregistratie activeren" @@ -4694,7 +4694,7 @@ "De batterijduur van het apparaat verbeteren" "De batterijduur van de telefoon verbeteren" - "Ringtone uitschakelen" + "Ringtone uitzetten" "Druk tegelijkertijd op de aan/uit-knop en de knop \'Volume omhoog\' voor" "Snelkoppeling om ringtone uit te schakelen" "Trillen" @@ -4948,7 +4948,7 @@ "Casten stoppen" - "VoLTE uitschakelen?" + "VoLTE uitzetten?" "Hiermee wordt ook de 5G-verbinding uitgeschakeld.\nTijdens een audiogesprek kun je internet niet gebruiken en werken bepaalde apps mogelijk niet." "Als je twee simkaarten gebruikt, is deze telefoon beperkt tot 4G. ""Meer informatie" "Als je twee simkaarten gebruikt, is deze tablet beperkt tot 4G. ""Meer informatie" diff --git a/res/values-or/strings.xml b/res/values-or/strings.xml index 1827119b510..855ee065165 100644 --- a/res/values-or/strings.xml +++ b/res/values-or/strings.xml @@ -4114,7 +4114,7 @@ "ଗତ 3 ଘଣ୍ଟାରେ କୌଣସି ମେମୋରୀ ବ୍ୟବହାର କରାଯାଇ ନାହିଁ" "ହାରାହାରି ବ୍ୟବହାର ଅନୁଯାୟୀ ସଜାନ୍ତୁ" "ସର୍ବାଧିକ ବ୍ୟବହାର କ୍ରମରେ ରଖନ୍ତୁ" - "କାର୍ଯ୍ୟକାରିତା" + "ପରଫରମାନ୍ସ" "ମୋଟ ମେମୋରୀ" "(%) ହାରାହାରି ବ୍ୟବହାର" "ଖାଲି" diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml index b03d54441a2..4ff7d917591 100644 --- a/res/values-pl/strings.xml +++ b/res/values-pl/strings.xml @@ -4254,7 +4254,7 @@ "Brak wykorzystania pamięci w ciągu ostatnich 3 godzin" "Sortuj wg średniego użycia" "Sortuj wg maksymalnego użycia" - "Skuteczność" + "Wydajność" "Pamięć ogółem" "Średnie użycie (%)" "Wolna" diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml index c20a040f8cd..8d02f490824 100644 --- a/res/values-sw/strings.xml +++ b/res/values-sw/strings.xml @@ -1726,7 +1726,7 @@ "Ruhusu programu zitumie GPS kwenye simu yako ili zitambue mahali ulipo" "Tumia GPS iliyosaidiwa" "Tumia seva ili kusaidia GPS (toa tiki ili kupunguza utumiaji wa mtandao)" - "Tumia seva ili kusaidia GPS (Toa tiki ili kuboresha utendajikazi wa GPS)" + "Tumia seva ili kusaidia GPS (Toa tiki ili kuboresha utendaji wa GPS)" "Mahali na Utafutaji wa Google" "Ruhusu Google itumie eneo lako kuboresha matokeo ya utafutaji na huduma zingine" "Ufikiaji eneo langu" @@ -2122,7 +2122,7 @@ "Gusa vipengee kwenye skrini yako ili usikie vikisoma kwa sauti" "Mapendeleo ya manukuu" "Ukuzaji" - "Eneo la ukuzaji" + "Ukuzaji wa eneo" "Kuwasha hali ya ukuzaji" "Chagua maeneo ya ukuzaji ambayo ungependa kutumia unapokuza skrini" "Skrini nzima" diff --git a/res/values-ta/strings.xml b/res/values-ta/strings.xml index fdc07ae951c..c3c4408cb8a 100644 --- a/res/values-ta/strings.xml +++ b/res/values-ta/strings.xml @@ -2591,7 +2591,7 @@ "புதுப்பி" "மீடியாசர்வர்" "பயன்பாட்டிற்கான மேம்படுத்தல்" - "பேட்டரி சேமிப்பான்" + "பேட்டரி சேமிப்பு" "தானாகவே ஆன் செய்" "திட்டமிட்ட பேட்டரி சேமிப்பான் இல்லை" "வழக்கமான செயல்பாட்டின் அடிப்படையிலானது" @@ -4114,7 +4114,7 @@ "கடந்த 3 மணிநேரத்தில் நினைவகம் பயன்படுத்தப்படவில்லை" "சராசரி உபயோகத்தின்படி வரிசைப்படுத்து" "அதிகபட்ச உபயோகத்தின்படி வரிசைப்படுத்து" - "செயல்திறன்" + "உயர் தரம்" "மொத்த நினைவகம்" "பயன்படுத்தியது (%)" "இருப்பது" diff --git a/res/values-ur/strings.xml b/res/values-ur/strings.xml index c4b661f1b76..e7aa37c1a4f 100644 --- a/res/values-ur/strings.xml +++ b/res/values-ur/strings.xml @@ -2122,9 +2122,9 @@ "آئٹمز کو بہ آواز بلند پڑھتے ہوئے سننے کیلئے اپنی اسکرین پر ان آئٹمز کو تھپتھپائیں" "کیپشن کی ترجیحات" "میگنیفکیشن" - "میگنیفکیشن کی جگہ" + "میگنیفکیشن ایریا" "میگنیفکیشن انیبل" - "اسکرین بڑا کرتے وقت آپ جس میگنیفکیشن جگہ(جگہیں) استعمال کرنا چاہتے ہیں وہ منتخب کریں" + "اسکرین بڑا کرتے وقت آپ جس میگنیفکیشن ایریا(ز) استعمال کرنا چاہتے ہیں وہ منتخب کریں" "پوری اسکرین" "اسکرین کا حصہ" "مکمل اسکرین اور اسکرین کا حصہ" diff --git a/res/values-uz/strings.xml b/res/values-uz/strings.xml index 99eca81df5d..c39a125edf2 100644 --- a/res/values-uz/strings.xml +++ b/res/values-uz/strings.xml @@ -3593,7 +3593,7 @@ "Tovush yoki tebranishsiz" "Tovush yoki tebranishsiz hamda suhbatlar ruknining pastida chiqadi" "Telefon sozlamalari asosida jiringlashi yoki tebranishi mumkin" - "Telefon qulfi yechilsa, bildirishnomalar ekranning yuqori qismida banner sifatida chiqsin" + "Telefon ochiqligida bildirishnomalar ekranning yuqori qismida banner sifatida chiqadi" "Barcha %1$s bildirishnomalari" "Barcha %1$s bildirishnomalari" "Moslashuvchan bildirishnomalar" diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml index 2b8a69b605c..b9b089954ba 100644 --- a/res/values-vi/strings.xml +++ b/res/values-vi/strings.xml @@ -4834,7 +4834,7 @@ "Tên điểm truy cập" "Không sử dụng được khi kết nối với %1$s" "Xem thêm" - "Xem bớt" + "Ẩn bớt" "Kết nối với thiết bị" "Ứng dụng %1$s muốn dùng mạng Wi-Fi tạm thời để kết nối với thiết bị của bạn" "Không tìm thấy thiết bị nào. Đảm bảo rằng các thiết bị đang bật và sẵn sàng kết nối." diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml index 84e3c5dcea8..51b8af0cef8 100644 --- a/res/values-zh-rTW/strings.xml +++ b/res/values-zh-rTW/strings.xml @@ -2591,7 +2591,7 @@ "重新整理" "媒體伺服器" "應用程式最佳化" - "省電模式" + "節約耗電量" "自動開啟" "未設定時間表" "根據你平常充電的時間" From 0cbd13d0dfbcd9872a5ae11bfd9ecd1633a0c5ce Mon Sep 17 00:00:00 2001 From: Mill Chen Date: Tue, 30 Mar 2021 03:12:10 +0800 Subject: [PATCH 21/28] Update lock pattern for landscape - Using GlifLayout api to set title and description - Hide the header area for landscape mode Bug: 179317709 Test: visual verified 1) Settings -> Security -> Screen lock -> Pattern 2) Try setting screen lock if there's no pattern 3) Rotate the screen during the settings flow and see if there's an empty space leaving in the left side 4) Settings -> Security -> Fingerprint 5) Device will display a confirm lock pattern page 6) Rotate the screen and see if there's an empty space left Change-Id: I16f614eceb873f40b7c48583223aedcbcbd7447d --- res/layout-land/confirm_lock_pattern.xml | 4 +-- .../confirm_lock_pattern_normal.xml | 4 +-- res/layout/confirm_lock_pattern_base.xml | 4 +-- .../confirm_lock_pattern_normal_base.xml | 4 +-- .../settings/password/ChooseLockPattern.java | 7 ++++ .../settings/password/ConfirmLockPattern.java | 36 +++++++++++-------- 6 files changed, 37 insertions(+), 22 deletions(-) diff --git a/res/layout-land/confirm_lock_pattern.xml b/res/layout-land/confirm_lock_pattern.xml index 1fd6824ae5f..1126052df47 100644 --- a/res/layout-land/confirm_lock_pattern.xml +++ b/res/layout-land/confirm_lock_pattern.xml @@ -48,13 +48,13 @@ android:src="@drawable/ic_enterprise" /> > result = new ArrayList<>(); - result.add(new ArrayList<>(Collections.singletonList(mHeaderTextView))); - result.add(new ArrayList<>(Collections.singletonList(mDetailsTextView))); + result.add(new ArrayList<>(Collections.singletonList(mGlifLayout.getHeaderTextView()))); + result.add(new ArrayList<>( + Collections.singletonList(mGlifLayout.getDescriptionTextView()))); if (mCancelButton.getVisibility() == View.VISIBLE) { result.add(new ArrayList<>(Collections.singletonList(mCancelButton))); } @@ -306,14 +314,14 @@ public class ConfirmLockPattern extends ConfirmDeviceCredentialBaseActivity { switch (stage) { case NeedToUnlock: if (mHeaderText != null) { - mHeaderTextView.setText(mHeaderText); + mGlifLayout.setHeaderText(mHeaderText); } else { - mHeaderTextView.setText(getDefaultHeader()); + mGlifLayout.setHeaderText(getDefaultHeader()); } if (mDetailsText != null) { - mDetailsTextView.setText(mDetailsText); + mGlifLayout.setDescriptionText(mDetailsText); } else { - mDetailsTextView.setText(getDefaultDetails()); + mGlifLayout.setDescriptionText(getDefaultDetails()); } mErrorTextView.setText(""); updateErrorMessage( @@ -341,7 +349,7 @@ public class ConfirmLockPattern extends ConfirmDeviceCredentialBaseActivity { // Always announce the header for accessibility. This is a no-op // when accessibility is disabled. - mHeaderTextView.announceForAccessibility(mHeaderTextView.getText()); + mGlifLayout.getHeaderTextView().announceForAccessibility(mGlifLayout.getHeaderText()); } private int getDefaultHeader() { From ace3cb81222ad47280689ce0b435ec071d4c6f54 Mon Sep 17 00:00:00 2001 From: Sunny Shao Date: Sat, 27 Mar 2021 15:43:33 +0800 Subject: [PATCH 22/28] Fix the "Add link" permanent disabled problem - Update setEnabled of the "Add link" while UI change. Fixes: 183797700 Test: manual test Change-Id: Ia6dad313ab752ccbe7313f6a4cdf759b02dff728 --- .../intentpicker/AppLaunchSettings.java | 33 +++++++++++-------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/src/com/android/settings/applications/intentpicker/AppLaunchSettings.java b/src/com/android/settings/applications/intentpicker/AppLaunchSettings.java index 7d6abe7ca0f..a2771697373 100644 --- a/src/com/android/settings/applications/intentpicker/AppLaunchSettings.java +++ b/src/com/android/settings/applications/intentpicker/AppLaunchSettings.java @@ -86,6 +86,7 @@ public class AppLaunchSettings extends AppInfoBase implements private ClearDefaultsPreference mClearDefaultsPreference; private MainSwitchPreference mMainSwitchPreference; + private Preference mAddLinkPreference; private PreferenceCategory mMainPreferenceCategory; private PreferenceCategory mSelectedLinksPreferenceCategory; private PreferenceCategory mOtherDefaultsPreferenceCategory; @@ -155,6 +156,7 @@ public class AppLaunchSettings extends AppInfoBase implements } setDomainVerificationUserSelection(userState.getIdentifier(), domainSet, /* enabled= */ false); + mAddLinkPreference.setEnabled(isAddLinksNotEmpty()); } return true; } @@ -209,8 +211,8 @@ public class AppLaunchSettings extends AppInfoBase implements initMainSwitchAndCategories(); if (canUpdateMainSwitchAndCategories()) { initVerifiedLinksPreference(); - addSelectedLinksPreference(); initAddLinkPreference(); + addSelectedLinksPreference(); initFooter(); } } @@ -293,7 +295,7 @@ public class AppLaunchSettings extends AppInfoBase implements } /** Add selected links items */ - public void addSelectedLinksPreference() { + void addSelectedLinksPreference() { if (getLinksNumber(DOMAIN_STATE_SELECTED) == 0) { return; } @@ -303,22 +305,25 @@ public class AppLaunchSettings extends AppInfoBase implements for (String host : selectedLinks) { generateCheckBoxPreference(mSelectedLinksPreferenceCategory, host); } + mAddLinkPreference.setEnabled(isAddLinksNotEmpty()); } /** Initialize add link preference */ private void initAddLinkPreference() { - final Preference addLinkPreference = findPreference(ADD_LINK_PREF_KEY); - if (addLinkPreference != null) { - addLinkPreference.setEnabled(getLinksNumber(DOMAIN_STATE_NONE) > 0); - addLinkPreference.setOnPreferenceClickListener(preference -> { - final int stateNoneLinksNo = getLinksNumber(DOMAIN_STATE_NONE); - IntentPickerUtils.logd("The number of the state none links: " + stateNoneLinksNo); - if (stateNoneLinksNo > 0) { - showProgressDialogFragment(); - } - return true; - }); - } + mAddLinkPreference = findPreference(ADD_LINK_PREF_KEY); + mAddLinkPreference.setEnabled(isAddLinksNotEmpty()); + mAddLinkPreference.setOnPreferenceClickListener(preference -> { + final int stateNoneLinksNo = getLinksNumber(DOMAIN_STATE_NONE); + IntentPickerUtils.logd("The number of the state none links: " + stateNoneLinksNo); + if (stateNoneLinksNo > 0) { + showProgressDialogFragment(); + } + return true; + }); + } + + private boolean isAddLinksNotEmpty() { + return getLinksNumber(DOMAIN_STATE_NONE) > 0; } private void showProgressDialogFragment() { From c6263806892989e7c1226a036306819796295d3c Mon Sep 17 00:00:00 2001 From: Arc Wang Date: Wed, 24 Mar 2021 11:14:04 +0800 Subject: [PATCH 23/28] Show "Files" category for public storage in Storage Settings Users can click this preference to see public storage files in external file browsers. Bug: 170918505 Test: make RunSettingsRoboTests ROBOTEST_FILTER=StorageItemPreferenceControllerTest manual Select private storage and public storage and observe UI Change-Id: If3f0d59b2ebf941d70e81e60c4c2015b80e7cf33 --- res/xml/storage_dashboard_fragment.xml | 29 ++++-- .../deviceinfo/StorageDashboardFragment.java | 10 +- .../deviceinfo/storage/StorageEntry.java | 8 ++ .../StorageItemPreferenceController.java | 93 ++++++++++++------- .../StorageItemPreferenceControllerTest.java | 46 +++++++++ .../deviceinfo/storage/StorageEntryTest.java | 18 ++++ 6 files changed, 157 insertions(+), 47 deletions(-) diff --git a/res/xml/storage_dashboard_fragment.xml b/res/xml/storage_dashboard_fragment.xml index 076405fa00e..83972e35b92 100644 --- a/res/xml/storage_dashboard_fragment.xml +++ b/res/xml/storage_dashboard_fragment.xml @@ -44,38 +44,51 @@ android:title="@string/storage_free_up_space_title" android:summary="@string/storage_free_up_space_summary"/> + + android:icon="@drawable/ic_photo_library" + android:order="101"/> + android:icon="@drawable/ic_local_movies" + android:order="102"/> + android:icon="@drawable/ic_media_stream" + android:order="103"/> + android:icon="@drawable/ic_storage_apps" + android:order="104"/> + android:icon="@drawable/ic_videogame_vd_theme_24" + android:order="105"/> + android:icon="@drawable/ic_folder_vd_theme_24" + android:order="106"/> + android:icon="@drawable/ic_system_update" + android:order="107"/> + android:icon="@drawable/ic_trash_can" + android:order="108"/> , Parcelable { return mVolumeInfo == null ? false : mVolumeInfo.getType() == VolumeInfo.TYPE_PUBLIC; } + /** + * Stub volume is a volume that is maintained by external party such as the ChromeOS processes + * in ARC++. + */ + public boolean isStub() { + return mVolumeInfo == null ? false : mVolumeInfo.getType() == VolumeInfo.TYPE_STUB; + } + /** Returns description. */ public String getDescription() { if (isVolumeInfo()) { diff --git a/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceController.java b/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceController.java index 7d7768799d8..e5259f996e3 100644 --- a/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceController.java +++ b/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceController.java @@ -69,6 +69,8 @@ public class StorageItemPreferenceController extends AbstractPreferenceControlle private static final String SYSTEM_FRAGMENT_TAG = "SystemInfo"; + @VisibleForTesting + static final String PUBLIC_STORAGE_KEY = "pref_public_storage"; @VisibleForTesting static final String IMAGES_KEY = "pref_images"; @VisibleForTesting @@ -103,9 +105,11 @@ public class StorageItemPreferenceController extends AbstractPreferenceControlle private long mUsedBytes; private long mTotalSize; - private List mStorageItemPreferences; + private List mPrivateStorageItemPreferences; private PreferenceScreen mScreen; @VisibleForTesting + Preference mPublicStoragePreference; + @VisibleForTesting StorageItemPreference mImagesPreference; @VisibleForTesting StorageItemPreference mVideosPreference; @@ -167,6 +171,9 @@ public class StorageItemPreferenceController extends AbstractPreferenceControlle return false; } switch (preference.getKey()) { + case PUBLIC_STORAGE_KEY: + launchPublicStorageIntent(); + return true; case IMAGES_KEY: launchImagesIntent(); return true; @@ -210,37 +217,45 @@ public class StorageItemPreferenceController extends AbstractPreferenceControlle public void setVolume(VolumeInfo volume) { mVolume = volume; - final boolean isValidVolume = isValidVolume(); - setCategoryPreferencesVisibility(isValidVolume); - if (isValidVolume) { - updateCategoryPreferencesOrder(); - } + updateCategoryPreferencesVisibility(); + updatePrivateStorageCategoryPreferencesOrder(); } // Stats data is only available on private volumes. - private boolean isValidVolume() { + private boolean isValidPrivateVolume() { return mVolume != null && mVolume.getType() == VolumeInfo.TYPE_PRIVATE && (mVolume.getState() == VolumeInfo.STATE_MOUNTED || mVolume.getState() == VolumeInfo.STATE_MOUNTED_READ_ONLY); } - private void setCategoryPreferencesVisibility(boolean visible) { + private boolean isValidPublicVolume() { + return mVolume != null + && (mVolume.getType() == VolumeInfo.TYPE_PUBLIC + || mVolume.getType() == VolumeInfo.TYPE_STUB) + && (mVolume.getState() == VolumeInfo.STATE_MOUNTED + || mVolume.getState() == VolumeInfo.STATE_MOUNTED_READ_ONLY); + } + + private void updateCategoryPreferencesVisibility() { if (mScreen == null) { return; } - mImagesPreference.setVisible(visible); - mVideosPreference.setVisible(visible); - mAudiosPreference.setVisible(visible); - mAppsPreference.setVisible(visible); - mGamesPreference.setVisible(visible); - mDocumentsAndOtherPreference.setVisible(visible); - mSystemPreference.setVisible(visible); + mPublicStoragePreference.setVisible(isValidPublicVolume()); + + final boolean privateStoragePreferencesVisible = isValidPrivateVolume(); + mImagesPreference.setVisible(privateStoragePreferencesVisible); + mVideosPreference.setVisible(privateStoragePreferencesVisible); + mAudiosPreference.setVisible(privateStoragePreferencesVisible); + mAppsPreference.setVisible(privateStoragePreferencesVisible); + mGamesPreference.setVisible(privateStoragePreferencesVisible); + mDocumentsAndOtherPreference.setVisible(privateStoragePreferencesVisible); + mSystemPreference.setVisible(privateStoragePreferencesVisible); // TODO(b/170918505): Shows trash category after trash category feature complete. mTrashPreference.setVisible(false); - if (visible) { + if (privateStoragePreferencesVisible) { final VolumeInfo sharedVolume = mSvp.findEmulatedForPrivate(mVolume); // If we don't have a shared volume for our internal storage (or the shared volume isn't // mounted as readable for whatever reason), we should hide the File preference. @@ -250,22 +265,22 @@ public class StorageItemPreferenceController extends AbstractPreferenceControlle } } - private void updateCategoryPreferencesOrder() { - if (mScreen == null) { + private void updatePrivateStorageCategoryPreferencesOrder() { + if (mScreen == null || !isValidPrivateVolume()) { return; } - if (mStorageItemPreferences == null) { - mStorageItemPreferences = new ArrayList<>(); + if (mPrivateStorageItemPreferences == null) { + mPrivateStorageItemPreferences = new ArrayList<>(); - mStorageItemPreferences.add(mImagesPreference); - mStorageItemPreferences.add(mVideosPreference); - mStorageItemPreferences.add(mAudiosPreference); - mStorageItemPreferences.add(mAppsPreference); - mStorageItemPreferences.add(mGamesPreference); - mStorageItemPreferences.add(mDocumentsAndOtherPreference); - mStorageItemPreferences.add(mSystemPreference); - mStorageItemPreferences.add(mTrashPreference); + mPrivateStorageItemPreferences.add(mImagesPreference); + mPrivateStorageItemPreferences.add(mVideosPreference); + mPrivateStorageItemPreferences.add(mAudiosPreference); + mPrivateStorageItemPreferences.add(mAppsPreference); + mPrivateStorageItemPreferences.add(mGamesPreference); + mPrivateStorageItemPreferences.add(mDocumentsAndOtherPreference); + mPrivateStorageItemPreferences.add(mSystemPreference); + mPrivateStorageItemPreferences.add(mTrashPreference); } mScreen.removePreference(mImagesPreference); mScreen.removePreference(mVideosPreference); @@ -277,10 +292,10 @@ public class StorageItemPreferenceController extends AbstractPreferenceControlle mScreen.removePreference(mTrashPreference); // Sort display order by size. - Collections.sort(mStorageItemPreferences, + Collections.sort(mPrivateStorageItemPreferences, Comparator.comparingLong(StorageItemPreference::getStorageSize)); int orderIndex = LAST_STORAGE_CATEGORY_PREFERENCE_ORDER; - for (StorageItemPreference preference : mStorageItemPreferences) { + for (StorageItemPreference preference : mPrivateStorageItemPreferences) { preference.setOrder(orderIndex--); mScreen.addPreference(preference); } @@ -292,6 +307,7 @@ public class StorageItemPreferenceController extends AbstractPreferenceControlle public void setUserId(UserHandle userHandle) { mUserId = userHandle.getIdentifier(); + tintPreference(mPublicStoragePreference); tintPreference(mImagesPreference); tintPreference(mVideosPreference); tintPreference(mAudiosPreference); @@ -320,6 +336,7 @@ public class StorageItemPreferenceController extends AbstractPreferenceControlle @Override public void displayPreference(PreferenceScreen screen) { mScreen = screen; + mPublicStoragePreference = screen.findPreference(PUBLIC_STORAGE_KEY); mImagesPreference = screen.findPreference(IMAGES_KEY); mVideosPreference = screen.findPreference(VIDEOS_KEY); mAudiosPreference = screen.findPreference(AUDIOS_KEY); @@ -329,11 +346,8 @@ public class StorageItemPreferenceController extends AbstractPreferenceControlle mSystemPreference = screen.findPreference(SYSTEM_KEY); mTrashPreference = screen.findPreference(TRASH_KEY); - final boolean isValidVolume = isValidVolume(); - setCategoryPreferencesVisibility(isValidVolume); - if (isValidVolume) { - updateCategoryPreferencesOrder(); - } + updateCategoryPreferencesVisibility(); + updatePrivateStorageCategoryPreferencesOrder(); } public void onLoadFinished(SparseArray result, @@ -371,7 +385,7 @@ public class StorageItemPreferenceController extends AbstractPreferenceControlle mSystemPreference.setStorageSize(systemSize, mTotalSize); } - updateCategoryPreferencesOrder(); + updatePrivateStorageCategoryPreferencesOrder(); } public void setUsedSize(long usedSizeBytes) { @@ -382,6 +396,13 @@ public class StorageItemPreferenceController extends AbstractPreferenceControlle mTotalSize = totalSizeBytes; } + private void launchPublicStorageIntent() { + final Intent intent = mVolume.buildBrowseIntent(); + if (intent != null) { + mContext.startActivity(intent); + } + } + // TODO(b/183078080): To simplify StorageItemPreferenceController, move launchxxxIntent to a // utility object. private void launchImagesIntent() { diff --git a/tests/robotests/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceControllerTest.java index 6f9c4514c69..b7bf7f56606 100644 --- a/tests/robotests/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceControllerTest.java @@ -104,6 +104,8 @@ public class StorageItemPreferenceControllerTest { } private PreferenceScreen getPreferenceScreen() { + final StorageItemPreference publicStorage = spy(new StorageItemPreference(mContext)); + publicStorage.setIcon(R.drawable.ic_folder_vd_theme_24); final StorageItemPreference images = spy(new StorageItemPreference(mContext)); images.setIcon(R.drawable.ic_photo_library); final StorageItemPreference videos = spy(new StorageItemPreference(mContext)); @@ -122,6 +124,8 @@ public class StorageItemPreferenceControllerTest { trash.setIcon(R.drawable.ic_trash_can); final PreferenceScreen screen = mock(PreferenceScreen.class); + when(screen.findPreference(eq(StorageItemPreferenceController.PUBLIC_STORAGE_KEY))) + .thenReturn(publicStorage); when(screen.findPreference(eq(StorageItemPreferenceController.IMAGES_KEY))) .thenReturn(images); when(screen.findPreference(eq(StorageItemPreferenceController.VIDEOS_KEY))) @@ -148,6 +152,24 @@ public class StorageItemPreferenceControllerTest { .isEqualTo(mContext.getString(R.string.memory_calculating_size)); } + @Test + public void launchPublicStorageIntent_nonNullBrowseIntent_settingsIntent() { + final String fakeBrowseAction = "FAKE_BROWSE_ACTION"; + final Intent fakeBrowseIntent = new Intent(fakeBrowseAction); + // mContext is not the activity, add FLAG_ACTIVITY_NEW_TASK to avoid AndroidRuntimeException + // during this test. + fakeBrowseIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + when(mVolume.buildBrowseIntent()).thenReturn(fakeBrowseIntent); + mPreference.setKey(StorageItemPreferenceController.PUBLIC_STORAGE_KEY); + mController.handlePreferenceTreeClick(mPreference); + + final ArgumentCaptor argumentCaptor = ArgumentCaptor.forClass(Intent.class); + verify(mContext).startActivity(argumentCaptor.capture()); + + final Intent intent = argumentCaptor.getValue(); + assertThat(intent.getAction()).isEqualTo(fakeBrowseAction); + } + @Test public void launchImagesIntent_resolveActionViewNull_settingsIntent() { mPreference.setKey(StorageItemPreferenceController.IMAGES_KEY); @@ -191,6 +213,7 @@ public class StorageItemPreferenceControllerTest { mController.setVolume(null); + assertThat(mController.mPublicStoragePreference.isVisible()).isFalse(); assertThat(mController.mImagesPreference.isVisible()).isFalse(); assertThat(mController.mVideosPreference.isVisible()).isFalse(); assertThat(mController.mAudiosPreference.isVisible()).isFalse(); @@ -347,6 +370,7 @@ public class StorageItemPreferenceControllerTest { mController.setUserId(new UserHandle(10)); + verify(mController.mPublicStoragePreference, times(2)).setIcon(nullable(Drawable.class)); verify(mController.mImagesPreference, times(2)).setIcon(nullable(Drawable.class)); verify(mController.mVideosPreference, times(2)).setIcon(nullable(Drawable.class)); verify(mController.mAudiosPreference, times(2)).setIcon(nullable(Drawable.class)); @@ -418,4 +442,26 @@ public class StorageItemPreferenceControllerTest { assertThat(mController.mDocumentsAndOtherPreference.isVisible()).isTrue(); } + + @Test + public void setVolume_publicStorage_showFilePreference() { + // This will hide it initially. + mController.displayPreference(mPreferenceScreen); + when(mVolume.getType()).thenReturn(VolumeInfo.TYPE_PUBLIC); + when(mVolume.getState()).thenReturn(VolumeInfo.STATE_MOUNTED); + when(mVolume.isMountedReadable()).thenReturn(true); + + // And we bring it back. + mController.setVolume(mVolume); + + assertThat(mController.mPublicStoragePreference.isVisible()).isTrue(); + assertThat(mController.mImagesPreference.isVisible()).isFalse(); + assertThat(mController.mVideosPreference.isVisible()).isFalse(); + assertThat(mController.mAudiosPreference.isVisible()).isFalse(); + assertThat(mController.mAppsPreference.isVisible()).isFalse(); + assertThat(mController.mGamesPreference.isVisible()).isFalse(); + assertThat(mController.mDocumentsAndOtherPreference.isVisible()).isFalse(); + assertThat(mController.mSystemPreference.isVisible()).isFalse(); + assertThat(mController.mTrashPreference.isVisible()).isFalse(); + } } diff --git a/tests/unit/src/com/android/settings/deviceinfo/storage/StorageEntryTest.java b/tests/unit/src/com/android/settings/deviceinfo/storage/StorageEntryTest.java index cf1b6b2c8ec..3cd35395e01 100644 --- a/tests/unit/src/com/android/settings/deviceinfo/storage/StorageEntryTest.java +++ b/tests/unit/src/com/android/settings/deviceinfo/storage/StorageEntryTest.java @@ -208,6 +208,24 @@ public class StorageEntryTest { assertThat(privateStorage.isPrivate()).isTrue(); } + @Test + public void isPublic_prublicVolume_shouldReturnTrue() { + final VolumeInfo publicVolumeInfo = mock(VolumeInfo.class); + final StorageEntry publicStorage = new StorageEntry(mContext, publicVolumeInfo); + when(publicVolumeInfo.getType()).thenReturn(VolumeInfo.TYPE_PUBLIC); + + assertThat(publicStorage.isPublic()).isTrue(); + } + + @Test + public void isStub_stubVolume_shouldReturnTrue() { + final VolumeInfo stubVolumeInfo = mock(VolumeInfo.class); + final StorageEntry stubStorage = new StorageEntry(mContext, stubVolumeInfo); + when(stubVolumeInfo.getType()).thenReturn(VolumeInfo.TYPE_STUB); + + assertThat(stubStorage.isStub()).isTrue(); + } + @Test public void isPrivate_nonVolumeInfo_shouldReturnFalse() { final DiskInfo diskInfo = mock(DiskInfo.class); From 78bafc988a753211764b43bf49637c5482589f60 Mon Sep 17 00:00:00 2001 From: Arc Wang Date: Thu, 25 Mar 2021 21:58:19 +0800 Subject: [PATCH 24/28] Check config to decide if Smart Storage toggle should exist Bug: 174964885 Test: AutomaticStorageManagementSwitchPreferenceControllerTest Change-Id: I3090e3d1b01b18b3d0f68396671c8791321cc480 --- res/values/config.xml | 3 +++ res/xml/storage_dashboard_fragment.xml | 3 ++- ...eManagementSwitchPreferenceController.java | 6 ++++- ...agementSwitchPreferenceControllerTest.java | 25 ++++++++++++++++--- 4 files changed, 32 insertions(+), 5 deletions(-) diff --git a/res/values/config.xml b/res/values/config.xml index 2546d8d0f76..5a8f6363efb 100755 --- a/res/values/config.xml +++ b/res/values/config.xml @@ -522,4 +522,7 @@ content://com.android.providers.media.documents/root/documents_root + + + true diff --git a/res/xml/storage_dashboard_fragment.xml b/res/xml/storage_dashboard_fragment.xml index 83972e35b92..8ec94095d8e 100644 --- a/res/xml/storage_dashboard_fragment.xml +++ b/res/xml/storage_dashboard_fragment.xml @@ -42,7 +42,8 @@ android:key="free_up_space" android:order="4" android:title="@string/storage_free_up_space_title" - android:summary="@string/storage_free_up_space_summary"/> + android:summary="@string/storage_free_up_space_summary" + settings:allowDividerAbove="true"/> Date: Tue, 30 Mar 2021 17:13:58 +0800 Subject: [PATCH 25/28] Fix the WifiTether test case failed - Use the same service name(WifiManager.class) to mock WifiManager.class - Use the same service name(TetheringManager.class) to mock TetheringManager.class Bug: 184018452 Test: manual test make RunSettingsRoboTests ROBOTEST_FILTER=WifiTether Change-Id: I64741818d3455154866097f83e3a96c1c510e23b --- .../wifi/tether/WifiTetherBasePreferenceController.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/com/android/settings/wifi/tether/WifiTetherBasePreferenceController.java b/src/com/android/settings/wifi/tether/WifiTetherBasePreferenceController.java index 46da097959c..a950dc312cd 100644 --- a/src/com/android/settings/wifi/tether/WifiTetherBasePreferenceController.java +++ b/src/com/android/settings/wifi/tether/WifiTetherBasePreferenceController.java @@ -45,8 +45,8 @@ public abstract class WifiTetherBasePreferenceController extends AbstractPrefere OnTetherConfigUpdateListener listener) { super(context); mListener = listener; - mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); - mTm = (TetheringManager) context.getSystemService(Context.TETHERING_SERVICE); + mWifiManager = context.getSystemService(WifiManager.class); + mTm = context.getSystemService(TetheringManager.class); mWifiRegexs = mTm.getTetherableWifiRegexs(); } From 44f685475b6d9f0c4b472fa2cb5971309f85b4ce Mon Sep 17 00:00:00 2001 From: Arc Wang Date: Mon, 29 Mar 2021 14:52:04 +0800 Subject: [PATCH 26/28] Set icon for 'Free up space' Bug: 174964885 Test: manual visual Change-Id: Icccf5413e400320396a100173f2a2c57acdd2ca6 --- res/drawable/ic_files_go_round.xml | 121 +++++++++++++++++++++++++ res/xml/storage_dashboard_fragment.xml | 3 +- 2 files changed, 123 insertions(+), 1 deletion(-) create mode 100644 res/drawable/ic_files_go_round.xml diff --git a/res/drawable/ic_files_go_round.xml b/res/drawable/ic_files_go_round.xml new file mode 100644 index 00000000000..2025b000ea8 --- /dev/null +++ b/res/drawable/ic_files_go_round.xml @@ -0,0 +1,121 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/res/xml/storage_dashboard_fragment.xml b/res/xml/storage_dashboard_fragment.xml index 8ec94095d8e..9bca65a6556 100644 --- a/res/xml/storage_dashboard_fragment.xml +++ b/res/xml/storage_dashboard_fragment.xml @@ -43,7 +43,8 @@ android:order="4" android:title="@string/storage_free_up_space_title" android:summary="@string/storage_free_up_space_summary" - settings:allowDividerAbove="true"/> + settings:allowDividerAbove="true" + android:icon="@drawable/ic_files_go_round"/> Date: Mon, 29 Mar 2021 16:57:58 +0000 Subject: [PATCH 27/28] More settings button add test Bug: 179063896 Test: make RunSettingsRoboTests -j40 ROBOTEST_FILTER=MoreSettingsPreferenceControllerTest Change-Id: I99079165d32074ac0812bd62a146a9d238738fbc --- .../MoreSettingsPreferenceControllerTest.java | 156 ++++++++++++++++++ 1 file changed, 156 insertions(+) create mode 100644 tests/robotests/src/com/android/settings/emergency/MoreSettingsPreferenceControllerTest.java diff --git a/tests/robotests/src/com/android/settings/emergency/MoreSettingsPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/emergency/MoreSettingsPreferenceControllerTest.java new file mode 100644 index 00000000000..844d0ac3264 --- /dev/null +++ b/tests/robotests/src/com/android/settings/emergency/MoreSettingsPreferenceControllerTest.java @@ -0,0 +1,156 @@ +/* + * 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.emergency; + +import static com.android.settings.core.BasePreferenceController.AVAILABLE; +import static com.android.settings.core.BasePreferenceController.UNSUPPORTED_ON_DEVICE; + +import static com.google.common.truth.Truth.assertThat; + +import android.content.Context; +import android.content.Intent; +import android.content.pm.ActivityInfo; +import android.content.pm.ApplicationInfo; +import android.content.pm.ResolveInfo; + +import androidx.test.core.app.ApplicationProvider; + +import com.android.settings.R; +import com.android.settings.testutils.shadow.SettingsShadowResources; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.robolectric.RobolectricTestRunner; +import org.robolectric.Shadows; +import org.robolectric.annotation.Config; +import org.robolectric.shadows.ShadowPackageManager; + +@RunWith(RobolectricTestRunner.class) +@Config(shadows = SettingsShadowResources.class) +public class MoreSettingsPreferenceControllerTest { + + private static final String TEST_PKG_NAME = "test_pkg"; + private static final String TEST_CLASS_NAME = "name"; + + private static final Intent SETTING_INTENT = new Intent(Intent.ACTION_MAIN) + .setPackage(TEST_PKG_NAME); + + private Context mContext; + private ShadowPackageManager mPackageManager; + private static final String PREF_KEY = "more_settings_button"; + + @Before + public void setUp() { + mContext = ApplicationProvider.getApplicationContext(); + mPackageManager = Shadows.shadowOf(mContext.getPackageManager()); + } + + @After + public void tearDown() { + SettingsShadowResources.reset(); + } + + @Test + public void constructor_hasPackageConfig_shouldSetIntent() { + // Provide override package name and provide resolvable intent + SettingsShadowResources.overrideResource( + R.string.config_emergency_package_name, + TEST_PKG_NAME); + prepareCustomIntent(); + + MoreSettingsPreferenceController controller = new MoreSettingsPreferenceController( + mContext, PREF_KEY); + + assertThat(controller.mIntent).isNotNull(); + } + + @Test + public void getAvailabilityStatus_whenIntentSet_shouldReturnAvailable() { + // Provide override package name and provide resolvable intent + SettingsShadowResources.overrideResource( + R.string.config_emergency_package_name, + TEST_PKG_NAME); + prepareCustomIntent(); + + MoreSettingsPreferenceController controller = new MoreSettingsPreferenceController( + mContext, PREF_KEY); + + assertThat(controller.getAvailabilityStatus()).isEqualTo(AVAILABLE); + } + + @Test + public void getAvailabilityStatus_whenPackageConfigIsUnavailable_shouldReturnUnsupported() { + // No package name is configured + MoreSettingsPreferenceController controller = new MoreSettingsPreferenceController( + mContext, PREF_KEY); + + assertThat(controller.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE); + } + + @Test + public void getAvailabilityStatus_noSuitableIntent_shouldReturnUnsupportedDevice() { + // Provide override package name but don't provide resolvable intent + SettingsShadowResources.overrideResource( + R.string.config_emergency_package_name, + TEST_PKG_NAME); + + MoreSettingsPreferenceController controller = new MoreSettingsPreferenceController( + mContext, PREF_KEY); + + assertThat(controller.mIntent).isNull(); + assertThat(controller.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE); + } + + @Test + public void getAvailabilityStatus_intentForANonSystemApp_shouldReturnUnsupportedDevice() { + // Provide override package name and provide resolvable intent for a non system app. + SettingsShadowResources.overrideResource( + R.string.config_emergency_package_name, + TEST_PKG_NAME); + prepareCustomIntentForANonSystemApp(); + + MoreSettingsPreferenceController controller = new MoreSettingsPreferenceController( + mContext, PREF_KEY); + + assertThat(controller.mIntent).isNull(); + assertThat(controller.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE); + } + + private void prepareCustomIntent() { + final ResolveInfo info = new ResolveInfo(); + info.activityInfo = new ActivityInfo(); + info.activityInfo.packageName = TEST_PKG_NAME; + info.activityInfo.name = TEST_CLASS_NAME; + + // Resolve to a system app. + info.activityInfo.applicationInfo = new ApplicationInfo(); + info.activityInfo.applicationInfo.flags = ApplicationInfo.FLAG_SYSTEM; + mPackageManager.addResolveInfoForIntent(SETTING_INTENT, info); + } + + + private void prepareCustomIntentForANonSystemApp() { + final ResolveInfo info = new ResolveInfo(); + info.activityInfo = new ActivityInfo(); + info.activityInfo.packageName = TEST_PKG_NAME; + info.activityInfo.name = TEST_CLASS_NAME; + + mPackageManager.addResolveInfoForIntent(SETTING_INTENT, info); + } +} From 5d10dbc732e12f62252042e0cf8c23ef899e2e33 Mon Sep 17 00:00:00 2001 From: Jay Aliomer Date: Tue, 30 Mar 2021 14:16:50 -0400 Subject: [PATCH 28/28] Notification history UI buff Fixes: 182155974 Test: visual test Change-Id: I028381407504b3cf390987a6fa11c041fddf6198 --- res/drawable/circle.xml | 27 +++++++++++++++ .../notification_history_app_layout.xml | 33 +++++++++---------- res/layout/notification_history_log_row.xml | 2 ++ res/layout/notification_sbn_log_row.xml | 10 +++--- .../history/NotificationSbnAdapter.java | 26 +++++++++------ .../history/NotificationSbnViewHolder.java | 4 +++ 6 files changed, 69 insertions(+), 33 deletions(-) create mode 100644 res/drawable/circle.xml diff --git a/res/drawable/circle.xml b/res/drawable/circle.xml new file mode 100644 index 00000000000..f207cc2c8f3 --- /dev/null +++ b/res/drawable/circle.xml @@ -0,0 +1,27 @@ + + + + + + + \ No newline at end of file diff --git a/res/layout/notification_history_app_layout.xml b/res/layout/notification_history_app_layout.xml index aaca0fd9224..42edd704d2d 100644 --- a/res/layout/notification_history_app_layout.xml +++ b/res/layout/notification_history_app_layout.xml @@ -26,35 +26,32 @@ android:layout_width="match_parent" android:background="@drawable/button_ripple_radius" android:paddingTop="12dp" + android:orientation="horizontal" android:paddingBottom="12dp" android:paddingStart="16dp"> + + - - - - + android:layout_width="wrap_content" + android:layout_gravity="center_vertical" + android:textAppearance="@*android:style/TextAppearance.DeviceDefault.Notification"/> + android:scaleType="centerInside" /> diff --git a/src/com/android/settings/notification/history/NotificationSbnAdapter.java b/src/com/android/settings/notification/history/NotificationSbnAdapter.java index f836855c195..e0328542803 100644 --- a/src/com/android/settings/notification/history/NotificationSbnAdapter.java +++ b/src/com/android/settings/notification/history/NotificationSbnAdapter.java @@ -34,6 +34,7 @@ import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.content.res.Configuration; import android.graphics.PorterDuff; +import android.graphics.PorterDuffColorFilter; import android.graphics.drawable.Drawable; import android.os.UserHandle; import android.os.UserManager; @@ -110,6 +111,7 @@ public class NotificationSbnAdapter extends int position) { final StatusBarNotification sbn = mValues.get(position); if (sbn != null) { + holder.setIconBackground(loadBackground(sbn)); holder.setIcon(loadIcon(sbn)); holder.setPackageLabel(loadPackageLabel(sbn.getPackageName()).toString()); holder.setTitle(getTitleString(sbn.getNotification())); @@ -140,6 +142,19 @@ public class NotificationSbnAdapter extends } } + private Drawable loadBackground(StatusBarNotification sbn) { + Drawable bg = mContext.getDrawable(R.drawable.circle); + int color = sbn.getNotification().color; + if (color == COLOR_DEFAULT) { + color = Utils.getColorAttrDefaultColor( + mContext, com.android.internal.R.attr.colorAccent); + } + color = ContrastColorUtil.resolveContrastColor( + mContext, color, mBackgroundColor, mInNightMode); + bg.setColorFilter(new PorterDuffColorFilter(color, PorterDuff.Mode.SRC_ATOP)); + return bg; + } + @Override public int getItemCount() { return mValues.size(); @@ -229,7 +244,7 @@ public class NotificationSbnAdapter extends return null; } draw.mutate(); - draw.setColorFilter(getContrastedColor(sbn.getNotification()), PorterDuff.Mode.SRC_ATOP); + draw.setColorFilter(mBackgroundColor, PorterDuff.Mode.SRC_ATOP); return draw; } @@ -240,13 +255,4 @@ public class NotificationSbnAdapter extends } return userId; } - - private int getContrastedColor(Notification n) { - int rawColor = n.color; - if (rawColor != COLOR_DEFAULT) { - rawColor |= 0xFF000000; // no alpha for custom colors - } - return ContrastColorUtil.resolveContrastColor( - mContext, rawColor, mBackgroundColor, mInNightMode); - } } diff --git a/src/com/android/settings/notification/history/NotificationSbnViewHolder.java b/src/com/android/settings/notification/history/NotificationSbnViewHolder.java index 1219143b465..c98b036d7e2 100644 --- a/src/com/android/settings/notification/history/NotificationSbnViewHolder.java +++ b/src/com/android/settings/notification/history/NotificationSbnViewHolder.java @@ -75,6 +75,10 @@ public class NotificationSbnViewHolder extends RecyclerView.ViewHolder { mIcon.setImageDrawable(icon); } + void setIconBackground(Drawable background) { + mIcon.setBackground(background); + } + void setPackageLabel(String pkg) { mPkgName.setText(pkg); }