Merge "Removing hidden api usage from AutoCompleteTextView"
diff --git a/api/current.txt b/api/current.txt
index db2f0af..91f5cef 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -16492,6 +16492,7 @@
field public static final int BIOMETRIC_ERROR_LOCKOUT = 7; // 0x7
field public static final int BIOMETRIC_ERROR_LOCKOUT_PERMANENT = 9; // 0x9
field public static final int BIOMETRIC_ERROR_NO_BIOMETRICS = 11; // 0xb
+ field public static final int BIOMETRIC_ERROR_NO_DEVICE_CREDENTIAL = 14; // 0xe
field public static final int BIOMETRIC_ERROR_NO_SPACE = 4; // 0x4
field public static final int BIOMETRIC_ERROR_TIMEOUT = 3; // 0x3
field public static final int BIOMETRIC_ERROR_UNABLE_TO_PROCESS = 2; // 0x2
@@ -16514,8 +16515,8 @@
public static class BiometricPrompt.Builder {
ctor public BiometricPrompt.Builder(android.content.Context);
method public android.hardware.biometrics.BiometricPrompt build();
+ method public android.hardware.biometrics.BiometricPrompt.Builder setAllowDeviceCredential(boolean);
method public android.hardware.biometrics.BiometricPrompt.Builder setDescription(@NonNull CharSequence);
- method public android.hardware.biometrics.BiometricPrompt.Builder setEnableFallback(boolean);
method public android.hardware.biometrics.BiometricPrompt.Builder setNegativeButton(@NonNull CharSequence, @NonNull java.util.concurrent.Executor, @NonNull android.content.DialogInterface.OnClickListener);
method public android.hardware.biometrics.BiometricPrompt.Builder setRequireConfirmation(boolean);
method public android.hardware.biometrics.BiometricPrompt.Builder setSubtitle(@NonNull CharSequence);
@@ -51114,6 +51115,7 @@
method public int getScaledHoverSlop();
method public int getScaledMaximumDrawingCacheSize();
method public int getScaledMaximumFlingVelocity();
+ method public int getScaledMinScalingSpan();
method public int getScaledMinimumFlingVelocity();
method public int getScaledOverflingDistance();
method public int getScaledOverscrollDistance();
diff --git a/api/system-current.txt b/api/system-current.txt
index bb7b0b4..3a50239 100644
--- a/api/system-current.txt
+++ b/api/system-current.txt
@@ -5712,6 +5712,7 @@
method @RequiresPermission(android.Manifest.permission.WRITE_DEVICE_CONFIG) public static void resetToDefaults(int, @Nullable String);
method @RequiresPermission(android.Manifest.permission.WRITE_DEVICE_CONFIG) public static boolean setProperty(String, String, String, boolean);
field public static final String NAMESPACE_AUTOFILL = "autofill";
+ field public static final String NAMESPACE_CONTENT_CAPTURE = "content_capture";
field public static final String NAMESPACE_GAME_DRIVER = "game_driver";
field public static final String NAMESPACE_INPUT_NATIVE_BOOT = "input_native_boot";
field public static final String NAMESPACE_NETD_NATIVE = "netd_native";
@@ -5741,10 +5742,6 @@
field public static final String SERVICE_ENABLED = "service_enabled";
}
- public static interface DeviceConfig.ContentCapture {
- field public static final String NAMESPACE = "content_capture";
- }
-
public static interface DeviceConfig.DexBoot {
field public static final String NAMESPACE = "dex_boot";
field public static final String PRIV_APPS_OOB_ENABLED = "priv_apps_oob_enabled";
diff --git a/api/test-current.txt b/api/test-current.txt
index 9be6e81..9e266d8 100644
--- a/api/test-current.txt
+++ b/api/test-current.txt
@@ -1788,11 +1788,7 @@
method @RequiresPermission("android.permission.READ_DEVICE_CONFIG") public static String getProperty(String, String);
method @RequiresPermission("android.permission.WRITE_DEVICE_CONFIG") public static void resetToDefaults(int, @Nullable String);
method @RequiresPermission("android.permission.WRITE_DEVICE_CONFIG") public static boolean setProperty(String, String, String, boolean);
- }
-
- public static interface DeviceConfig.ContentCapture {
- field public static final String NAMESPACE = "content_capture";
- field public static final String PROPERTY_CONTENTCAPTURE_ENABLED = "enable_contentcapture";
+ field public static final String NAMESPACE_CONTENT_CAPTURE = "content_capture";
}
public static interface DeviceConfig.Privacy {
@@ -2725,6 +2721,7 @@
public final class ContentCaptureManager {
method public boolean isContentCaptureFeatureEnabled();
method public void setContentCaptureFeatureEnabled(boolean);
+ field public static final String DEVICE_CONFIG_PROPERTY_SERVICE_EXPLICITLY_ENABLED = "service_explicitly_enabled";
}
public final class ViewNode extends android.app.assist.AssistStructure.ViewNode {
diff --git a/cmds/statsd/src/StatsLogProcessor.cpp b/cmds/statsd/src/StatsLogProcessor.cpp
index 250f5bf..dd18bd4 100644
--- a/cmds/statsd/src/StatsLogProcessor.cpp
+++ b/cmds/statsd/src/StatsLogProcessor.cpp
@@ -526,9 +526,10 @@
proto.write(FIELD_TYPE_INT64 | FIELD_ID_CONFIG_ID, (long long)pair.first.GetId());
proto.write(FIELD_TYPE_INT32 | FIELD_ID_CONFIG_UID, pair.first.GetUid());
- vector<const MetricProducer*> acrtiveMetrics;
- pair.second->getActiveMetrics(acrtiveMetrics);
- for (const MetricProducer* metric : acrtiveMetrics) {
+ vector<MetricProducer*> activeMetrics;
+ pair.second->prepForShutDown(currentTimeNs);
+ pair.second->getActiveMetrics(activeMetrics);
+ for (MetricProducer* metric : activeMetrics) {
if (metric->isActive()) {
uint64_t metricToken = proto.start(FIELD_TYPE_MESSAGE | FIELD_COUNT_REPEATED |
FIELD_ID_ACTIVE_METRIC);
diff --git a/cmds/statsd/src/StatsLogProcessor.h b/cmds/statsd/src/StatsLogProcessor.h
index 77d9a2f..caf1a71 100644
--- a/cmds/statsd/src/StatsLogProcessor.h
+++ b/cmds/statsd/src/StatsLogProcessor.h
@@ -195,6 +195,7 @@
FRIEND_TEST(StatsLogProcessorTest, TestRateLimitBroadcast);
FRIEND_TEST(StatsLogProcessorTest, TestDropWhenByteSizeTooLarge);
FRIEND_TEST(StatsLogProcessorTest, TestActiveConfigMetricDiskWriteRead);
+ FRIEND_TEST(StatsLogProcessorTest, TestActivationOnBoot);
FRIEND_TEST(WakelockDurationE2eTest, TestAggregatedPredicateDimensionsForSumDuration1);
FRIEND_TEST(WakelockDurationE2eTest, TestAggregatedPredicateDimensionsForSumDuration2);
diff --git a/cmds/statsd/src/atoms.proto b/cmds/statsd/src/atoms.proto
index d0974d6..7ddb783 100644
--- a/cmds/statsd/src/atoms.proto
+++ b/cmds/statsd/src/atoms.proto
@@ -215,7 +215,7 @@
SpeechDspStatReported speech_dsp_stat_reported = 145;
UsbContaminantReported usb_contaminant_reported = 146;
WatchdogRollbackOccurred watchdog_rollback_occurred = 147;
- BiometricHalDeathReported biometric_hal_death_reported = 148;
+ BiometricSystemHealthIssueDetected biometric_system_health_issue_detected = 148;
BubbleUIChanged bubble_ui_changed = 149;
ScheduledJobConstraintChanged scheduled_job_constraint_changed = 150;
BluetoothActiveDeviceChanged bluetooth_active_device_changed = 151;
@@ -2086,9 +2086,9 @@
// Salt: Randomly generated 256 bit value
// Hash algorithm: HMAC-SHA256
// Size: 32 byte
- // Default: null or empty if the device identifier is not known
+ // Default: null or empty if this is a server listener socket
optional bytes obfuscated_id = 1 [(android.os.statsd.log_mode) = MODE_BYTES];
- // Port of this socket
+ // Temporary port of this socket for the current connection or session only
// Default 0 when unknown or don't care
optional int32 port = 2;
// Socket type as mentioned in
@@ -2102,6 +2102,14 @@
optional int64 tx_bytes = 5;
// Number of bytes received from remote device during this connection
optional int64 rx_bytes = 6;
+ // Socket owner's UID
+ optional int32 uid = 7 [(is_uid) = true];
+ // Server port of this socket, if any. When both |server_port| and |port| fields are populated,
+ // |port| must be spawned by |server_port|
+ // Default 0 when unknown or don't care
+ optional int32 server_port = 8;
+ // Whether this is a server listener socket
+ optional android.bluetooth.SocketRoleEnum is_server = 9;
}
/**
@@ -3050,13 +3058,15 @@
}
/**
- * Logs when a biometric HAL has crashed.
+ * Logs when a system health issue is detected.
* Logged from:
* frameworks/base/services/core/java/com/android/server/biometrics
*/
-message BiometricHalDeathReported {
+message BiometricSystemHealthIssueDetected {
// Biometric modality.
optional android.hardware.biometrics.ModalityEnum modality = 1;
+ // Type of issue detected.
+ optional android.hardware.biometrics.IssueEnum issue = 2;
}
message Notification {
diff --git a/cmds/statsd/src/metrics/MetricProducer.cpp b/cmds/statsd/src/metrics/MetricProducer.cpp
index b362e37..495138e 100644
--- a/cmds/statsd/src/metrics/MetricProducer.cpp
+++ b/cmds/statsd/src/metrics/MetricProducer.cpp
@@ -107,6 +107,10 @@
if (it == mEventActivationMap.end()) {
return;
}
+ if (mActivationType == MetricActivation::ACTIVATE_ON_BOOT) {
+ it->second.state = ActivationState::kActiveOnBoot;
+ return;
+ }
it->second.activation_ns = elapsedTimestampNs;
it->second.state = ActivationState::kActive;
mIsActive = true;
@@ -116,12 +120,19 @@
if (mEventActivationMap.size() == 0) {
return;
}
- auto& activation = mEventActivationMap.begin()->second;
- activation.activation_ns = currentTimeNs + remainingTtlNs - activation.ttl_ns;
- activation.state = kActive;
- mIsActive = true;
- VLOG("setting new activation time to %lld, %lld, %lld", (long long)activation.activation_ns,
- (long long)currentTimeNs, (long long)remainingTtlNs);
+ for (auto& pair : mEventActivationMap) {
+ auto& activation = pair.second;
+ if (activation.ttl_ns >= remainingTtlNs) {
+ activation.activation_ns = currentTimeNs + remainingTtlNs - activation.ttl_ns;
+ activation.state = kActive;
+ mIsActive = true;
+ VLOG("setting new activation time to %lld, %lld, %lld",
+ (long long)activation.activation_ns, (long long)currentTimeNs,
+ (long long)remainingTtlNs);
+ return;
+ }
+ }
+ ALOGE("Required ttl is longer than all possible activations.");
}
int64_t MetricProducer::getRemainingTtlNsLocked(int64_t currentTimeNs) const {
@@ -135,6 +146,19 @@
return maxTtl;
}
+void MetricProducer::prepActiveForBootIfNecessaryLocked(int64_t currentTimeNs) {
+ if (mActivationType != MetricActivation::ACTIVATE_ON_BOOT) {
+ return;
+ }
+ for (auto& activation : mEventActivationMap) {
+ if (activation.second.state == kActiveOnBoot) {
+ activation.second.state = kActive;
+ activation.second.activation_ns = currentTimeNs;
+ mIsActive = true;
+ }
+ }
+}
+
} // namespace statsd
} // namespace os
} // namespace android
diff --git a/cmds/statsd/src/metrics/MetricProducer.h b/cmds/statsd/src/metrics/MetricProducer.h
index ca37bbb..849cb76 100644
--- a/cmds/statsd/src/metrics/MetricProducer.h
+++ b/cmds/statsd/src/metrics/MetricProducer.h
@@ -37,12 +37,13 @@
// If the metric has no activation requirement, it will be active once the metric producer is
// created.
// If the metric needs to be activated by atoms, the metric producer will start
-// with kNotActive state, turn to kActive when the activation event arrives, become kNotActive
-// when it reaches the duration limit (timebomb). If the activation event arrives again before
-// or after it expires, the event producer will be re-activated and ttl will be reset.
+// with kNotActive state, turn to kActive or kActiveOnBoot when the activation event arrives, become
+// kNotActive when it reaches the duration limit (timebomb). If the activation event arrives again
+// before or after it expires, the event producer will be re-activated and ttl will be reset.
enum ActivationState {
kNotActive = 0,
kActive = 1,
+ kActiveOnBoot = 2,
};
// A MetricProducer is responsible for compute one single metrics, creating stats log report, and
@@ -218,8 +219,17 @@
return isActiveLocked();
}
+ void prepActiveForBootIfNecessary(int64_t currentTimeNs) {
+ std::lock_guard<std::mutex> lock(mMutex);
+ prepActiveForBootIfNecessaryLocked(currentTimeNs);
+ }
+
void addActivation(int activationTrackerIndex, int64_t ttl_seconds);
+ inline void setActivationType(const MetricActivation::ActivationType& activationType) {
+ mActivationType = activationType;
+ }
+
void flushIfExpire(int64_t elapsedTimestampNs);
protected:
@@ -243,6 +253,8 @@
return mIsActive;
}
+ void prepActiveForBootIfNecessaryLocked(int64_t currentTimeNs);
+
int64_t getRemainingTtlNsLocked(int64_t currentTimeNs) const;
void setActiveLocked(int64_t currentTimeNs, int64_t remainingTtlNs);
@@ -367,9 +379,12 @@
bool mIsActive;
+ MetricActivation::ActivationType mActivationType;
+
FRIEND_TEST(MetricActivationE2eTest, TestCountMetric);
FRIEND_TEST(StatsLogProcessorTest, TestActiveConfigMetricDiskWriteRead);
+ FRIEND_TEST(StatsLogProcessorTest, TestActivationOnBoot);
};
} // namespace statsd
diff --git a/cmds/statsd/src/metrics/MetricsManager.h b/cmds/statsd/src/metrics/MetricsManager.h
index fdc28ea..cb1cefb 100644
--- a/cmds/statsd/src/metrics/MetricsManager.h
+++ b/cmds/statsd/src/metrics/MetricsManager.h
@@ -132,7 +132,7 @@
return mIsActive;
}
- inline void getActiveMetrics(std::vector<const MetricProducer*>& metrics) const {
+ inline void getActiveMetrics(std::vector<MetricProducer*>& metrics) const {
for (const auto& metric : mAllMetricProducers) {
if (metric->isActive()) {
metrics.push_back(metric.get());
@@ -140,6 +140,12 @@
}
}
+ inline void prepForShutDown(int64_t currentTimeNs) {
+ for (const auto& metric : mAllMetricProducers) {
+ metric->prepActiveForBootIfNecessary(currentTimeNs);
+ }
+ }
+
void setActiveMetrics(ActiveConfig config, int64_t currentTimeNs);
private:
@@ -271,6 +277,7 @@
FRIEND_TEST(MetricActivationE2eTest, TestCountMetric);
FRIEND_TEST(StatsLogProcessorTest, TestActiveConfigMetricDiskWriteRead);
+ FRIEND_TEST(StatsLogProcessorTest, TestActivationOnBoot);
};
} // namespace statsd
diff --git a/cmds/statsd/src/metrics/metrics_manager_util.cpp b/cmds/statsd/src/metrics/metrics_manager_util.cpp
index 180a1ae..463b5a0 100644
--- a/cmds/statsd/src/metrics/metrics_manager_util.cpp
+++ b/cmds/statsd/src/metrics/metrics_manager_util.cpp
@@ -725,6 +725,8 @@
ALOGE("Invalid metric tracker index.");
return false;
}
+ allMetricProducers[metricTrackerIndex]->setActivationType(
+ metric_activation.activation_type());
metricsWithActivation.push_back(metricTrackerIndex);
for (int j = 0; j < metric_activation.event_activation_size(); ++j) {
const EventActivation& activation = metric_activation.event_activation(j);
diff --git a/cmds/statsd/src/statsd_config.proto b/cmds/statsd/src/statsd_config.proto
index 9d3a669..5c6d548 100644
--- a/cmds/statsd/src/statsd_config.proto
+++ b/cmds/statsd/src/statsd_config.proto
@@ -379,6 +379,13 @@
message MetricActivation {
optional int64 metric_id = 1;
+ enum ActivationType {
+ UNKNOWN = 0;
+ ACTIVATE_IMMEDIATELY = 1;
+ ACTIVATE_ON_BOOT = 2;
+ }
+ optional ActivationType activation_type = 3;
+
repeated EventActivation event_activation = 2;
}
diff --git a/cmds/statsd/tests/StatsLogProcessor_test.cpp b/cmds/statsd/tests/StatsLogProcessor_test.cpp
index 64008b5..60df165 100644
--- a/cmds/statsd/tests/StatsLogProcessor_test.cpp
+++ b/cmds/statsd/tests/StatsLogProcessor_test.cpp
@@ -574,6 +574,127 @@
EXPECT_EQ(timeBase2 + ttl6 - activation1006.ttl_ns, activation1003.activation_ns);
}
+TEST(StatsLogProcessorTest, TestActivationOnBoot) {
+ int uid = 1111;
+
+ // Setup a simple config, no activation
+ StatsdConfig config1;
+ config1.set_id(12341);
+ config1.add_allowed_log_source("AID_ROOT"); // LogEvent defaults to UID of root.
+ auto wakelockAcquireMatcher = CreateAcquireWakelockAtomMatcher();
+ *config1.add_atom_matcher() = wakelockAcquireMatcher;
+
+ long metricId1 = 1234561;
+ long metricId2 = 1234562;
+ auto countMetric1 = config1.add_count_metric();
+ countMetric1->set_id(metricId1);
+ countMetric1->set_what(wakelockAcquireMatcher.id());
+ countMetric1->set_bucket(FIVE_MINUTES);
+
+ auto countMetric2 = config1.add_count_metric();
+ countMetric2->set_id(metricId2);
+ countMetric2->set_what(wakelockAcquireMatcher.id());
+ countMetric2->set_bucket(FIVE_MINUTES);
+
+ auto metric1Activation = config1.add_metric_activation();
+ metric1Activation->set_metric_id(metricId1);
+ metric1Activation->set_activation_type(MetricActivation::ACTIVATE_ON_BOOT);
+ auto metric1ActivationTrigger = metric1Activation->add_event_activation();
+ metric1ActivationTrigger->set_atom_matcher_id(wakelockAcquireMatcher.id());
+ metric1ActivationTrigger->set_ttl_seconds(100);
+
+ ConfigKey cfgKey1(uid, 12341);
+ long timeBase1 = 1;
+ sp<StatsLogProcessor> processor =
+ CreateStatsLogProcessor(timeBase1, timeBase1, config1, cfgKey1);
+
+ EXPECT_EQ(1, processor->mMetricsManagers.size());
+ auto it = processor->mMetricsManagers.find(cfgKey1);
+ EXPECT_TRUE(it != processor->mMetricsManagers.end());
+ auto& metricsManager1 = it->second;
+ EXPECT_TRUE(metricsManager1->isActive());
+
+ auto metricIt = metricsManager1->mAllMetricProducers.begin();
+ for (; metricIt != metricsManager1->mAllMetricProducers.end(); metricIt++) {
+ if ((*metricIt)->getMetricId() == metricId1) {
+ break;
+ }
+ }
+ EXPECT_TRUE(metricIt != metricsManager1->mAllMetricProducers.end());
+ auto& metricProducer1 = *metricIt;
+ EXPECT_FALSE(metricProducer1->isActive());
+
+ metricIt = metricsManager1->mAllMetricProducers.begin();
+ for (; metricIt != metricsManager1->mAllMetricProducers.end(); metricIt++) {
+ if ((*metricIt)->getMetricId() == metricId2) {
+ break;
+ }
+ }
+ EXPECT_TRUE(metricIt != metricsManager1->mAllMetricProducers.end());
+ auto& metricProducer2 = *metricIt;
+ EXPECT_TRUE(metricProducer2->isActive());
+
+ const auto& activation1 = metricProducer1->mEventActivationMap.begin()->second;
+ EXPECT_EQ(100 * NS_PER_SEC, activation1.ttl_ns);
+ EXPECT_EQ(0, activation1.activation_ns);
+ EXPECT_EQ(kNotActive, activation1.state);
+
+ std::vector<AttributionNodeInternal> attributions1 = {CreateAttribution(111, "App1")};
+ auto event = CreateAcquireWakelockEvent(attributions1, "wl1", 100 + timeBase1);
+ processor->OnLogEvent(event.get());
+
+ EXPECT_FALSE(metricProducer1->isActive());
+ EXPECT_EQ(0, activation1.activation_ns);
+ EXPECT_EQ(kActiveOnBoot, activation1.state);
+
+ int64_t shutDownTime = timeBase1 + 100 * NS_PER_SEC;
+
+ processor->WriteMetricsActivationToDisk(shutDownTime);
+ EXPECT_TRUE(metricProducer1->isActive());
+ int64_t ttl1 = metricProducer1->getRemainingTtlNs(shutDownTime);
+ EXPECT_EQ(100 * NS_PER_SEC, ttl1);
+
+ long timeBase2 = 1000;
+ sp<StatsLogProcessor> processor2 =
+ CreateStatsLogProcessor(timeBase2, timeBase2, config1, cfgKey1);
+
+ EXPECT_EQ(1, processor2->mMetricsManagers.size());
+ it = processor2->mMetricsManagers.find(cfgKey1);
+ EXPECT_TRUE(it != processor2->mMetricsManagers.end());
+ auto& metricsManager1001 = it->second;
+ EXPECT_TRUE(metricsManager1001->isActive());
+
+ metricIt = metricsManager1001->mAllMetricProducers.begin();
+ for (; metricIt != metricsManager1001->mAllMetricProducers.end(); metricIt++) {
+ if ((*metricIt)->getMetricId() == metricId1) {
+ break;
+ }
+ }
+ EXPECT_TRUE(metricIt != metricsManager1001->mAllMetricProducers.end());
+ auto& metricProducer1001 = *metricIt;
+ EXPECT_FALSE(metricProducer1001->isActive());
+
+ metricIt = metricsManager1001->mAllMetricProducers.begin();
+ for (; metricIt != metricsManager1001->mAllMetricProducers.end(); metricIt++) {
+ if ((*metricIt)->getMetricId() == metricId2) {
+ break;
+ }
+ }
+ EXPECT_TRUE(metricIt != metricsManager1001->mAllMetricProducers.end());
+ auto& metricProducer1002 = *metricIt;
+ EXPECT_TRUE(metricProducer1002->isActive());
+
+ const auto& activation1001 = metricProducer1001->mEventActivationMap.begin()->second;
+ EXPECT_EQ(100 * NS_PER_SEC, activation1001.ttl_ns);
+ EXPECT_EQ(0, activation1001.activation_ns);
+ EXPECT_EQ(kNotActive, activation1001.state);
+
+ processor2->LoadMetricsActivationFromDisk();
+
+ EXPECT_TRUE(metricProducer1001->isActive());
+ EXPECT_EQ(timeBase2 + ttl1 - activation1001.ttl_ns, activation1001.activation_ns);
+}
+
#else
GTEST_LOG_(INFO) << "This test does nothing.\n";
#endif
diff --git a/core/java/android/app/KeyguardManager.java b/core/java/android/app/KeyguardManager.java
index f522d71..17f645d 100644
--- a/core/java/android/app/KeyguardManager.java
+++ b/core/java/android/app/KeyguardManager.java
@@ -125,7 +125,7 @@
public static final int RESULT_ALTERNATE = 1;
/**
- * @deprecated see {@link BiometricPrompt.Builder#setEnableFallback(boolean)}
+ * @deprecated see {@link BiometricPrompt.Builder#setAllowDeviceCredential(boolean)}
*
* Get an intent to prompt the user to confirm credentials (pin, pattern, password or biometrics
* if enrolled) for the current user of the device. The caller is expected to launch this
diff --git a/core/java/android/app/admin/DevicePolicyManager.java b/core/java/android/app/admin/DevicePolicyManager.java
index 3ff6973..8861151 100644
--- a/core/java/android/app/admin/DevicePolicyManager.java
+++ b/core/java/android/app/admin/DevicePolicyManager.java
@@ -4618,6 +4618,10 @@
* <p>If the installer must have access to the credentials, call
* {@link #installKeyPair(ComponentName, PrivateKey, Certificate[], String, boolean)} instead.
*
+ * <p>Note: If the provided {@code alias} is of an existing alias, all former grants that apps
+ * have been given to access the key and certificates associated with this alias will be
+ * revoked.
+ *
* @param admin Which {@link DeviceAdminReceiver} this request is associated with, or
* {@code null} if calling from a delegated certificate installer.
* @param privKey The private key to install.
@@ -4645,6 +4649,10 @@
* immediately, without user approval. It is a best practice not to request this unless strictly
* necessary since it opens up additional security vulnerabilities.
*
+ * <p>Note: If the provided {@code alias} is of an existing alias, all former grants that apps
+ * have been given to access the key and certificates associated with this alias will be
+ * revoked.
+ *
* @param admin Which {@link DeviceAdminReceiver} this request is associated with, or
* {@code null} if calling from a delegated certificate installer.
* @param privKey The private key to install.
@@ -4685,6 +4693,10 @@
* <p>Include {@link #INSTALLKEY_SET_USER_SELECTABLE} in the {@code flags} argument to allow
* the user to select the key from a dialog.
*
+ * <p>Note: If the provided {@code alias} is of an existing alias, all former grants that apps
+ * have been given to access the key and certificates associated with this alias will be
+ * revoked.
+ *
* @param admin Which {@link DeviceAdminReceiver} this request is associated with, or
* {@code null} if calling from a delegated certificate installer.
* @param privKey The private key to install.
@@ -4761,6 +4773,10 @@
* <p>Because this method might take several seconds to complete, it should only be called from
* a worker thread. This method returns {@code null} when called from the main thread.
*
+ * <p>Note: If the provided {@code alias} is of an existing alias, all former grants that apps
+ * have been given to access the key and certificates associated with this alias will be
+ * revoked.
+ *
* @param admin Which {@link DeviceAdminReceiver} this request is associated with, or
* {@code null} if calling from a delegated certificate installer.
* @param algorithm The key generation algorithm, see {@link java.security.KeyPairGenerator}.
@@ -9628,7 +9644,7 @@
*
* @param admin Which {@link DeviceAdminReceiver} this request is associated with.
* @param enabled {@code true} to enable the backup service, {@code false} to disable it.
- * @throws SecurityException if {@code admin} is not a device owner.
+ * @throws SecurityException if {@code admin} is not a device owner or a profile owner.
*/
public void setBackupServiceEnabled(@NonNull ComponentName admin, boolean enabled) {
throwIfParentInstance("setBackupServiceEnabled");
diff --git a/core/java/android/content/pm/PackageManager.java b/core/java/android/content/pm/PackageManager.java
index 6e52b33..eaf6c5a 100644
--- a/core/java/android/content/pm/PackageManager.java
+++ b/core/java/android/content/pm/PackageManager.java
@@ -715,7 +715,6 @@
INSTALL_FORCE_PERMISSION_PROMPT,
INSTALL_INSTANT_APP,
INSTALL_DONT_KILL_APP,
- INSTALL_FORCE_SDK,
INSTALL_FULL_APP,
INSTALL_ALLOCATE_AGGRESSIVE,
INSTALL_VIRTUAL_PRELOAD,
@@ -816,15 +815,6 @@
public static final int INSTALL_DONT_KILL_APP = 0x00001000;
/**
- * Flag parameter for {@link #installPackage} to indicate that this package is an
- * upgrade to a package that refers to the SDK via release letter or is targeting an SDK via
- * release letter that the current build does not support.
- *
- * @hide
- */
- public static final int INSTALL_FORCE_SDK = 0x00002000;
-
- /**
* Flag parameter for {@link #installPackage} to indicate that this package is
* to be installed as a heavy weight app. This is fundamentally the opposite of
* {@link #INSTALL_INSTANT_APP}.
diff --git a/core/java/android/content/pm/PackageParser.java b/core/java/android/content/pm/PackageParser.java
index 5020a94..96b6eb52 100644
--- a/core/java/android/content/pm/PackageParser.java
+++ b/core/java/android/content/pm/PackageParser.java
@@ -839,7 +839,6 @@
public static final int PARSE_IS_SYSTEM_DIR = 1 << 4;
public static final int PARSE_COLLECT_CERTIFICATES = 1 << 5;
public static final int PARSE_ENFORCE_CODE = 1 << 6;
- public static final int PARSE_FORCE_SDK = 1 << 7;
public static final int PARSE_CHATTY = 1 << 31;
@IntDef(flag = true, prefix = { "PARSE_" }, value = {
@@ -847,7 +846,6 @@
PARSE_COLLECT_CERTIFICATES,
PARSE_ENFORCE_CODE,
PARSE_EXTERNAL_STORAGE,
- PARSE_FORCE_SDK,
PARSE_IGNORE_PROCESSES,
PARSE_IS_SYSTEM_DIR,
PARSE_MUST_BE_APK,
@@ -2684,8 +2682,6 @@
* @param platformSdkCodenames array of allowed pre-release SDK codenames
* for this platform
* @param outError output array to populate with error, if applicable
- * @param forceCurrentDev if development target code is not available, use the current
- * development version by default.
* @return the targetSdkVersion to use at runtime, or -1 if the package is
* not compatible with this platform
* @hide Exposed for unit testing only.
@@ -2693,7 +2689,7 @@
@TestApi
public static int computeTargetSdkVersion(@IntRange(from = 0) int targetVers,
@Nullable String targetCode, @NonNull String[] platformSdkCodenames,
- @NonNull String[] outError, boolean forceCurrentDev) {
+ @NonNull String[] outError) {
// If it's a release SDK, return the version number unmodified.
if (targetCode == null) {
return targetVers;
@@ -2701,7 +2697,7 @@
// If it's a pre-release SDK and the codename matches this platform, it
// definitely targets this SDK.
- if (matchTargetCode(platformSdkCodenames, targetCode) || forceCurrentDev) {
+ if (matchTargetCode(platformSdkCodenames, targetCode)) {
return Build.VERSION_CODES.CUR_DEVELOPMENT;
}
@@ -2768,9 +2764,8 @@
return null;
}
- boolean defaultToCurrentDevBranch = (flags & PARSE_FORCE_SDK) != 0;
final int targetSdkVersion = computeTargetSdkVersion(targetVers,
- targetCode, SDK_CODENAMES, outError, defaultToCurrentDevBranch);
+ targetCode, SDK_CODENAMES, outError);
if (targetSdkVersion < 0) {
return null;
}
diff --git a/core/java/android/debug/AdbManagerInternal.java b/core/java/android/debug/AdbManagerInternal.java
index 4469f0f..51eb7fc 100644
--- a/core/java/android/debug/AdbManagerInternal.java
+++ b/core/java/android/debug/AdbManagerInternal.java
@@ -16,6 +16,8 @@
package android.debug;
+import java.io.File;
+
/**
* This class allows the control of ADB-related functions that should only be called from the system
* server.
@@ -41,4 +43,14 @@
* Returns {@code true} if ADB debugging is enabled.
*/
public abstract boolean isAdbEnabled();
+
+ /**
+ * Returns the file that contains all of the ADB keys used by the device.
+ */
+ public abstract File getAdbKeysFile();
+
+ /**
+ * Returns the file that contains all of the ADB keys and their last used time.
+ */
+ public abstract File getAdbTempKeysFile();
}
diff --git a/core/java/android/hardware/biometrics/BiometricConstants.java b/core/java/android/hardware/biometrics/BiometricConstants.java
index c814b7c..1cb7eb0 100644
--- a/core/java/android/hardware/biometrics/BiometricConstants.java
+++ b/core/java/android/hardware/biometrics/BiometricConstants.java
@@ -17,6 +17,7 @@
package android.hardware.biometrics;
import android.annotation.UnsupportedAppUsage;
+import android.app.KeyguardManager;
/**
@@ -126,6 +127,13 @@
int BIOMETRIC_ERROR_NEGATIVE_BUTTON = 13;
/**
+ * The device does not have pin, pattern, or password set up. See
+ * {@link BiometricPrompt.Builder#setAllowDeviceCredential(boolean)} and
+ * {@link KeyguardManager#isDeviceSecure()}
+ */
+ int BIOMETRIC_ERROR_NO_DEVICE_CREDENTIAL = 14;
+
+ /**
* @hide
*/
@UnsupportedAppUsage
diff --git a/core/java/android/hardware/biometrics/BiometricFaceConstants.java b/core/java/android/hardware/biometrics/BiometricFaceConstants.java
index b708ef1..459ec62 100644
--- a/core/java/android/hardware/biometrics/BiometricFaceConstants.java
+++ b/core/java/android/hardware/biometrics/BiometricFaceConstants.java
@@ -16,6 +16,7 @@
package android.hardware.biometrics;
+import android.app.KeyguardManager;
import android.hardware.face.FaceManager;
/**
@@ -134,6 +135,13 @@
public static final int FACE_ERROR_NEGATIVE_BUTTON = 13;
/**
+ * The device does not have pin, pattern, or password set up. See
+ * {@link BiometricPrompt.Builder#setAllowDeviceCredential(boolean)} and
+ * {@link KeyguardManager#isDeviceSecure()}
+ */
+ public static final int BIOMETRIC_ERROR_NO_DEVICE_CREDENTIAL = 14;
+
+ /**
* @hide
*/
public static final int FACE_ERROR_VENDOR_BASE = 1000;
diff --git a/core/java/android/hardware/biometrics/BiometricFingerprintConstants.java b/core/java/android/hardware/biometrics/BiometricFingerprintConstants.java
index 041b2e6..6cbab47 100644
--- a/core/java/android/hardware/biometrics/BiometricFingerprintConstants.java
+++ b/core/java/android/hardware/biometrics/BiometricFingerprintConstants.java
@@ -17,6 +17,7 @@
package android.hardware.biometrics;
import android.annotation.UnsupportedAppUsage;
+import android.app.KeyguardManager;
import android.hardware.fingerprint.FingerprintManager;
/**
@@ -119,6 +120,14 @@
public static final int FINGERPRINT_ERROR_NEGATIVE_BUTTON = 13;
/**
+ * The device does not have pin, pattern, or password set up. See
+ * {@link BiometricPrompt.Builder#setAllowDeviceCredential(boolean)} and
+ * {@link KeyguardManager#isDeviceSecure()}
+ * @hide
+ */
+ public static final int BIOMETRIC_ERROR_NO_DEVICE_CREDENTIAL = 14;
+
+ /**
* @hide
*/
@UnsupportedAppUsage
diff --git a/core/java/android/hardware/biometrics/BiometricPrompt.java b/core/java/android/hardware/biometrics/BiometricPrompt.java
index d569a78..baf972b 100644
--- a/core/java/android/hardware/biometrics/BiometricPrompt.java
+++ b/core/java/android/hardware/biometrics/BiometricPrompt.java
@@ -23,6 +23,7 @@
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.RequiresPermission;
+import android.app.KeyguardManager;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Binder;
@@ -80,7 +81,7 @@
/**
* @hide
*/
- public static final String KEY_ENABLE_FALLBACK = "enable_fallback";
+ public static final String KEY_ALLOW_DEVICE_CREDENTIAL = "allow_device_credential";
/**
* Error/help message will show for this amount of time.
@@ -203,7 +204,8 @@
* "Cancel" button, but may be also used to show an alternative method for authentication,
* such as screen that asks for a backup password.
*
- * Note that this should not be set if {@link #setEnableFallback(boolean)} is set to true.
+ * Note that this should not be set if {@link #setAllowDeviceCredential(boolean)
+ * is set to true.
*
* @param text
* @return
@@ -250,7 +252,10 @@
/**
* The user will first be prompted to authenticate with biometrics, but also given the
- * option to authenticate with their device PIN, pattern, or password.
+ * option to authenticate with their device PIN, pattern, or password. Developers should
+ * first check {@link KeyguardManager#isDeviceSecure()} before enabling this. If the device
+ * is not secure, {@link BiometricPrompt#BIOMETRIC_ERROR_NO_DEVICE_CREDENTIAL} will be
+ * returned in {@link AuthenticationCallback#onAuthenticationError(int, CharSequence)}}
*
* Note that {@link #setNegativeButton(CharSequence, Executor,
* DialogInterface.OnClickListener)} should not be set if this is set to true.
@@ -259,8 +264,8 @@
* credentials (PIN, pattern, or password).
* @return
*/
- public Builder setEnableFallback(boolean enable) {
- mBundle.putBoolean(KEY_ENABLE_FALLBACK, enable);
+ public Builder setAllowDeviceCredential(boolean enable) {
+ mBundle.putBoolean(KEY_ALLOW_DEVICE_CREDENTIAL, enable);
return this;
}
@@ -273,7 +278,7 @@
final CharSequence title = mBundle.getCharSequence(KEY_TITLE);
final CharSequence negative = mBundle.getCharSequence(KEY_NEGATIVE_TEXT);
final boolean useDefaultTitle = mBundle.getBoolean(KEY_USE_DEFAULT_TITLE);
- final boolean enableFallback = mBundle.getBoolean(KEY_ENABLE_FALLBACK);
+ final boolean enableFallback = mBundle.getBoolean(KEY_ALLOW_DEVICE_CREDENTIAL);
if (TextUtils.isEmpty(title) && !useDefaultTitle) {
throw new IllegalArgumentException("Title must be set and non-empty");
@@ -281,7 +286,7 @@
throw new IllegalArgumentException("Negative text must be set and non-empty");
} else if (!TextUtils.isEmpty(negative) && enableFallback) {
throw new IllegalArgumentException("Can't have both negative button behavior"
- + " and fallback enabled");
+ + " and device credential enabled");
}
return new BiometricPrompt(mContext, mBundle, mPositiveButtonInfo, mNegativeButtonInfo);
}
@@ -541,8 +546,8 @@
if (callback == null) {
throw new IllegalArgumentException("Must supply a callback");
}
- if (mBundle.getBoolean(KEY_ENABLE_FALLBACK)) {
- throw new IllegalArgumentException("Fallback not supported with crypto");
+ if (mBundle.getBoolean(KEY_ALLOW_DEVICE_CREDENTIAL)) {
+ throw new IllegalArgumentException("Device credential not supported with crypto");
}
authenticateInternal(crypto, cancel, executor, callback, mContext.getUserId());
}
diff --git a/core/java/android/hardware/biometrics/IBiometricService.aidl b/core/java/android/hardware/biometrics/IBiometricService.aidl
index e4336d1..a20e2bf 100644
--- a/core/java/android/hardware/biometrics/IBiometricService.aidl
+++ b/core/java/android/hardware/biometrics/IBiometricService.aidl
@@ -54,7 +54,7 @@
// TODO(b/123378871): Remove when moved.
// CDCA needs to send results to BiometricService if it was invoked using BiometricPrompt's
- // setEnableFallback method, since there's no way for us to intercept onActivityResult.
+ // setAllowDeviceCredential method, since there's no way for us to intercept onActivityResult.
// CDCA is launched from BiometricService (startActivityAsUser) instead of *ForResult.
void onConfirmDeviceCredentialSuccess();
// TODO(b/123378871): Remove when moved.
diff --git a/core/java/android/provider/DeviceConfig.java b/core/java/android/provider/DeviceConfig.java
index d67d98c..41d3cbb 100644
--- a/core/java/android/provider/DeviceConfig.java
+++ b/core/java/android/provider/DeviceConfig.java
@@ -72,39 +72,14 @@
public static final String NAMESPACE_AUTOFILL = "autofill";
/**
- * ContentCapture-related properties definitions.
+ * Namespace for content capture feature used by on-device machine intelligence
+ * to provide suggestions in a privacy-safe manner.
*
* @hide
*/
@SystemApi
@TestApi
- public interface ContentCapture {
- String NAMESPACE = "content_capture";
-
- /**
- * Property used by {@code com.android.server.SystemServer} on start to decide whether
- * the Content Capture service should be created or not.
- *
- * <p>Possible values are:
- *
- * <ul>
- * <li>If set to {@code default}, it will only be set if the OEM provides and defines the
- * service name by overlaying {@code config_defaultContentCaptureService} (this is the
- * "default" mode)
- * <li>If set to {@code always}, it will always be enabled, even when the resource is not
- * overlaid (this is useful during development and to run the CTS tests on AOSP builds).
- * <li>Otherwise, it's explicitly disabled (this could work as a "kill switch" so OEMs
- * can disable it remotely in case of emergency by setting to something else (like
- * {@code "false"}); notice that it's also disabled if the OEM doesn't explicitly set one
- * of the values above).
- * </ul>
- *
- * @hide
- */
- // TODO(b/121153631): revert back to SERVICE_EXPLICITLY_ENABLED approach
- @TestApi
- String PROPERTY_CONTENTCAPTURE_ENABLED = "enable_contentcapture";
- }
+ public static final String NAMESPACE_CONTENT_CAPTURE = "content_capture";
/**
* Namespace for all input-related features that are used at the native level.
diff --git a/core/java/android/provider/MediaStore.java b/core/java/android/provider/MediaStore.java
index edaf7bb..0b38420 100644
--- a/core/java/android/provider/MediaStore.java
+++ b/core/java/android/provider/MediaStore.java
@@ -157,10 +157,6 @@
public static final String PARAM_DELETE_DATA = "deletedata";
/** {@hide} */
- public static final String PARAM_PRIMARY = "primary";
- /** {@hide} */
- public static final String PARAM_SECONDARY = "secondary";
- /** {@hide} */
public static final String PARAM_INCLUDE_PENDING = "includePending";
/** {@hide} */
public static final String PARAM_INCLUDE_TRASHED = "includeTrashed";
@@ -582,14 +578,7 @@
*/
public static @NonNull Uri createPending(@NonNull Context context,
@NonNull PendingParams params) {
- final Uri.Builder builder = params.insertUri.buildUpon();
- if (!TextUtils.isEmpty(params.primaryDirectory)) {
- builder.appendQueryParameter(PARAM_PRIMARY, params.primaryDirectory);
- }
- if (!TextUtils.isEmpty(params.secondaryDirectory)) {
- builder.appendQueryParameter(PARAM_SECONDARY, params.secondaryDirectory);
- }
- return context.getContentResolver().insert(builder.build(), params.insertValues);
+ return context.getContentResolver().insert(params.insertUri, params.insertValues);
}
/**
@@ -612,10 +601,6 @@
public final Uri insertUri;
/** {@hide} */
public final ContentValues insertValues;
- /** {@hide} */
- public String primaryDirectory;
- /** {@hide} */
- public String secondaryDirectory;
/**
* Create parameters that describe a pending media item.
@@ -657,7 +642,11 @@
* @see MediaColumns#PRIMARY_DIRECTORY
*/
public void setPrimaryDirectory(@Nullable String primaryDirectory) {
- this.primaryDirectory = primaryDirectory;
+ if (primaryDirectory == null) {
+ this.insertValues.remove(MediaColumns.PRIMARY_DIRECTORY);
+ } else {
+ this.insertValues.put(MediaColumns.PRIMARY_DIRECTORY, primaryDirectory);
+ }
}
/**
@@ -670,7 +659,11 @@
* @see MediaColumns#SECONDARY_DIRECTORY
*/
public void setSecondaryDirectory(@Nullable String secondaryDirectory) {
- this.secondaryDirectory = secondaryDirectory;
+ if (secondaryDirectory == null) {
+ this.insertValues.remove(MediaColumns.SECONDARY_DIRECTORY);
+ } else {
+ this.insertValues.put(MediaColumns.SECONDARY_DIRECTORY, secondaryDirectory);
+ }
}
/**
@@ -3173,20 +3166,29 @@
final ArrayList<File> res = new ArrayList<>();
if (VOLUME_INTERNAL.equals(volumeName)) {
- res.add(new File(Environment.getRootDirectory(), "media"));
- res.add(new File(Environment.getOemDirectory(), "media"));
- res.add(new File(Environment.getProductDirectory(), "media"));
+ addCanoncialFile(res, new File(Environment.getRootDirectory(), "media"));
+ addCanoncialFile(res, new File(Environment.getOemDirectory(), "media"));
+ addCanoncialFile(res, new File(Environment.getProductDirectory(), "media"));
} else {
- res.add(getVolumePath(volumeName));
+ addCanoncialFile(res, getVolumePath(volumeName));
final UserManager um = AppGlobals.getInitialApplication()
.getSystemService(UserManager.class);
if (VOLUME_EXTERNAL.equals(volumeName) && um.isDemoUser()) {
- res.add(Environment.getDataPreloadsMediaDirectory());
+ addCanoncialFile(res, Environment.getDataPreloadsMediaDirectory());
}
}
return res;
}
+ private static void addCanoncialFile(List<File> list, File file) {
+ try {
+ list.add(file.getCanonicalFile());
+ } catch (IOException e) {
+ Log.w(TAG, "Failed to resolve " + file + ": " + e);
+ list.add(file);
+ }
+ }
+
/**
* Uri for querying the state of the media scanner.
*/
diff --git a/core/java/android/view/Choreographer.java b/core/java/android/view/Choreographer.java
index 03e8a0f..c64386e 100644
--- a/core/java/android/view/Choreographer.java
+++ b/core/java/android/view/Choreographer.java
@@ -133,7 +133,7 @@
};
// Enable/disable vsync for animations and drawing.
- @UnsupportedAppUsage
+ @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 123769497)
private static final boolean USE_VSYNC = SystemProperties.getBoolean(
"debug.choreographer.vsync", true);
diff --git a/core/java/android/view/ScaleGestureDetector.java b/core/java/android/view/ScaleGestureDetector.java
index dc11d3d..c24b8b2 100644
--- a/core/java/android/view/ScaleGestureDetector.java
+++ b/core/java/android/view/ScaleGestureDetector.java
@@ -18,7 +18,6 @@
import android.annotation.UnsupportedAppUsage;
import android.content.Context;
-import android.content.res.Resources;
import android.os.Build;
import android.os.Handler;
@@ -145,7 +144,7 @@
private boolean mInProgress;
@UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 123768938)
private int mSpanSlop;
- @UnsupportedAppUsage
+ @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 123768938)
private int mMinSpan;
private final Handler mHandler;
@@ -200,10 +199,9 @@
Handler handler) {
mContext = context;
mListener = listener;
- mSpanSlop = ViewConfiguration.get(context).getScaledTouchSlop() * 2;
-
- final Resources res = context.getResources();
- mMinSpan = res.getDimensionPixelSize(com.android.internal.R.dimen.config_minScalingSpan);
+ final ViewConfiguration viewConfiguration = ViewConfiguration.get(context);
+ mSpanSlop = viewConfiguration.getScaledTouchSlop() * 2;
+ mMinSpan = viewConfiguration.getScaledMinScalingSpan();
mHandler = handler;
// Quick scale is enabled by default after JB_MR2
final int targetSdkVersion = context.getApplicationInfo().targetSdkVersion;
diff --git a/core/java/android/view/ViewConfiguration.java b/core/java/android/view/ViewConfiguration.java
index 6beae37..bb29ed6 100644
--- a/core/java/android/view/ViewConfiguration.java
+++ b/core/java/android/view/ViewConfiguration.java
@@ -293,12 +293,14 @@
*/
private static final float AMBIGUOUS_GESTURE_MULTIPLIER = 2f;
+ private final boolean mConstructedWithContext;
private final int mEdgeSlop;
private final int mFadingEdgeLength;
private final int mMinimumFlingVelocity;
private final int mMaximumFlingVelocity;
private final int mScrollbarSize;
private final int mTouchSlop;
+ private final int mMinScalingSpan;
private final int mHoverSlop;
private final int mMinScrollbarTouchTarget;
private final int mDoubleTapTouchSlop;
@@ -329,6 +331,7 @@
*/
@Deprecated
public ViewConfiguration() {
+ mConstructedWithContext = false;
mEdgeSlop = EDGE_SLOP;
mFadingEdgeLength = FADING_EDGE_LENGTH;
mMinimumFlingVelocity = MINIMUM_FLING_VELOCITY;
@@ -350,6 +353,10 @@
mHorizontalScrollFactor = HORIZONTAL_SCROLL_FACTOR;
mVerticalScrollFactor = VERTICAL_SCROLL_FACTOR;
mShowMenuShortcutsWhenKeyboardPresent = false;
+
+ // Getter throws if mConstructedWithContext is false so doesn't matter what
+ // this value is.
+ mMinScalingSpan = 0;
}
/**
@@ -363,6 +370,7 @@
* @see android.util.DisplayMetrics
*/
private ViewConfiguration(Context context) {
+ mConstructedWithContext = true;
final Resources res = context.getResources();
final DisplayMetrics metrics = res.getDisplayMetrics();
final Configuration config = res.getConfiguration();
@@ -447,6 +455,8 @@
mShowMenuShortcutsWhenKeyboardPresent = res.getBoolean(
com.android.internal.R.bool.config_showMenuShortcutsWhenKeyboardPresent);
+ mMinScalingSpan = res.getDimensionPixelSize(
+ com.android.internal.R.dimen.config_minScalingSpan);
}
/**
@@ -959,6 +969,26 @@
}
/**
+ * Retrieves the distance in pixels between touches that must be reached for a gesture to be
+ * interpreted as scaling.
+ *
+ * In general, scaling shouldn't start until this distance has been met or surpassed, and
+ * scaling should end when the distance in pixels between touches drops below this distance.
+ *
+ * @return The distance in pixels
+ * @throws IllegalStateException if this method is called on a ViewConfiguration that was
+ * instantiated using a constructor with no Context parameter.
+ */
+ public int getScaledMinScalingSpan() {
+ if (!mConstructedWithContext) {
+ throw new IllegalStateException("Min scaling span cannot be determined when this "
+ + "method is called on a ViewConfiguration that was instantiated using a "
+ + "constructor with no Context parameter");
+ }
+ return mMinScalingSpan;
+ }
+
+ /**
* @hide
* @return Whether or not marquee should use fading edges.
*/
diff --git a/core/java/android/view/contentcapture/ContentCaptureManager.java b/core/java/android/view/contentcapture/ContentCaptureManager.java
index 2512b95..634443d 100644
--- a/core/java/android/view/contentcapture/ContentCaptureManager.java
+++ b/core/java/android/view/contentcapture/ContentCaptureManager.java
@@ -66,6 +66,25 @@
*/
private static final int SYNC_CALLS_TIMEOUT_MS = 5000;
+ /**
+ * DeviceConfig property used by {@code com.android.server.SystemServer} on start to decide
+ * whether the Content Capture service should be created or not
+ *
+ * <p>By default it should *NOT* be set (or set to {@code "default"}, so the decision is based
+ * on whether the OEM provides an implementation for the service), but it can be overridden to:
+ *
+ * <ul>
+ * <li>Provide a "kill switch" so OEMs can disable it remotely in case of emergency (when
+ * it's set to {@code "false"}).
+ * <li>Enable the CTS tests to be run on AOSP builds (when it's set to {@code "true"}).
+ * </ul>
+ *
+ * @hide
+ */
+ @TestApi
+ public static final String DEVICE_CONFIG_PROPERTY_SERVICE_EXPLICITLY_ENABLED =
+ "service_explicitly_enabled";
+
private final Object mLock = new Object();
@NonNull
diff --git a/core/java/android/view/textclassifier/ConversationAction.java b/core/java/android/view/textclassifier/ConversationAction.java
index 1a6e5d8..ae6a645 100644
--- a/core/java/android/view/textclassifier/ConversationAction.java
+++ b/core/java/android/view/textclassifier/ConversationAction.java
@@ -92,6 +92,9 @@
*/
public static final String TYPE_SHARE_LOCATION = "share_location";
+ /** @hide **/
+ public static final String TYPE_ADD_CONTACT = "add_contact";
+
public static final Creator<ConversationAction> CREATOR =
new Creator<ConversationAction>() {
@Override
diff --git a/core/java/android/view/textclassifier/TextClassificationConstants.java b/core/java/android/view/textclassifier/TextClassificationConstants.java
index ee9e04e..2ef8d04 100644
--- a/core/java/android/view/textclassifier/TextClassificationConstants.java
+++ b/core/java/android/view/textclassifier/TextClassificationConstants.java
@@ -131,6 +131,7 @@
.add(ConversationAction.TYPE_TRACK_FLIGHT)
.add(ConversationAction.TYPE_VIEW_CALENDAR)
.add(ConversationAction.TYPE_VIEW_MAP)
+ .add(ConversationAction.TYPE_ADD_CONTACT)
.toString();
/**
* < 0 : Not set. Use value from LangId model.
diff --git a/core/java/android/webkit/OWNERS b/core/java/android/webkit/OWNERS
index 00e540a..b33da57 100644
--- a/core/java/android/webkit/OWNERS
+++ b/core/java/android/webkit/OWNERS
@@ -1,3 +1,4 @@
changwan@google.com
+ntfschr@google.com
tobiasjs@google.com
torne@google.com
diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java
index 6039350..2171fc5 100644
--- a/core/java/android/webkit/WebView.java
+++ b/core/java/android/webkit/WebView.java
@@ -61,6 +61,7 @@
import android.view.autofill.AutofillValue;
import android.view.inputmethod.EditorInfo;
import android.view.inputmethod.InputConnection;
+import android.view.inspector.InspectableProperty;
import android.view.textclassifier.TextClassifier;
import android.widget.AbsoluteLayout;
@@ -1239,6 +1240,7 @@
*
* @return the URL for the current page
*/
+ @InspectableProperty(hasAttributeId = false)
@ViewDebug.ExportedProperty(category = "webview")
public String getUrl() {
checkThread();
@@ -1254,6 +1256,7 @@
*
* @return the URL that was originally requested for the current page
*/
+ @InspectableProperty(hasAttributeId = false)
@ViewDebug.ExportedProperty(category = "webview")
public String getOriginalUrl() {
checkThread();
@@ -1266,6 +1269,7 @@
*
* @return the title for the current page
*/
+ @InspectableProperty(hasAttributeId = false)
@ViewDebug.ExportedProperty(category = "webview")
public String getTitle() {
checkThread();
@@ -1278,6 +1282,7 @@
*
* @return the favicon for the current page
*/
+ @InspectableProperty(hasAttributeId = false)
public Bitmap getFavicon() {
checkThread();
return mProvider.getFavicon();
@@ -1300,6 +1305,7 @@
*
* @return the progress for the current page between 0 and 100
*/
+ @InspectableProperty(hasAttributeId = false)
public int getProgress() {
checkThread();
return mProvider.getProgress();
@@ -1310,6 +1316,7 @@
*
* @return the height of the HTML content
*/
+ @InspectableProperty(hasAttributeId = false)
@ViewDebug.ExportedProperty(category = "webview")
public int getContentHeight() {
checkThread();
@@ -2276,6 +2283,11 @@
*
* @return the requested renderer priority policy.
*/
+ @InspectableProperty(hasAttributeId = false, enumMapping = {
+ @InspectableProperty.EnumMap(name = "waived", value = RENDERER_PRIORITY_WAIVED),
+ @InspectableProperty.EnumMap(name = "bound", value = RENDERER_PRIORITY_BOUND),
+ @InspectableProperty.EnumMap(name = "important", value = RENDERER_PRIORITY_IMPORTANT)
+ })
@RendererPriority
public int getRendererRequestedPriority() {
return mProvider.getRendererRequestedPriority();
@@ -2288,6 +2300,7 @@
* @return whether this WebView requests a priority of
* {@link #RENDERER_PRIORITY_WAIVED} when not visible.
*/
+ @InspectableProperty(hasAttributeId = false)
public boolean getRendererPriorityWaivedWhenNotVisible() {
return mProvider.getRendererPriorityWaivedWhenNotVisible();
}
diff --git a/core/java/android/widget/ImageView.java b/core/java/android/widget/ImageView.java
index e9c31db..800b19c 100644
--- a/core/java/android/widget/ImageView.java
+++ b/core/java/android/widget/ImageView.java
@@ -138,7 +138,7 @@
private int mDrawableWidth;
@UnsupportedAppUsage
private int mDrawableHeight;
- @UnsupportedAppUsage
+ @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 124051687)
private Matrix mDrawMatrix = null;
// Avoid allocations...
diff --git a/core/java/android/widget/ScrollView.java b/core/java/android/widget/ScrollView.java
index 24bc9f1..c360903 100644
--- a/core/java/android/widget/ScrollView.java
+++ b/core/java/android/widget/ScrollView.java
@@ -141,13 +141,13 @@
private boolean mSmoothScrollingEnabled = true;
private int mTouchSlop;
- @UnsupportedAppUsage
+ @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 124051125)
private int mMinimumVelocity;
private int mMaximumVelocity;
- @UnsupportedAppUsage
+ @UnsupportedAppUsage(maxTargetSdk = VERSION_CODES.P, trackingBug = 124050903)
private int mOverscrollDistance;
- @UnsupportedAppUsage
+ @UnsupportedAppUsage(maxTargetSdk = VERSION_CODES.P, trackingBug = 124050903)
private int mOverflingDistance;
private float mVerticalScrollFactor;
diff --git a/core/jni/com_android_internal_os_Zygote.cpp b/core/jni/com_android_internal_os_Zygote.cpp
index bbe89d6..d04db92 100644
--- a/core/jni/com_android_internal_os_Zygote.cpp
+++ b/core/jni/com_android_internal_os_Zygote.cpp
@@ -598,23 +598,31 @@
return 0;
}
+static void CreateDir(const std::string& dir,
+ mode_t mode, uid_t uid, gid_t gid,
+ fail_fn_t fail_fn) {
+ if (TEMP_FAILURE_RETRY(access(dir.c_str(), F_OK)) == 0) {
+ return;
+ } else if (errno != ENOENT) {
+ fail_fn(CREATE_ERROR("Failed to stat %s: %s", dir.c_str(), strerror(errno)));
+ }
+ if (fs_prepare_dir(dir.c_str(), mode, uid, gid) != 0) {
+ fail_fn(CREATE_ERROR("fs_prepare_dir failed on %s: %s",
+ dir.c_str(), strerror(errno)));
+ }
+}
+
static void CreatePkgSandbox(uid_t uid, const std::string& package_name, fail_fn_t fail_fn) {
// Create /mnt/user/0/package/<package-name>
userid_t user_id = multiuser_get_user_id(uid);
std::string pkg_sandbox_dir = StringPrintf("/mnt/user/%d", user_id);
- if (fs_prepare_dir(pkg_sandbox_dir.c_str(), 0751, AID_ROOT, AID_ROOT) != 0) {
- fail_fn(CREATE_ERROR("fs_prepare_dir failed on %s", pkg_sandbox_dir.c_str()));
- }
+ CreateDir(pkg_sandbox_dir, 0751, AID_ROOT, AID_ROOT, fail_fn);
StringAppendF(&pkg_sandbox_dir, "/package");
- if (fs_prepare_dir(pkg_sandbox_dir.c_str(), 0700, AID_ROOT, AID_ROOT) != 0) {
- fail_fn(CREATE_ERROR("fs_prepare_dir failed on %s", pkg_sandbox_dir.c_str()));
- }
+ CreateDir(pkg_sandbox_dir, 0700, AID_ROOT, AID_ROOT, fail_fn);
StringAppendF(&pkg_sandbox_dir, "/%s", package_name.c_str());
- if (fs_prepare_dir(pkg_sandbox_dir.c_str(), 0755, uid, uid) != 0) {
- fail_fn(CREATE_ERROR("fs_prepare_dir failed on %s", pkg_sandbox_dir.c_str()));
- }
+ CreateDir(pkg_sandbox_dir, 0700, AID_ROOT, AID_ROOT, fail_fn);
}
static void BindMount(const std::string& sourceDir, const std::string& targetDir,
@@ -629,20 +637,41 @@
static void MountPkgSpecificDir(const std::string& mntSourceRoot,
const std::string& mntTargetRoot,
const std::string& packageName,
+ uid_t uid,
const char* dirName,
fail_fn_t fail_fn) {
std::string mntSourceDir = StringPrintf("%s/Android/%s/%s",
mntSourceRoot.c_str(), dirName, packageName.c_str());
+ CreateDir(mntSourceDir, 0755, uid, uid, fail_fn);
+
std::string mntTargetDir = StringPrintf("%s/Android/%s/%s",
mntTargetRoot.c_str(), dirName, packageName.c_str());
+ CreateDir(mntTargetDir, 0755, uid, uid, fail_fn);
BindMount(mntSourceDir, mntTargetDir, fail_fn);
}
+
+static void createPkgSpecificDirRoots(const std::string& parentDir,
+ bool createSandbox,
+ mode_t mode, uid_t uid, gid_t gid,
+ fail_fn_t fail_fn) {
+ std::string androidDir = StringPrintf("%s/Android", parentDir.c_str());
+ CreateDir(androidDir, mode, uid, gid, fail_fn);
+ std::vector<std::string> dirs = {"data", "media", "obb"};
+ if (createSandbox) {
+ dirs.push_back("sandbox");
+ }
+ for (auto& dir : dirs) {
+ std::string path = StringPrintf("%s/%s", androidDir.c_str(), dir.c_str());
+ CreateDir(path, mode, uid, gid, fail_fn);
+ }
+}
+
static void PreparePkgSpecificDirs(const std::vector<std::string>& packageNames,
const std::vector<std::string>& volumeLabels,
bool mountAllObbs, const std::string& sandboxId,
- userid_t userId, fail_fn_t fail_fn) {
+ userid_t userId, uid_t uid, fail_fn_t fail_fn) {
for (auto& label : volumeLabels) {
std::string mntSource = StringPrintf("/mnt/runtime/write/%s", label.c_str());
std::string mntTarget = StringPrintf("/storage/%s", label.c_str());
@@ -651,15 +680,26 @@
StringAppendF(&mntTarget, "/%d", userId);
}
+ if (TEMP_FAILURE_RETRY(access(mntSource.c_str(), F_OK)) < 0) {
+ ALOGE("Can't access %s: %s", mntSource.c_str(), strerror(errno));
+ continue;
+ }
+
+ // Create /mnt/runtime/write/emulated/0/Android/{data,media,obb,sandbox}
+ createPkgSpecificDirRoots(mntSource, true, 0700, AID_ROOT, AID_ROOT, fail_fn);
+
std::string sandboxSource = StringPrintf("%s/Android/sandbox/%s",
mntSource.c_str(), sandboxId.c_str());
+ CreateDir(sandboxSource, 0755, uid, uid, fail_fn);
BindMount(sandboxSource, mntTarget, fail_fn);
+ // Create /storage/emulated/0/Android/{data,media,obb}
+ createPkgSpecificDirRoots(mntTarget, false, 0755, uid, uid, fail_fn);
for (auto& package : packageNames) {
- MountPkgSpecificDir(mntSource, mntTarget, package, "data", fail_fn);
- MountPkgSpecificDir(mntSource, mntTarget, package, "media", fail_fn);
+ MountPkgSpecificDir(mntSource, mntTarget, package, uid, "data", fail_fn);
+ MountPkgSpecificDir(mntSource, mntTarget, package, uid, "media", fail_fn);
if (!mountAllObbs) {
- MountPkgSpecificDir(mntSource, mntTarget, package, "obb", fail_fn);
+ MountPkgSpecificDir(mntSource, mntTarget, package, uid, "obb", fail_fn);
}
}
@@ -774,7 +814,7 @@
// care of by vold later.
if (sandboxAlreadyCreated) {
PreparePkgSpecificDirs(packages_for_uid, visible_vol_ids,
- mount_mode == MOUNT_EXTERNAL_INSTALLER, sandbox_id, user_id, fail_fn);
+ mount_mode == MOUNT_EXTERNAL_INSTALLER, sandbox_id, user_id, uid, fail_fn);
}
}
} else {
diff --git a/core/proto/android/bluetooth/enums.proto b/core/proto/android/bluetooth/enums.proto
index 5b5c9c2..b4f3d1e 100644
--- a/core/proto/android/bluetooth/enums.proto
+++ b/core/proto/android/bluetooth/enums.proto
@@ -132,3 +132,9 @@
// This socket is closed
SOCKET_CONNECTION_STATE_DISCONNECTED = 5;
}
+
+enum SocketRoleEnum {
+ SOCKET_ROLE_UNKNOWN = 0;
+ SOCKET_ROLE_LISTEN = 1;
+ SOCKET_ROLE_CONNECTION = 2;
+}
diff --git a/core/proto/android/hardware/biometrics/enums.proto b/core/proto/android/hardware/biometrics/enums.proto
index 91f2acb..973e3e6 100644
--- a/core/proto/android/hardware/biometrics/enums.proto
+++ b/core/proto/android/hardware/biometrics/enums.proto
@@ -43,4 +43,16 @@
ACTION_AUTHENTICATE = 2;
ACTION_ENUMERATE = 3;
ACTION_REMOVE = 4;
+}
+
+enum IssueEnum {
+ ISSUE_UNKNOWN = 0;
+ // When a biometric HAL has crashed.
+ ISSUE_HAL_DEATH = 1;
+ // When Android Framework has a template that doesn't exist in the HAL. The framework
+ // is expected to remove its template to stay in sync with the HAL.
+ ISSUE_UNKNOWN_TEMPLATE_ENROLLED_FRAMEWORK = 2;
+ // When the HAL has a template that doesn't exist in Android Framework. The framework
+ // is expected to notify the HAL to remove this template to stay in sync with the framework.
+ ISSUE_UNKNOWN_TEMPLATE_ENROLLED_HAL = 3;
}
\ No newline at end of file
diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml
index 75a91eb..6d5bd4b 100644
--- a/core/res/res/values/strings.xml
+++ b/core/res/res/values/strings.xml
@@ -1471,6 +1471,8 @@
<string name="biometric_not_recognized">Not recognized</string>
<!-- Message shown when biometric authentication has been canceled [CHAR LIMIT=50] -->
<string name="biometric_error_canceled">Authentication canceled</string>
+ <!-- Message returned to applications if BiometricPrompt setAllowDeviceCredentials is enabled but no pin, pattern, or password is set. [CHAR LIMIT=NONE] -->
+ <string name="biometric_error_device_not_secured">No pin, pattern, or password set</string>
<!-- Message shown during fingerprint acquisision when the fingerprint cannot be recognized -->
<string name="fingerprint_acquired_partial">Partial fingerprint detected. Please try again.</string>
diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml
index 32d63e4..410a8c16 100644
--- a/core/res/res/values/symbols.xml
+++ b/core/res/res/values/symbols.xml
@@ -2473,6 +2473,7 @@
<java-symbol type="string" name="biometric_error_user_canceled" />
<java-symbol type="string" name="biometric_not_recognized" />
<java-symbol type="string" name="biometric_error_canceled" />
+ <java-symbol type="string" name="biometric_error_device_not_secured" />
<!-- Fingerprint messages -->
<java-symbol type="string" name="fingerprint_error_unable_to_process" />
diff --git a/core/tests/coretests/src/android/content/pm/PackageParserTest.java b/core/tests/coretests/src/android/content/pm/PackageParserTest.java
index 300394d..aa0e0cd 100644
--- a/core/tests/coretests/src/android/content/pm/PackageParserTest.java
+++ b/core/tests/coretests/src/android/content/pm/PackageParserTest.java
@@ -162,14 +162,13 @@
}
private void verifyComputeTargetSdkVersion(int targetSdkVersion, String targetSdkCodename,
- boolean isPlatformReleased, int expectedTargetSdk, boolean forceCurrentDev) {
+ boolean isPlatformReleased, int expectedTargetSdk) {
final String[] outError = new String[1];
final int result = PackageParser.computeTargetSdkVersion(
targetSdkVersion,
targetSdkCodename,
isPlatformReleased ? CODENAMES_RELEASED : CODENAMES_PRE_RELEASE,
- outError,
- forceCurrentDev);
+ outError);
assertEquals(result, expectedTargetSdk);
@@ -185,28 +184,23 @@
// Do allow older release targetSdkVersion on pre-release platform.
// APP: Released API 10
// DEV: Pre-release API 20
- verifyComputeTargetSdkVersion(OLDER_VERSION, RELEASED, false, OLDER_VERSION,
- false /* forceCurrentDev */);
+ verifyComputeTargetSdkVersion(OLDER_VERSION, RELEASED, false, OLDER_VERSION);
// Do allow same release targetSdkVersion on pre-release platform.
// APP: Released API 20
// DEV: Pre-release API 20
- verifyComputeTargetSdkVersion(PLATFORM_VERSION, RELEASED, false, PLATFORM_VERSION,
- false /* forceCurrentDev */);
+ verifyComputeTargetSdkVersion(PLATFORM_VERSION, RELEASED, false, PLATFORM_VERSION);
// Do allow newer release targetSdkVersion on pre-release platform.
// APP: Released API 30
// DEV: Pre-release API 20
- verifyComputeTargetSdkVersion(NEWER_VERSION, RELEASED, false, NEWER_VERSION,
- false /* forceCurrentDev */);
+ verifyComputeTargetSdkVersion(NEWER_VERSION, RELEASED, false, NEWER_VERSION);
// Don't allow older pre-release targetSdkVersion on pre-release platform.
// APP: Pre-release API 10
// DEV: Pre-release API 20
- verifyComputeTargetSdkVersion(OLDER_VERSION, OLDER_PRE_RELEASE, false, -1,
- false /* forceCurrentDev */);
- verifyComputeTargetSdkVersion(OLDER_VERSION, OLDER_PRE_RELEASE_WITH_FINGERPRINT, false, -1,
- false /* forceCurrentDev */);
+ verifyComputeTargetSdkVersion(OLDER_VERSION, OLDER_PRE_RELEASE, false, -1);
+ verifyComputeTargetSdkVersion(OLDER_VERSION, OLDER_PRE_RELEASE_WITH_FINGERPRINT, false, -1);
// Do allow same pre-release targetSdkVersion on pre-release platform,
@@ -214,27 +208,16 @@
// APP: Pre-release API 20
// DEV: Pre-release API 20
verifyComputeTargetSdkVersion(PLATFORM_VERSION, PRE_RELEASE, false,
- Build.VERSION_CODES.CUR_DEVELOPMENT, false /* forceCurrentDev */);
+ Build.VERSION_CODES.CUR_DEVELOPMENT);
verifyComputeTargetSdkVersion(PLATFORM_VERSION, PRE_RELEASE_WITH_FINGERPRINT, false,
- Build.VERSION_CODES.CUR_DEVELOPMENT, false /* forceCurrentDev */);
+ Build.VERSION_CODES.CUR_DEVELOPMENT);
// Don't allow newer pre-release targetSdkVersion on pre-release platform.
// APP: Pre-release API 30
// DEV: Pre-release API 20
- verifyComputeTargetSdkVersion(NEWER_VERSION, NEWER_PRE_RELEASE, false, -1,
- false /* forceCurrentDev */);
- verifyComputeTargetSdkVersion(NEWER_VERSION, NEWER_PRE_RELEASE_WITH_FINGERPRINT, false, -1,
- false /* forceCurrentDev */);
-
-
- // Force newer pre-release targetSdkVersion to current pre-release platform.
- // APP: Pre-release API 30
- // DEV: Pre-release API 20
- verifyComputeTargetSdkVersion(NEWER_VERSION, NEWER_PRE_RELEASE, false,
- Build.VERSION_CODES.CUR_DEVELOPMENT, true /* forceCurrentDev */);
- verifyComputeTargetSdkVersion(NEWER_VERSION, NEWER_PRE_RELEASE_WITH_FINGERPRINT, false,
- Build.VERSION_CODES.CUR_DEVELOPMENT, true /* forceCurrentDev */);
+ verifyComputeTargetSdkVersion(NEWER_VERSION, NEWER_PRE_RELEASE, false, -1);
+ verifyComputeTargetSdkVersion(NEWER_VERSION, NEWER_PRE_RELEASE_WITH_FINGERPRINT, false, -1);
}
@Test
@@ -242,45 +225,36 @@
// Do allow older release targetSdkVersion on released platform.
// APP: Released API 10
// DEV: Released API 20
- verifyComputeTargetSdkVersion(OLDER_VERSION, RELEASED, true, OLDER_VERSION,
- false /* forceCurrentDev */);
+ verifyComputeTargetSdkVersion(OLDER_VERSION, RELEASED, true, OLDER_VERSION);
// Do allow same release targetSdkVersion on released platform.
// APP: Released API 20
// DEV: Released API 20
- verifyComputeTargetSdkVersion(PLATFORM_VERSION, RELEASED, true, PLATFORM_VERSION,
- false /* forceCurrentDev */);
+ verifyComputeTargetSdkVersion(PLATFORM_VERSION, RELEASED, true, PLATFORM_VERSION);
// Do allow newer release targetSdkVersion on released platform.
// APP: Released API 30
// DEV: Released API 20
- verifyComputeTargetSdkVersion(NEWER_VERSION, RELEASED, true, NEWER_VERSION,
- false /* forceCurrentDev */);
+ verifyComputeTargetSdkVersion(NEWER_VERSION, RELEASED, true, NEWER_VERSION);
// Don't allow older pre-release targetSdkVersion on released platform.
// APP: Pre-release API 10
// DEV: Released API 20
- verifyComputeTargetSdkVersion(OLDER_VERSION, OLDER_PRE_RELEASE, true, -1,
- false /* forceCurrentDev */);
- verifyComputeTargetSdkVersion(OLDER_VERSION, OLDER_PRE_RELEASE_WITH_FINGERPRINT, true, -1,
- false /* forceCurrentDev */);
+ verifyComputeTargetSdkVersion(OLDER_VERSION, OLDER_PRE_RELEASE, true, -1);
+ verifyComputeTargetSdkVersion(OLDER_VERSION, OLDER_PRE_RELEASE_WITH_FINGERPRINT, true, -1);
// Don't allow same pre-release targetSdkVersion on released platform.
// APP: Pre-release API 20
// DEV: Released API 20
- verifyComputeTargetSdkVersion(PLATFORM_VERSION, PRE_RELEASE, true, -1,
- false /* forceCurrentDev */);
- verifyComputeTargetSdkVersion(PLATFORM_VERSION, PRE_RELEASE_WITH_FINGERPRINT, true, -1,
- false /* forceCurrentDev */);
+ verifyComputeTargetSdkVersion(PLATFORM_VERSION, PRE_RELEASE, true, -1);
+ verifyComputeTargetSdkVersion(PLATFORM_VERSION, PRE_RELEASE_WITH_FINGERPRINT, true, -1);
// Don't allow newer pre-release targetSdkVersion on released platform.
// APP: Pre-release API 30
// DEV: Released API 20
- verifyComputeTargetSdkVersion(NEWER_VERSION, NEWER_PRE_RELEASE, true, -1,
- false /* forceCurrentDev */);
- verifyComputeTargetSdkVersion(NEWER_VERSION, NEWER_PRE_RELEASE_WITH_FINGERPRINT, true, -1,
- false /* forceCurrentDev */);
+ verifyComputeTargetSdkVersion(NEWER_VERSION, NEWER_PRE_RELEASE, true, -1);
+ verifyComputeTargetSdkVersion(NEWER_VERSION, NEWER_PRE_RELEASE_WITH_FINGERPRINT, true, -1);
}
/**
diff --git a/core/tests/coretests/src/android/view/textclassifier/TextClassificationConstantsTest.java b/core/tests/coretests/src/android/view/textclassifier/TextClassificationConstantsTest.java
index 32bafec..fe2a660 100644
--- a/core/tests/coretests/src/android/view/textclassifier/TextClassificationConstantsTest.java
+++ b/core/tests/coretests/src/android/view/textclassifier/TextClassificationConstantsTest.java
@@ -195,11 +195,13 @@
assertWithMessage("in_app_conversation_action_types_default")
.that(constants.getInAppConversationActionTypes())
.containsExactly("text_reply", "create_reminder", "call_phone", "open_url",
- "send_email", "send_sms", "track_flight", "view_calendar", "view_map");
+ "send_email", "send_sms", "track_flight", "view_calendar", "view_map",
+ "add_contact");
assertWithMessage("notification_conversation_action_types_default")
.that(constants.getNotificationConversationActionTypes())
.containsExactly("text_reply", "create_reminder", "call_phone", "open_url",
- "send_email", "send_sms", "track_flight", "view_calendar", "view_map");
+ "send_email", "send_sms", "track_flight", "view_calendar", "view_map",
+ "add_contact");
assertWithMessage("lang_id_threshold_override")
.that(constants.getLangIdThresholdOverride()).isWithin(EPSILON).of(-1f);
}
diff --git a/graphics/java/android/graphics/drawable/ColorStateListDrawable.java b/graphics/java/android/graphics/drawable/ColorStateListDrawable.java
index c0c6a4f..5181d89 100644
--- a/graphics/java/android/graphics/drawable/ColorStateListDrawable.java
+++ b/graphics/java/android/graphics/drawable/ColorStateListDrawable.java
@@ -157,28 +157,22 @@
@Override
public void invalidateDrawable(Drawable who) {
- final Callback callback = getCallback();
-
- if (callback != null) {
- callback.invalidateDrawable(who);
+ if (who == mColorDrawable && getCallback() != null) {
+ getCallback().invalidateDrawable(this);
}
}
@Override
public void scheduleDrawable(Drawable who, Runnable what, long when) {
- final Callback callback = getCallback();
-
- if (callback != null) {
- callback.scheduleDrawable(who, what, when);
+ if (who == mColorDrawable && getCallback() != null) {
+ getCallback().scheduleDrawable(this, what, when);
}
}
@Override
public void unscheduleDrawable(Drawable who, Runnable what) {
- final Callback callback = getCallback();
-
- if (callback != null) {
- callback.unscheduleDrawable(who, what);
+ if (who == mColorDrawable && getCallback() != null) {
+ getCallback().unscheduleDrawable(this, what);
}
}
diff --git a/keystore/java/android/security/KeyChain.java b/keystore/java/android/security/KeyChain.java
index 5d5e40f..eb169be 100644
--- a/keystore/java/android/security/KeyChain.java
+++ b/keystore/java/android/security/KeyChain.java
@@ -18,8 +18,8 @@
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.SdkConstant;
-import android.annotation.WorkerThread;
import android.annotation.SdkConstant.SdkConstantType;
+import android.annotation.WorkerThread;
import android.app.Activity;
import android.app.PendingIntent;
import android.app.Service;
@@ -29,7 +29,6 @@
import android.content.ServiceConnection;
import android.net.Uri;
import android.os.Binder;
-import android.os.Build;
import android.os.IBinder;
import android.os.Looper;
import android.os.Process;
@@ -38,6 +37,8 @@
import android.security.keystore.AndroidKeyStoreProvider;
import android.security.keystore.KeyProperties;
+import com.android.org.conscrypt.TrustedCertificateStore;
+
import java.io.ByteArrayInputStream;
import java.io.Closeable;
import java.io.Serializable;
@@ -58,8 +59,6 @@
import javax.security.auth.x500.X500Principal;
-import com.android.org.conscrypt.TrustedCertificateStore;
-
/**
* The {@code KeyChain} class provides access to private keys and
* their corresponding certificate chains in credential storage.
@@ -214,8 +213,8 @@
*
* @deprecated Use {@link #ACTION_KEYCHAIN_CHANGED}, {@link #ACTION_TRUST_STORE_CHANGED} or
* {@link #ACTION_KEY_ACCESS_CHANGED}. Apps that target a version higher than
- * {@link Build.VERSION_CODES#N_MR1} will only receive this broadcast if they register for it
- * at runtime.
+ * {@link android.os.Build.VERSION_CODES#N_MR1} will only receive this broadcast if they
+ * register for it at runtime.
*/
@SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)
public static final String ACTION_STORAGE_CHANGED = "android.security.STORAGE_CHANGED";
@@ -532,8 +531,8 @@
}
/**
- * Returns the {@code PrivateKey} for the requested alias, or null
- * if there is no result.
+ * Returns the {@code PrivateKey} for the requested alias, or null if the alias does not exist
+ * or the caller has no permission to access it (see note on exceptions below).
*
* <p> This method may block while waiting for a connection to another process, and must never
* be called from the main thread.
@@ -541,6 +540,15 @@
* at any time from the main thread, it is safer to rely on a long-lived context such as one
* returned from {@link Context#getApplicationContext()}.
*
+ * <p> If the caller provides a valid alias to which it was not granted access, then the
+ * caller must invoke {@link #choosePrivateKeyAlias} again to get another valid alias
+ * or a grant to access the same alias.
+ * <p>On Android versions prior to Q, when a key associated with the specified alias is
+ * unavailable, the method will throw a {@code KeyChainException} rather than return null.
+ * If the exception's cause (as obtained by calling {@code KeyChainException.getCause()})
+ * is a throwable of type {@code IllegalStateException} then the caller lacks a grant
+ * to access the key and certificates associated with this alias.
+ *
* @param alias The alias of the desired private key, typically returned via
* {@link KeyChainAliasCallback#alias}.
* @throws KeyChainException if the alias was valid but there was some problem accessing it.
@@ -591,8 +599,10 @@
}
/**
- * Returns the {@code X509Certificate} chain for the requested
- * alias, or null if there is no result.
+ * Returns the {@code X509Certificate} chain for the requested alias, or null if the alias
+ * does not exist or the caller has no permission to access it (see note on exceptions
+ * in {@link #getPrivateKey}).
+ *
* <p>
* <strong>Note:</strong> If a certificate chain was explicitly specified when the alias was
* installed, this method will return that chain. If only the client certificate was specified
@@ -604,6 +614,9 @@
* <p> As {@link Activity} and {@link Service} contexts are short-lived and can be destroyed
* at any time from the main thread, it is safer to rely on a long-lived context such as one
* returned from {@link Context#getApplicationContext()}.
+ * <p> In case the caller specifies an alias for which it lacks a grant, it must call
+ * {@link #choosePrivateKeyAlias} again. See {@link #getPrivateKey} for more details on
+ * coping with this scenario.
*
* @param alias The alias of the desired certificate chain, typically
* returned via {@link KeyChainAliasCallback#alias}.
diff --git a/packages/CaptivePortalLogin/res/values-gl/strings.xml b/packages/CaptivePortalLogin/res/values-gl/strings.xml
index f6f4aea..6419516 100644
--- a/packages/CaptivePortalLogin/res/values-gl/strings.xml
+++ b/packages/CaptivePortalLogin/res/values-gl/strings.xml
@@ -13,7 +13,7 @@
<string name="ssl_error_mismatch" msgid="3060364165934822383">"O nome do sitio non coincide co nome que aparece no certificado."</string>
<string name="ssl_error_expired" msgid="1501588340716182495">"Este certificado caducou."</string>
<string name="ssl_error_not_yet_valid" msgid="8648649030525886924">"Este certificado aínda non é válido."</string>
- <string name="ssl_error_date_invalid" msgid="88425990680059223">"Este certificado ten unha data non-válida."</string>
+ <string name="ssl_error_date_invalid" msgid="88425990680059223">"Este certificado ten unha data non válida."</string>
<string name="ssl_error_invalid" msgid="2540546515565633432">"Este certificado non é válido."</string>
<string name="ssl_error_unknown" msgid="4405203446079465859">"Produciuse un erro descoñecido relacionado co certificado."</string>
<string name="ssl_security_warning_title" msgid="8768539813847504404">"Advertencia de seguranza"</string>
diff --git a/packages/CarSystemUI/res/values/colors_car.xml b/packages/CarSystemUI/res/values/colors_car.xml
index 2f720f5..08e16cd 100644
--- a/packages/CarSystemUI/res/values/colors_car.xml
+++ b/packages/CarSystemUI/res/values/colors_car.xml
@@ -26,6 +26,4 @@
<color name="car_user_switcher_add_user_background_color">@color/car_dark_blue_grey_600</color>
<color name="car_user_switcher_add_user_add_sign_color">@color/car_body1_light</color>
- <!-- colors for volume dialog tint -->
- <color name="car_volume_dialog_tint">@color/car_tint</color>
</resources>
diff --git a/packages/CarSystemUI/src/com/android/systemui/volume/CarVolumeDialogImpl.java b/packages/CarSystemUI/src/com/android/systemui/volume/CarVolumeDialogImpl.java
index 85dab57..10a0ae5 100644
--- a/packages/CarSystemUI/src/com/android/systemui/volume/CarVolumeDialogImpl.java
+++ b/packages/CarSystemUI/src/com/android/systemui/volume/CarVolumeDialogImpl.java
@@ -554,8 +554,7 @@
// Adding the items which are not coming from the default item.
VolumeItem volumeItem = mAvailableVolumeItems.get(groupId);
if (volumeItem.defaultItem) {
- // Set progress here due to the progress of seekbar may not be updated.
- volumeItem.listItem.setProgress(volumeItem.progress);
+ updateDefaultVolumeItem(volumeItem.listItem);
} else {
addSeekbarListItem(volumeItem, groupId, 0, null);
}
@@ -572,8 +571,7 @@
if (!volumeItem.defaultItem) {
itr.remove();
} else {
- // Set progress here due to the progress of seekbar may not be updated.
- seekbarListItem.setProgress(volumeItem.progress);
+ updateDefaultVolumeItem(seekbarListItem);
}
}
inAnimator = AnimatorInflater.loadAnimator(
@@ -595,6 +593,21 @@
mPagedListAdapter.notifyDataSetChanged();
}
+ private void updateDefaultVolumeItem(SeekbarListItem seekbarListItem){
+ VolumeItem volumeItem = findVolumeItem(seekbarListItem);
+
+ // When volume dialog is expanded or collapsed the default list item is never
+ // reset. Whereas all other list items are removed when the dialog is collapsed and then
+ // added when the dialog is expanded using {@link CarVolumeDialogImpl#addSeekbarListItem}.
+ // This sets the progressbar and the tint color of icons for all items other than default
+ // if they were changed. For default list item it should be done manually here.
+ int color = mContext.getResources().getColor(R.color.car_volume_dialog_tint);
+ Drawable primaryIcon = mContext.getResources().getDrawable(volumeItem.icon);
+ primaryIcon.mutate().setTint(color);
+ volumeItem.listItem.setPrimaryActionIcon(primaryIcon);
+ volumeItem.listItem.setProgress(volumeItem.progress);
+ }
+
private final class VolumeSeekBarChangeListener implements OnSeekBarChangeListener {
private final int mVolumeGroupId;
diff --git a/packages/SystemUI/res-keyguard/values-af/strings.xml b/packages/SystemUI/res-keyguard/values-af/strings.xml
index da11db3..54537e5 100644
--- a/packages/SystemUI/res-keyguard/values-af/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-af/strings.xml
@@ -150,7 +150,7 @@
<item quantity="other">SIM is nou gedeaktiveer. Voer PUK-kode in om voort te gaan. Jy het <xliff:g id="_NUMBER_1">%d</xliff:g> pogings oor voordat die SIM permanent onbruikbaar word. Kontak die diensverskaffer vir besonderhede.</item>
<item quantity="one">SIM is nou gedeaktiveer. Voer PUK-kode in om voort te gaan. Jy het <xliff:g id="_NUMBER_0">%d</xliff:g> poging oor voordat die SIM permanent onbruikbaar word. Kontak die diensverskaffer vir besonderhede.</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"Dit is"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"Twaalf"</item>
<item msgid="7389464214252023751">"Een"</item>
diff --git a/packages/SystemUI/res-keyguard/values-am/strings.xml b/packages/SystemUI/res-keyguard/values-am/strings.xml
index 0d154f5..379838d 100644
--- a/packages/SystemUI/res-keyguard/values-am/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-am/strings.xml
@@ -150,7 +150,7 @@
<item quantity="one">ሲም አሁን ተሰናክሏል። ለመቀጠል የPUK ኮድ ያስገቡ። ሲም እስከመጨረሻው መጠቀም የማይቻል ከመሆኑ በፊት <xliff:g id="_NUMBER_1">%d</xliff:g> ሙከራዎች ይቀረዎታል። ዝርዝሮችን ለማግኘት የአገልግሎት አቅራቢን ያነጋግሩ።</item>
<item quantity="other">ሲም አሁን ተሰናክሏል። ለመቀጠል የPUK ኮድ ያስገቡ። ሲም እስከመጨረሻው መጠቀም የማይቻል ከመሆኑ በፊት <xliff:g id="_NUMBER_1">%d</xliff:g> ሙከራዎች ይቀረዎታል። ዝርዝሮችን ለማግኘት የአገልግሎት አቅራቢን ያነጋግሩ።</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"ነው"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"አስራ ሁለት"</item>
<item msgid="7389464214252023751">"አንድ"</item>
diff --git a/packages/SystemUI/res-keyguard/values-ar/strings.xml b/packages/SystemUI/res-keyguard/values-ar/strings.xml
index 826f2f0..2fef027 100644
--- a/packages/SystemUI/res-keyguard/values-ar/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-ar/strings.xml
@@ -182,7 +182,7 @@
<item quantity="other">تم إيقاف شريحة SIM الآن. أدخل رمز PUK للمتابعة، وتتبقى لديك <xliff:g id="_NUMBER_1">%d</xliff:g> محاولة قبل أن تصبح شريحة SIM غير صالحة للاستخدام نهائيًا. ويمكنك الاتصال بمشغل شبكة الجوّال لمعرفة التفاصيل.</item>
<item quantity="one">تم إيقاف شريحة SIM الآن. أدخل رمز PUK للمتابعة، وتتبقى لديك محاولة واحدة (<xliff:g id="_NUMBER_0">%d</xliff:g>) قبل أن تصبح شريحة SIM غير صالحة للاستخدام نهائيًا. ويمكنك الاتصال بمشغل شبكة الجوّال لمعرفة التفاصيل.</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"الساعة"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"الثانية عشرة"</item>
<item msgid="7389464214252023751">"الواحدة"</item>
diff --git a/packages/SystemUI/res-keyguard/values-as/strings.xml b/packages/SystemUI/res-keyguard/values-as/strings.xml
index f67e009..63d0512 100644
--- a/packages/SystemUI/res-keyguard/values-as/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-as/strings.xml
@@ -150,7 +150,7 @@
<item quantity="one">ছিমখন অক্ষম হ’ল। অব্যাহত ৰাখিবলৈ PUK দিয়ক। ছিমখন স্থায়ীভাৱে ব্যৱহাৰৰ অনুপযোগী হোৱাৰ পূৰ্বে আপোনাৰ হাতত <xliff:g id="_NUMBER_1">%d</xliff:g>টা প্ৰয়াস বাকী আছে। সবিশেষ জানিবলৈ বাহকৰ সৈতে যোগাযোগ কৰক।</item>
<item quantity="other">ছিমখন অক্ষম হ’ল। অব্যাহত ৰাখিবলৈ PUK দিয়ক। ছিমখন স্থায়ীভাৱে ব্যৱহাৰৰ অনুপযোগী হোৱাৰ পূৰ্বে আপোনাৰ হাতত <xliff:g id="_NUMBER_1">%d</xliff:g>টা প্ৰয়াস বাকী আছে। সবিশেষ জানিবলৈ বাহকৰ সৈতে যোগাযোগ কৰক।</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"সময়"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"বাৰ"</item>
<item msgid="7389464214252023751">"এক"</item>
diff --git a/packages/SystemUI/res-keyguard/values-az/strings.xml b/packages/SystemUI/res-keyguard/values-az/strings.xml
index 50f1b1f..3714ec6e 100644
--- a/packages/SystemUI/res-keyguard/values-az/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-az/strings.xml
@@ -150,7 +150,7 @@
<item quantity="other">SIM indi deaktivdir. Davam etmək üçün PUK kodunu daxil edin. SIM birdəfəlik yararsız olmadan öncə <xliff:g id="_NUMBER_1">%d</xliff:g> cəhdiniz qalır. Ətraflı məlumat üçün operatorla əlaqə saxlayın.</item>
<item quantity="one">SIM indi deaktivdir. Davam etmək üçün PUK kodunu daxil edin. SIM birdəfəlik yararsız olmadan öncə <xliff:g id="_NUMBER_0">%d</xliff:g> cəhdiniz qalır. Ətraflı məlumat üçün operatorla əlaqə saxlayın.</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"Saat"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"On iki"</item>
<item msgid="7389464214252023751">"Bir"</item>
diff --git a/packages/SystemUI/res-keyguard/values-b+sr+Latn/strings.xml b/packages/SystemUI/res-keyguard/values-b+sr+Latn/strings.xml
index a5fceef..3272313 100644
--- a/packages/SystemUI/res-keyguard/values-b+sr+Latn/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-b+sr+Latn/strings.xml
@@ -158,7 +158,7 @@
<item quantity="few">SIM je sada onemogućen. Unesite PUK kôd da biste nastavili. Imate još <xliff:g id="_NUMBER_1">%d</xliff:g> pokušaja pre nego što SIM postane trajno neupotrebljiv. Detaljne informacije potražite od mobilnog operatera.</item>
<item quantity="other">SIM je sada onemogućen. Unesite PUK kôd da biste nastavili. Imate još <xliff:g id="_NUMBER_1">%d</xliff:g> pokušaja pre nego što SIM postane trajno neupotrebljiv. Detaljne informacije potražite od mobilnog operatera.</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"Sada je"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"dvanaest"</item>
<item msgid="7389464214252023751">"jedan"</item>
diff --git a/packages/SystemUI/res-keyguard/values-be/strings.xml b/packages/SystemUI/res-keyguard/values-be/strings.xml
index 872cd7b..aaa4cb6 100644
--- a/packages/SystemUI/res-keyguard/values-be/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-be/strings.xml
@@ -166,7 +166,7 @@
<item quantity="many">SIM-карта заблакіравана. Каб працягнуць, увядзіце PUK-код. У вас ёсць яшчэ <xliff:g id="_NUMBER_1">%d</xliff:g> спроб, пасля чаго SIM-карта будзе заблакіравана назаўсёды. Звярніцеся да аператара, каб даведацца больш.</item>
<item quantity="other">SIM-карта заблакіравана. Каб працягнуць, увядзіце PUK-код. У вас ёсць яшчэ <xliff:g id="_NUMBER_1">%d</xliff:g> спробы, пасля чаго SIM-карта будзе заблакіравана назаўсёды. Звярніцеся да аператара, каб даведацца больш.</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"Зараз"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"Дванаццаць"</item>
<item msgid="7389464214252023751">"Адна"</item>
diff --git a/packages/SystemUI/res-keyguard/values-bg/strings.xml b/packages/SystemUI/res-keyguard/values-bg/strings.xml
index 741834f..d89dd41 100644
--- a/packages/SystemUI/res-keyguard/values-bg/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-bg/strings.xml
@@ -150,7 +150,7 @@
<item quantity="other">SIM картата вече е деактивирана. Въведете PUK кода, за да продължите. Остават ви <xliff:g id="_NUMBER_1">%d</xliff:g> опита, преди SIM картата да стане неизползваема завинаги. Свържете се с оператора за подробности.</item>
<item quantity="one">SIM картата вече е деактивирана. Въведете PUK кода, за да продължите. Остава ви <xliff:g id="_NUMBER_0">%d</xliff:g> опит, преди SIM картата да стане неизползваема завинаги. Свържете се с оператора за подробности.</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"Часът е"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"дванайсет"</item>
<item msgid="7389464214252023751">"един"</item>
diff --git a/packages/SystemUI/res-keyguard/values-bn/strings.xml b/packages/SystemUI/res-keyguard/values-bn/strings.xml
index 25346a5..d0794c3 100644
--- a/packages/SystemUI/res-keyguard/values-bn/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-bn/strings.xml
@@ -150,7 +150,7 @@
<item quantity="one">সিম অক্ষম করা হয়েছে। চালিয়ে যেতে PUK কোড লিখুন। আপনি আর <xliff:g id="_NUMBER_1">%d</xliff:g> বার চেষ্টা করতে পারবেন, তারপরে এই সিমটি আর একেবারেই ব্যবহার করা যাবে না। বিশদে জানতে পরিষেবা প্রদানকারীর সাথে যোগাযোগ করুন।</item>
<item quantity="other">সিম অক্ষম করা হয়েছে। চালিয়ে যেতে PUK কোড লিখুন। আপনি আর <xliff:g id="_NUMBER_1">%d</xliff:g> বার চেষ্টা করতে পারবেন, তারপরে এই সিমটি আর একেবারেই ব্যবহার করা যাবে না। বিশদে জানতে পরিষেবা প্রদানকারীর সাথে যোগাযোগ করুন।</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"এখন"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"বারো"</item>
<item msgid="7389464214252023751">"এক"</item>
diff --git a/packages/SystemUI/res-keyguard/values-bs/strings.xml b/packages/SystemUI/res-keyguard/values-bs/strings.xml
index 9396ef1..72e4603 100644
--- a/packages/SystemUI/res-keyguard/values-bs/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-bs/strings.xml
@@ -158,7 +158,7 @@
<item quantity="few">SIM kartica je onemogućena. Unesite PUK kôd da nastavite. Imate još <xliff:g id="_NUMBER_1">%d</xliff:g> pokušaja prije nego što SIM kartica postane trajno neupotrebljiva. Za više informacija kontaktirajte mobilnog operatera.</item>
<item quantity="other">SIM kartica je onemogućena. Unesite PUK kôd da nastavite. Imate još <xliff:g id="_NUMBER_1">%d</xliff:g> pokušaja prije nego što SIM kartica postane trajno neupotrebljiva. Za više informacija kontaktirajte mobilnog operatera.</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"Sada je"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"Dvanaest"</item>
<item msgid="7389464214252023751">"Jedan"</item>
diff --git a/packages/SystemUI/res-keyguard/values-ca/strings.xml b/packages/SystemUI/res-keyguard/values-ca/strings.xml
index 2fa0897..185a3f3 100644
--- a/packages/SystemUI/res-keyguard/values-ca/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-ca/strings.xml
@@ -150,7 +150,7 @@
<item quantity="other">La targeta SIM s\'ha desactivat. Introdueix el codi PUK per continuar. Et queden <xliff:g id="_NUMBER_1">%d</xliff:g> intents; si no l\'encertes, la SIM no es podrà tornar a fer servir. Contacta amb l\'operador de telefonia mòbil per obtenir-ne més informació.</item>
<item quantity="one">La targeta SIM s\'ha desactivat. Introdueix el codi PUK per continuar. Et queda <xliff:g id="_NUMBER_0">%d</xliff:g> intent; si no l\'encertes, la SIM no es podrà tornar a fer servir. Contacta amb l\'operador de telefonia mòbil per obtenir-ne més informació.</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"Són les"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"i dotze"</item>
<item msgid="7389464214252023751">"Una"</item>
diff --git a/packages/SystemUI/res-keyguard/values-cs/strings.xml b/packages/SystemUI/res-keyguard/values-cs/strings.xml
index 2708f8f..bb01b7e 100644
--- a/packages/SystemUI/res-keyguard/values-cs/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-cs/strings.xml
@@ -166,7 +166,7 @@
<item quantity="other">SIM karta je teď zablokována. Chcete-li pokračovat, zadejte kód PUK. Máte ještě <xliff:g id="_NUMBER_1">%d</xliff:g> pokusů, poté bude SIM karta natrvalo zablokována. Podrobnosti vám poskytne operátor.</item>
<item quantity="one">SIM karta je teď zablokována. Chcete-li pokračovat, zadejte kód PUK. Máte ještě <xliff:g id="_NUMBER_0">%d</xliff:g> pokus, poté bude SIM karta natrvalo zablokována. Podrobnosti vám poskytne operátor.</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"Je"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"Dvanáct"</item>
<item msgid="7389464214252023751">"Jedna"</item>
diff --git a/packages/SystemUI/res-keyguard/values-da/strings.xml b/packages/SystemUI/res-keyguard/values-da/strings.xml
index 34c248d..fbdaf0f 100644
--- a/packages/SystemUI/res-keyguard/values-da/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-da/strings.xml
@@ -150,7 +150,7 @@
<item quantity="one">SIM-kortet er nu deaktiveret. Angiv PUK-koden for at fortsætte. Du har <xliff:g id="_NUMBER_1">%d</xliff:g> forsøg tilbage, før SIM-kortet bliver permanent ubrugeligt. Kontakt dit mobilselskab for at få flere oplysninger.</item>
<item quantity="other">SIM-kortet er nu deaktiveret. Angiv PUK-koden for at fortsætte. Du har <xliff:g id="_NUMBER_1">%d</xliff:g> forsøg tilbage, før SIM-kortet bliver permanent ubrugeligt. Kontakt dit mobilselskab for at få flere oplysninger.</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"Den er"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"Tolv"</item>
<item msgid="7389464214252023751">"Et"</item>
diff --git a/packages/SystemUI/res-keyguard/values-de/strings.xml b/packages/SystemUI/res-keyguard/values-de/strings.xml
index d8daf83f..b6127df 100644
--- a/packages/SystemUI/res-keyguard/values-de/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-de/strings.xml
@@ -150,7 +150,7 @@
<item quantity="other">Die SIM-Karte ist jetzt deaktiviert. Gib den PUK-Code ein, um fortzufahren. Du hast noch <xliff:g id="_NUMBER_1">%d</xliff:g> Versuche, bevor die SIM-Karte endgültig gesperrt wird. Weitere Informationen erhältst du von deinem Mobilfunkanbieter.</item>
<item quantity="one">Die SIM-Karte ist jetzt deaktiviert. Gib den PUK-Code ein, um fortzufahren. Du hast noch <xliff:g id="_NUMBER_0">%d</xliff:g> Versuch, bevor die SIM-Karte endgültig gesperrt wird. Weitere Informationen erhältst du von deinem Mobilfunkanbieter.</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"Es ist"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"zwölf Uhr"</item>
<item msgid="7389464214252023751">"ein Uhr"</item>
diff --git a/packages/SystemUI/res-keyguard/values-el/strings.xml b/packages/SystemUI/res-keyguard/values-el/strings.xml
index 6c0916c..402e297 100644
--- a/packages/SystemUI/res-keyguard/values-el/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-el/strings.xml
@@ -150,7 +150,7 @@
<item quantity="other">Η κάρτα SIM απενεργοποιήθηκε. Καταχωρίστε τον κωδικό PUK, για να συνεχίσετε. Απομένουν <xliff:g id="_NUMBER_1">%d</xliff:g> ακόμη προσπάθειες προτού να μην είναι πλέον δυνατή η χρήση της κάρτας SIM. Επικοινωνήστε με την εταιρεία κινητής τηλεφωνίας για λεπτομέρειες.</item>
<item quantity="one">Η κάρτα SIM απενεργοποιήθηκε. Καταχωρίστε τον κωδικό PUK, για να συνεχίσετε. Απομένει <xliff:g id="_NUMBER_0">%d</xliff:g> ακόμη προσπάθεια προτού να μην είναι πλέον δυνατή η χρήση της κάρτας SIM. Επικοινωνήστε με την εταιρεία κινητής τηλεφωνίας για λεπτομέρειες.</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"Είναι"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"Δώδεκα"</item>
<item msgid="7389464214252023751">"Μία"</item>
diff --git a/packages/SystemUI/res-keyguard/values-en-rAU/strings.xml b/packages/SystemUI/res-keyguard/values-en-rAU/strings.xml
index 80c9b82..72b8085 100644
--- a/packages/SystemUI/res-keyguard/values-en-rAU/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-en-rAU/strings.xml
@@ -150,7 +150,7 @@
<item quantity="other">SIM is now disabled. Enter PUK code to continue. You have <xliff:g id="_NUMBER_1">%d</xliff:g> remaining attempts before SIM becomes permanently unusable. Contact operator for details.</item>
<item quantity="one">SIM is now disabled. Enter PUK code to continue. You have <xliff:g id="_NUMBER_0">%d</xliff:g> remaining attempt before SIM becomes permanently unusable. Contact operator for details.</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"It’s"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"Twelve"</item>
<item msgid="7389464214252023751">"One"</item>
diff --git a/packages/SystemUI/res-keyguard/values-en-rCA/strings.xml b/packages/SystemUI/res-keyguard/values-en-rCA/strings.xml
index 20c4d56..ecc0f71 100644
--- a/packages/SystemUI/res-keyguard/values-en-rCA/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-en-rCA/strings.xml
@@ -150,7 +150,7 @@
<item quantity="other">SIM is now disabled. Enter PUK code to continue. You have <xliff:g id="_NUMBER_1">%d</xliff:g> remaining attempts before SIM becomes permanently unusable. Contact operator for details.</item>
<item quantity="one">SIM is now disabled. Enter PUK code to continue. You have <xliff:g id="_NUMBER_0">%d</xliff:g> remaining attempt before SIM becomes permanently unusable. Contact operator for details.</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"It’s"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"Twelve"</item>
<item msgid="7389464214252023751">"One"</item>
diff --git a/packages/SystemUI/res-keyguard/values-en-rGB/strings.xml b/packages/SystemUI/res-keyguard/values-en-rGB/strings.xml
index 80c9b82..72b8085 100644
--- a/packages/SystemUI/res-keyguard/values-en-rGB/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-en-rGB/strings.xml
@@ -150,7 +150,7 @@
<item quantity="other">SIM is now disabled. Enter PUK code to continue. You have <xliff:g id="_NUMBER_1">%d</xliff:g> remaining attempts before SIM becomes permanently unusable. Contact operator for details.</item>
<item quantity="one">SIM is now disabled. Enter PUK code to continue. You have <xliff:g id="_NUMBER_0">%d</xliff:g> remaining attempt before SIM becomes permanently unusable. Contact operator for details.</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"It’s"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"Twelve"</item>
<item msgid="7389464214252023751">"One"</item>
diff --git a/packages/SystemUI/res-keyguard/values-en-rIN/strings.xml b/packages/SystemUI/res-keyguard/values-en-rIN/strings.xml
index 80c9b82..72b8085 100644
--- a/packages/SystemUI/res-keyguard/values-en-rIN/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-en-rIN/strings.xml
@@ -150,7 +150,7 @@
<item quantity="other">SIM is now disabled. Enter PUK code to continue. You have <xliff:g id="_NUMBER_1">%d</xliff:g> remaining attempts before SIM becomes permanently unusable. Contact operator for details.</item>
<item quantity="one">SIM is now disabled. Enter PUK code to continue. You have <xliff:g id="_NUMBER_0">%d</xliff:g> remaining attempt before SIM becomes permanently unusable. Contact operator for details.</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"It’s"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"Twelve"</item>
<item msgid="7389464214252023751">"One"</item>
diff --git a/packages/SystemUI/res-keyguard/values-en-rXC/strings.xml b/packages/SystemUI/res-keyguard/values-en-rXC/strings.xml
index a33d817..501dcb7 100644
--- a/packages/SystemUI/res-keyguard/values-en-rXC/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-en-rXC/strings.xml
@@ -150,7 +150,7 @@
<item quantity="other">SIM is now disabled. Enter PUK code to continue. You have <xliff:g id="_NUMBER_1">%d</xliff:g> remaining attempts before SIM becomes permanently unusable. Contact carrier for details.</item>
<item quantity="one">SIM is now disabled. Enter PUK code to continue. You have <xliff:g id="_NUMBER_0">%d</xliff:g> remaining attempt before SIM becomes permanently unusable. Contact carrier for details.</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"It’s"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"Twelve"</item>
<item msgid="7389464214252023751">"One"</item>
diff --git a/packages/SystemUI/res-keyguard/values-es-rUS/strings.xml b/packages/SystemUI/res-keyguard/values-es-rUS/strings.xml
index 98453a7..f93d933 100644
--- a/packages/SystemUI/res-keyguard/values-es-rUS/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-es-rUS/strings.xml
@@ -150,7 +150,7 @@
<item quantity="other">Se inhabilitó la SIM. Para continuar, ingresa el código PUK. Te quedan <xliff:g id="_NUMBER_1">%d</xliff:g> intentos más antes de que la SIM quede inutilizable permanentemente. Comunícate con tu proveedor para obtener más detalles.</item>
<item quantity="one">Se inhabilitó la SIM. Para continuar, ingresa el código PUK. Te queda <xliff:g id="_NUMBER_0">%d</xliff:g> intento más antes de que la SIM quede inutilizable permanentemente. Comunícate con tu proveedor para obtener más detalles.</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"Son las"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"Doce"</item>
<item msgid="7389464214252023751">"Una"</item>
diff --git a/packages/SystemUI/res-keyguard/values-es/strings.xml b/packages/SystemUI/res-keyguard/values-es/strings.xml
index 00bdd91..9c189d9 100644
--- a/packages/SystemUI/res-keyguard/values-es/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-es/strings.xml
@@ -150,7 +150,7 @@
<item quantity="other">La tarjeta SIM está inhabilitada. Introduce el código PUK para continuar. Te quedan <xliff:g id="_NUMBER_1">%d</xliff:g> intentos para que la tarjeta SIM quede inservible de forma permanente. Ponte en contacto con tu operador para obtener más información.</item>
<item quantity="one">La tarjeta SIM está inhabilitada. Introduce el código PUK para continuar. Te queda <xliff:g id="_NUMBER_0">%d</xliff:g> intento para que la tarjeta SIM quede inservible de forma permanente. Ponte en contacto con tu operador para obtener más información.</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"Son las"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"Doce"</item>
<item msgid="7389464214252023751">"Uno"</item>
diff --git a/packages/SystemUI/res-keyguard/values-et/strings.xml b/packages/SystemUI/res-keyguard/values-et/strings.xml
index e778804..7594537 100644
--- a/packages/SystemUI/res-keyguard/values-et/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-et/strings.xml
@@ -150,7 +150,7 @@
<item quantity="other">SIM-kaart on nüüd keelatud. Jätkamiseks sisestage PUK-kood. Teil on jäänud veel <xliff:g id="_NUMBER_1">%d</xliff:g> katset enne, kui SIM-kaart püsivalt lukustatakse. Lisateavet küsige operaatorilt.</item>
<item quantity="one">SIM-kaart on nüüd keelatud. Jätkamiseks sisestage PUK-kood. Teil on jäänud veel <xliff:g id="_NUMBER_0">%d</xliff:g> katse enne, kui SIM-kaart püsivalt lukustatakse. Lisateavet küsige operaatorilt.</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"Kell on"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"Kaksteist"</item>
<item msgid="7389464214252023751">"Üks"</item>
diff --git a/packages/SystemUI/res-keyguard/values-eu/strings.xml b/packages/SystemUI/res-keyguard/values-eu/strings.xml
index 3ebb536..8b1284d 100644
--- a/packages/SystemUI/res-keyguard/values-eu/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-eu/strings.xml
@@ -150,7 +150,7 @@
<item quantity="other">Desgaitu egin da SIM txartela. Aurrera egiteko, idatzi PUK kodea. <xliff:g id="_NUMBER_1">%d</xliff:g> saiakera geratzen zaizkizu SIM txartela betiko erabilgaitz geratu aurretik. Xehetasunak lortzeko, jarri operadorearekin harremanetan.</item>
<item quantity="one">Desgaitu egin da SIM txartela. Aurrera egiteko, idatzi PUK kodea. <xliff:g id="_NUMBER_0">%d</xliff:g> saiakera geratzen zaizu SIM txartela betiko erabilgaitz geratu aurretik. Xehetasunak lortzeko, jarri operadorearekin harremanetan.</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"Ordua:"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"Hamabiak"</item>
<item msgid="7389464214252023751">"Ordu bata"</item>
diff --git a/packages/SystemUI/res-keyguard/values-fa/strings.xml b/packages/SystemUI/res-keyguard/values-fa/strings.xml
index 0c30d03..183152e 100644
--- a/packages/SystemUI/res-keyguard/values-fa/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-fa/strings.xml
@@ -150,7 +150,7 @@
<item quantity="one">سیمکارت اکنون غیرفعال است. برای ادامه دادن کد PUK را وارد کنید. <xliff:g id="_NUMBER_1">%d</xliff:g> تلاش دیگر باقی مانده است و پس از آن سیمکارت برای همیشه غیرقابلاستفاده میشود. برای اطلاع از جزئیات با شرکت مخابراتی تماس بگیرید.</item>
<item quantity="other">سیمکارت اکنون غیرفعال است. برای ادامه دادن کد PUK را وارد کنید. <xliff:g id="_NUMBER_1">%d</xliff:g> تلاش دیگر باقی مانده است و پس از آن سیمکارت برای همیشه غیرقابلاستفاده میشود. برای اطلاع از جزئیات با شرکت مخابراتی تماس بگیرید.</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"ساعت:"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"دوازده"</item>
<item msgid="7389464214252023751">"یک"</item>
diff --git a/packages/SystemUI/res-keyguard/values-fi/strings.xml b/packages/SystemUI/res-keyguard/values-fi/strings.xml
index 6092372..ec3c596 100644
--- a/packages/SystemUI/res-keyguard/values-fi/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-fi/strings.xml
@@ -150,7 +150,7 @@
<item quantity="other">SIM-kortti on nyt lukittu. Anna PUK-koodi, niin voit jatkaa. Sinulla on <xliff:g id="_NUMBER_1">%d</xliff:g> yritystä jäljellä, ennen kuin SIM-kortti poistuu pysyvästi käytöstä. Pyydä lisätietoja operaattoriltasi.</item>
<item quantity="one">SIM-kortti on nyt lukittu. Anna PUK-koodi, niin voit jatkaa. Sinulla on <xliff:g id="_NUMBER_0">%d</xliff:g> yritys jäljellä, ennen kuin SIM-kortti poistuu pysyvästi käytöstä. Pyydä lisätietoja operaattoriltasi.</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"Kello on"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"Kaksitoista"</item>
<item msgid="7389464214252023751">"Yksi"</item>
diff --git a/packages/SystemUI/res-keyguard/values-fr-rCA/strings.xml b/packages/SystemUI/res-keyguard/values-fr-rCA/strings.xml
index 8e92ffc..73705c8 100644
--- a/packages/SystemUI/res-keyguard/values-fr-rCA/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-fr-rCA/strings.xml
@@ -150,7 +150,7 @@
<item quantity="one">La carte SIM est maintenant désactivée. Entrez le code PUK pour continuer. Il vous reste <xliff:g id="_NUMBER_1">%d</xliff:g> tentative avant que votre carte SIM devienne définitivement inutilisable. Pour obtenir plus de détails, communiquez avec votre fournisseur de services.</item>
<item quantity="other">La carte SIM est maintenant désactivée. Entrez le code PUK pour continuer. Il vous reste <xliff:g id="_NUMBER_1">%d</xliff:g> tentatives avant que votre carte SIM devienne définitivement inutilisable. Pour obtenir plus de détails, communiquez avec votre fournisseur de services.</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"Il est"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"douze h."</item>
<item msgid="7389464214252023751">"Une h."</item>
diff --git a/packages/SystemUI/res-keyguard/values-fr/strings.xml b/packages/SystemUI/res-keyguard/values-fr/strings.xml
index cde5e68..cf4f2d0 100644
--- a/packages/SystemUI/res-keyguard/values-fr/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-fr/strings.xml
@@ -150,7 +150,7 @@
<item quantity="one">La carte SIM est maintenant désactivée. Saisissez le code PUK pour continuer. Il vous reste <xliff:g id="_NUMBER_1">%d</xliff:g> tentative avant que votre carte SIM ne devienne définitivement inutilisable. Pour de plus amples informations, veuillez contacter votre opérateur.</item>
<item quantity="other">La carte SIM est maintenant désactivée. Saisissez le code PUK pour continuer. Il vous reste <xliff:g id="_NUMBER_1">%d</xliff:g> tentatives avant que votre carte SIM ne devienne définitivement inutilisable. Pour de plus amples informations, veuillez contacter votre opérateur.</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"Il est"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"douze heures"</item>
<item msgid="7389464214252023751">"une heure"</item>
diff --git a/packages/SystemUI/res-keyguard/values-gl/strings.xml b/packages/SystemUI/res-keyguard/values-gl/strings.xml
index 6d85cdb..810a75b 100644
--- a/packages/SystemUI/res-keyguard/values-gl/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-gl/strings.xml
@@ -150,7 +150,7 @@
<item quantity="other">A SIM está desactivada. Introduce o código PUK para continuar. Quédanche <xliff:g id="_NUMBER_1">%d</xliff:g> intentos antes de que a SIM quede inutilizable para sempre. Contacta co operador para obter información.</item>
<item quantity="one">A SIM está desactivada. Introduce o código PUK para continuar. Quédache <xliff:g id="_NUMBER_0">%d</xliff:g> intento antes de que a SIM quede inutilizable para sempre. Contacta co operador para obter información.</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"Hora:"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"Doce"</item>
<item msgid="7389464214252023751">"Unha"</item>
diff --git a/packages/SystemUI/res-keyguard/values-gu/strings.xml b/packages/SystemUI/res-keyguard/values-gu/strings.xml
index d9fdf03..538b100 100644
--- a/packages/SystemUI/res-keyguard/values-gu/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-gu/strings.xml
@@ -150,7 +150,7 @@
<item quantity="one">સિમ હવે બંધ કરેલ છે. ચાલુ રાખવા માટે PUK કોડ દાખલ કરો. સિમ કાયમીરૂપે બિનઉપયોગી બની જાય એ પહેલાં તમારી પાસે <xliff:g id="_NUMBER_1">%d</xliff:g> પ્રયાસ બાકી છે. વિગતો માટે કૅરિઅરનો સંપર્ક કરો.</item>
<item quantity="other">સિમ હવે બંધ કરેલ છે. ચાલુ રાખવા માટે PUK કોડ દાખલ કરો. સિમ કાયમીરૂપે બિનઉપયોગી બની જાય એ પહેલાં તમારી પાસે <xliff:g id="_NUMBER_1">%d</xliff:g> પ્રયાસો બાકી છે. વિગતો માટે કૅરિઅરનો સંપર્ક કરો.</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"સમય છે"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"બાર"</item>
<item msgid="7389464214252023751">"એક"</item>
diff --git a/packages/SystemUI/res-keyguard/values-hi/strings.xml b/packages/SystemUI/res-keyguard/values-hi/strings.xml
index b004cde..f03ddd4 100644
--- a/packages/SystemUI/res-keyguard/values-hi/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-hi/strings.xml
@@ -150,7 +150,7 @@
<item quantity="one">सिम बंद कर दिया गया है. जारी रखने के लिए PUK कोड डालें. आपके पास <xliff:g id="_NUMBER_1">%d</xliff:g> मौके बचे हैं, उसके बाद, सिम हमेशा के लिए काम करना बंद कर देगा. जानकारी के लिए, मोबाइल और इंटरनेट सेवा देने वाली कंपनी से संपर्क करें.</item>
<item quantity="other">सिम बंद कर दिया गया है. जारी रखने के लिए PUK कोड डालें. आपके पास <xliff:g id="_NUMBER_1">%d</xliff:g> मौके बचे हैं, उसके बाद, सिम हमेशा के लिए काम करना बंद कर देगा. जानकारी के लिए, मोबाइल और इंटरनेट सेवा देने वाली कंपनी से संपर्क करें.</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"यह"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"बारह"</item>
<item msgid="7389464214252023751">"एक"</item>
diff --git a/packages/SystemUI/res-keyguard/values-hr/strings.xml b/packages/SystemUI/res-keyguard/values-hr/strings.xml
index c99b646..2839453 100644
--- a/packages/SystemUI/res-keyguard/values-hr/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-hr/strings.xml
@@ -158,7 +158,7 @@
<item quantity="few">SIM je sada onemogućen. Unesite PUK kôd da biste nastavili. Imate još <xliff:g id="_NUMBER_1">%d</xliff:g> pokušaja prije nego što SIM kartica postane trajno neupotrebljiva. Više informacija zatražite od mobilnog operatera.</item>
<item quantity="other">SIM je sada onemogućen. Unesite PUK kôd da biste nastavili. Imate još <xliff:g id="_NUMBER_1">%d</xliff:g> pokušaja prije nego što SIM kartica postane trajno neupotrebljiva. Više informacija zatražite od mobilnog operatera.</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"Sada je"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"Dvanaest"</item>
<item msgid="7389464214252023751">"Jedan"</item>
diff --git a/packages/SystemUI/res-keyguard/values-hu/strings.xml b/packages/SystemUI/res-keyguard/values-hu/strings.xml
index 4eb8bc8..de22c02 100644
--- a/packages/SystemUI/res-keyguard/values-hu/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-hu/strings.xml
@@ -150,7 +150,7 @@
<item quantity="other">A SIM-kártya le van tiltva. A folytatáshoz adja meg a PUK-kódot. Még <xliff:g id="_NUMBER_1">%d</xliff:g> próbálkozása van, mielőtt végleg használhatatlanná válik a SIM-kártya. További információért forduljon a szolgáltatóhoz.</item>
<item quantity="one">A SIM-kártya le van tiltva. A folytatáshoz adja meg a PUK-kódot. Még <xliff:g id="_NUMBER_0">%d</xliff:g> próbálkozása van, mielőtt végleg használhatatlanná válik a SIM-kártya. További információért forduljon a szolgáltatóhoz.</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"Az idő:"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"Tizenkettő"</item>
<item msgid="7389464214252023751">"Egy"</item>
diff --git a/packages/SystemUI/res-keyguard/values-hy/strings.xml b/packages/SystemUI/res-keyguard/values-hy/strings.xml
index 5d9a2c0..2c10437 100644
--- a/packages/SystemUI/res-keyguard/values-hy/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-hy/strings.xml
@@ -150,7 +150,7 @@
<item quantity="one">SIM քարտն անջատված է: Շարունակելու համար մուտքագրեք PUK կոդը: Մնացել է <xliff:g id="_NUMBER_1">%d</xliff:g> փորձ, որից հետո SIM քարտն այլևս հնարավոր չի լինի օգտագործել: Մանրամասների համար դիմեք օպերատորին:</item>
<item quantity="other">SIM քարտն անջատված է: Շարունակելու համար մուտքագրեք PUK կոդը: Մնացել է <xliff:g id="_NUMBER_1">%d</xliff:g> փորձ, որից հետո SIM քարտն այլևս հնարավոր չի լինի օգտագործել: Մանրամասների համար դիմեք օպերատորին:</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"Ժամն է՝"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"տասներկու"</item>
<item msgid="7389464214252023751">"մեկ"</item>
diff --git a/packages/SystemUI/res-keyguard/values-in/strings.xml b/packages/SystemUI/res-keyguard/values-in/strings.xml
index 603b4c2..0cd1382 100644
--- a/packages/SystemUI/res-keyguard/values-in/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-in/strings.xml
@@ -150,7 +150,7 @@
<item quantity="other">SIM kini dinonaktifkan. Masukkan kode PUK untuk melanjutkan. Tersisa <xliff:g id="_NUMBER_1">%d</xliff:g> percobaan sebelum SIM tidak dapat digunakan secara permanen. Hubungi operator untuk mengetahui detailnya.</item>
<item quantity="one">SIM kini dinonaktifkan. Masukkan kode PUK untuk melanjutkan. Tersisa <xliff:g id="_NUMBER_0">%d</xliff:g> percobaan sebelum SIM tidak dapat digunakan secara permanen. Hubungi operator untuk mengetahui detailnya.</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"Pukul"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"Dua Belas"</item>
<item msgid="7389464214252023751">"Satu"</item>
diff --git a/packages/SystemUI/res-keyguard/values-is/strings.xml b/packages/SystemUI/res-keyguard/values-is/strings.xml
index 71f2078..dd9785d 100644
--- a/packages/SystemUI/res-keyguard/values-is/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-is/strings.xml
@@ -150,7 +150,7 @@
<item quantity="one">SIM-kortið er nú óvirkt. Sláðu inn PUK-númer til að halda áfram. Það er <xliff:g id="_NUMBER_1">%d</xliff:g> tilraun eftir þar til SIM-kortið verður ónothæft til frambúðar. Hafðu samband við símafyrirtækið til að fá upplýsingar.</item>
<item quantity="other">SIM-kortið er nú óvirkt. Sláðu inn PUK-númer til að halda áfram. Það eru <xliff:g id="_NUMBER_1">%d</xliff:g> tilraunir eftir þar til SIM-kortið verður ónothæft til frambúðar. Hafðu samband við símafyrirtækið til að fá upplýsingar.</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"Hún er"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"Tólf"</item>
<item msgid="7389464214252023751">"Eitt"</item>
diff --git a/packages/SystemUI/res-keyguard/values-it/strings.xml b/packages/SystemUI/res-keyguard/values-it/strings.xml
index e0b55b3..ac2375f 100644
--- a/packages/SystemUI/res-keyguard/values-it/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-it/strings.xml
@@ -150,7 +150,7 @@
<item quantity="other">La scheda SIM è ora disattivata. Inserisci il codice PUK per continuare. Hai ancora <xliff:g id="_NUMBER_1">%d</xliff:g> tentativi a disposizione prima che la SIM diventi definitivamente inutilizzabile. Per informazioni dettagliate, contatta l\'operatore.</item>
<item quantity="one">La scheda SIM è ora disattivata. Inserisci il codice PUK per continuare. Hai ancora <xliff:g id="_NUMBER_0">%d</xliff:g> tentativo a disposizione prima che la SIM diventi definitivamente inutilizzabile. Per informazioni dettagliate, contatta l\'operatore.</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"Ora"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"Dodici"</item>
<item msgid="7389464214252023751">"Una"</item>
diff --git a/packages/SystemUI/res-keyguard/values-iw/strings.xml b/packages/SystemUI/res-keyguard/values-iw/strings.xml
index 509c463..0fadaff 100644
--- a/packages/SystemUI/res-keyguard/values-iw/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-iw/strings.xml
@@ -166,7 +166,7 @@
<item quantity="other">כרטיס ה-SIM מושבת כעת. יש להזין קוד PUK כדי להמשיך. נותרו לך <xliff:g id="_NUMBER_1">%d</xliff:g> ניסיונות נוספים לפני שכרטיס ה-SIM ינעל לצמיתות. למידע נוסף, ניתן לפנות לספק שלך.</item>
<item quantity="one">כרטיס ה-SIM מושבת כעת. יש להזין קוד PUK כדי להמשיך. נותר לך <xliff:g id="_NUMBER_0">%d</xliff:g> ניסיון נוסף לפני שכרטיס ה-SIM ינעל לצמיתות. למידע נוסף, ניתן לפנות לספק שלך.</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"השעה"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"שתים-עשרה"</item>
<item msgid="7389464214252023751">"אחת"</item>
diff --git a/packages/SystemUI/res-keyguard/values-ja/strings.xml b/packages/SystemUI/res-keyguard/values-ja/strings.xml
index 343d557..b0514ef 100644
--- a/packages/SystemUI/res-keyguard/values-ja/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-ja/strings.xml
@@ -150,7 +150,7 @@
<item quantity="other">SIM が無効になりました。続行するには PUK コードを入力してください。入力できるのはあと <xliff:g id="_NUMBER_1">%d</xliff:g> 回です。この回数を超えると SIM は完全に使用できなくなります。詳しくは携帯通信会社にお問い合わせください。</item>
<item quantity="one">SIM が無効になりました。続行するには PUK コードを入力してください。入力できるのはあと <xliff:g id="_NUMBER_0">%d</xliff:g> 回です。この回数を超えると SIM は完全に使用できなくなります。詳しくは携帯通信会社にお問い合わせください。</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"時刻:"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"12"</item>
<item msgid="7389464214252023751">"1"</item>
diff --git a/packages/SystemUI/res-keyguard/values-ka/strings.xml b/packages/SystemUI/res-keyguard/values-ka/strings.xml
index 9118e56..9290874 100644
--- a/packages/SystemUI/res-keyguard/values-ka/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-ka/strings.xml
@@ -150,7 +150,7 @@
<item quantity="other">SIM ბარათი ახლა დეაქტივირებულია. გასაგრძელებლად შეიყვანეთ PUK-კოდი. თქვენ დაგრჩათ <xliff:g id="_NUMBER_1">%d</xliff:g> მცდელობა, სანამ SIM სამუდამოდ გამოუსადეგარი გახდება. დეტალური ინფორმაციისთვის დაუკავშირდით თქვენს ოპერატორს.</item>
<item quantity="one">SIM ბარათი ახლა დეაქტივირებულია. გასაგრძელებლად შეიყვანეთ PUK-კოდი. თქვენ დაგრჩათ <xliff:g id="_NUMBER_0">%d</xliff:g> მცდელობა, სანამ SIM სამუდამოდ გამოუსადეგარი გახდება. დეტალური ინფორმაციისთვის დაუკავშირდით თქვენს ოპერატორს.</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"ახლაა"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"თორმეტი"</item>
<item msgid="7389464214252023751">"ერთი"</item>
diff --git a/packages/SystemUI/res-keyguard/values-kk/strings.xml b/packages/SystemUI/res-keyguard/values-kk/strings.xml
index 2270c92..f1d6449 100644
--- a/packages/SystemUI/res-keyguard/values-kk/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-kk/strings.xml
@@ -150,7 +150,7 @@
<item quantity="other">SIM картасы өшірілді. Жалғастыру үшін PUK кодын енгізіңіз. <xliff:g id="_NUMBER_1">%d</xliff:g> мүмкіндік қалды, одан кейін SIM картасы біржола құлыпталады. Толығырақ мәліметті оператордан алыңыз.</item>
<item quantity="one">SIM картасы өшірілді. Жалғастыру үшін PUK кодын енгізіңіз. <xliff:g id="_NUMBER_0">%d</xliff:g> мүмкіндік қалды, одан кейін SIM картасы біржола құлыпталады. Толығырақ мәліметті оператордан алыңыз.</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"Қазір"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"Он екі"</item>
<item msgid="7389464214252023751">"Бір"</item>
diff --git a/packages/SystemUI/res-keyguard/values-km/strings.xml b/packages/SystemUI/res-keyguard/values-km/strings.xml
index 80b124a..f4795b6 100644
--- a/packages/SystemUI/res-keyguard/values-km/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-km/strings.xml
@@ -150,7 +150,7 @@
<item quantity="other">ឥឡូវនេះស៊ីមត្រូវបានបិទ។ សូមបញ្ចូលកូដ PUK ដើម្បីបន្ត។ អ្នកនៅសល់ការព្យាយាម <xliff:g id="_NUMBER_1">%d</xliff:g> ដងទៀតមុនពេលស៊ីមមិនអាចប្រើបានជាអចិន្ត្រៃយ៍។ ទាក់ទងទៅក្រុមហ៊ុនសេវាទូរសព្ទសម្រាប់ព័ត៌មានលម្អិត។</item>
<item quantity="one">ឥឡូវនេះស៊ីមត្រូវបានបិទ។ សូមបញ្ចូលកូដ PUK ដើម្បីបន្ត។ អ្នកនៅសល់ការព្យាយាម <xliff:g id="_NUMBER_0">%d</xliff:g> ដងទៀតមុនពេលស៊ីមមិនអាចប្រើបានជាអចិន្ត្រៃយ៍។ ទាក់ទងទៅក្រុមហ៊ុនសេវាទូរសព្ទសម្រាប់ព័ត៌មានលម្អិត។</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"វាជា"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"ដប់ពីរ"</item>
<item msgid="7389464214252023751">"មួយ"</item>
diff --git a/packages/SystemUI/res-keyguard/values-kn/strings.xml b/packages/SystemUI/res-keyguard/values-kn/strings.xml
index f48d606..6f83dde 100644
--- a/packages/SystemUI/res-keyguard/values-kn/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-kn/strings.xml
@@ -150,7 +150,7 @@
<item quantity="one">ಸಿಮ್ ಅನ್ನು ಈಗ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ. ಮುಂದುವರಿಸಲು PUK ಕೋಡ್ ನಮೂದಿಸಿ. ಸಿಮ್ ಶಾಶ್ವತವಾಗಿ ನಿಷ್ಪ್ರಯೋಜಕವಾಗುವ ಮುನ್ನ ನಿಮ್ಮಲ್ಲಿ <xliff:g id="_NUMBER_1">%d</xliff:g> ಪ್ರಯತ್ನಗಳು ಬಾಕಿ ಉಳಿದಿವೆ. ವಿವರಗಳಿಗಾಗಿ ವಾಹಕವನ್ನು ಸಂಪರ್ಕಿಸಿ.</item>
<item quantity="other">ಸಿಮ್ ಅನ್ನು ಈಗ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ. ಮುಂದುವರಿಸಲು PUK ಕೋಡ್ ನಮೂದಿಸಿ. ಸಿಮ್ ಶಾಶ್ವತವಾಗಿ ನಿಷ್ಪ್ರಯೋಜಕವಾಗುವ ಮುನ್ನ ನಿಮ್ಮಲ್ಲಿ <xliff:g id="_NUMBER_1">%d</xliff:g> ಪ್ರಯತ್ನಗಳು ಬಾಕಿ ಉಳಿದಿವೆ. ವಿವರಗಳಿಗಾಗಿ ವಾಹಕವನ್ನು ಸಂಪರ್ಕಿಸಿ.</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"ಇದು"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"ಹನ್ನೆರಡು"</item>
<item msgid="7389464214252023751">"ಒಂದು"</item>
diff --git a/packages/SystemUI/res-keyguard/values-ko/strings.xml b/packages/SystemUI/res-keyguard/values-ko/strings.xml
index 0466009..1651be7 100644
--- a/packages/SystemUI/res-keyguard/values-ko/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-ko/strings.xml
@@ -150,7 +150,7 @@
<item quantity="other">SIM이 사용 중지되었습니다. 계속하려면 PUK 코드를 입력하세요. <xliff:g id="_NUMBER_1">%d</xliff:g>번 더 실패하면 SIM을 완전히 사용할 수 없게 됩니다. 자세한 내용은 이동통신사에 문의하세요.</item>
<item quantity="one">SIM이 사용 중지되었습니다. 계속하려면 PUK 코드를 입력하세요. <xliff:g id="_NUMBER_0">%d</xliff:g>번 더 실패하면 SIM을 완전히 사용할 수 없게 됩니다. 자세한 내용은 이동통신사에 문의하세요.</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"현재 시각:"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"열두 시"</item>
<item msgid="7389464214252023751">"한 시"</item>
diff --git a/packages/SystemUI/res-keyguard/values-ky/strings.xml b/packages/SystemUI/res-keyguard/values-ky/strings.xml
index eca9b22..6d0f2ff 100644
--- a/packages/SystemUI/res-keyguard/values-ky/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-ky/strings.xml
@@ -150,7 +150,7 @@
<item quantity="other">SIM-карта азыр жарактан чыкты. Улантуу үчүн PUK-кодду киргизиңиз. SIM-картанын биротоло жарактан чыгарына <xliff:g id="_NUMBER_1">%d</xliff:g> аракет калды. Чоо-жайын билүү үчүн байланыш операторуна кайрылыңыз.</item>
<item quantity="one">SIM-карта азыр жарактан чыкты. Улантуу үчүн PUK-кодду киргизиңиз. SIM-картанын биротоло жарактан чыгаарына <xliff:g id="_NUMBER_0">%d</xliff:g> аракет калды. Чоо-жайын билүү үчүн байланыш операторуна кайрылыңыз.</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"Саат"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"Он эки"</item>
<item msgid="7389464214252023751">"Бир"</item>
diff --git a/packages/SystemUI/res-keyguard/values-lo/strings.xml b/packages/SystemUI/res-keyguard/values-lo/strings.xml
index bd6e53d..23f179e 100644
--- a/packages/SystemUI/res-keyguard/values-lo/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-lo/strings.xml
@@ -150,7 +150,7 @@
<item quantity="other">ຕອນນີ້ປິດການນຳໃຊ້ SIM ແລ້ວ. ໃສ່ລະຫັດ PUK ເພື່ອດຳເນີນການຕໍ່. ທ່ານສາມາດລອງໄດ້ອີກ <xliff:g id="_NUMBER_1">%d</xliff:g> ເທື່ອກ່ອນທີ່ SIM ຈະບໍ່ສາມາດໃຊ້ໄດ້ຖາວອນ. ກະລຸນາຕິດຕໍ່ຜູ້ໃຫ້ບໍລິການສຳລັບລາຍລະອຽດ.</item>
<item quantity="one">ຕອນນີ້ປິດການນຳໃຊ້ SIM ແລ້ວ. ໃສ່ລະຫັດ PUK ເພື່ອດຳເນີນການຕໍ່. ທ່ານສາມາດລອງໄດ້ອີກ <xliff:g id="_NUMBER_0">%d</xliff:g> ເທື່ອກ່ອນທີ່ SIM ຈະບໍ່ສາມາດໃຊ້ໄດ້ຖາວອນ. ກະລຸນາຕິດຕໍ່ຜູ້ໃຫ້ບໍລິການສຳລັບລາຍລະອຽດ.</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"ມັນແມ່ນ"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"ສິບສອງ"</item>
<item msgid="7389464214252023751">"ໜຶ່ງ"</item>
diff --git a/packages/SystemUI/res-keyguard/values-lt/strings.xml b/packages/SystemUI/res-keyguard/values-lt/strings.xml
index 6df93d8..9e4d169 100644
--- a/packages/SystemUI/res-keyguard/values-lt/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-lt/strings.xml
@@ -166,7 +166,7 @@
<item quantity="many">SIM kortelė dabar yra išjungta. Jei norite tęsti, įveskite PUK kodą. Jums liko <xliff:g id="_NUMBER_1">%d</xliff:g> bandymo. Paskui visiškai nebegalėsite naudoti SIM kortelės. Jei reikia išsamios informacijos, susisiekite su operatoriumi.</item>
<item quantity="other">SIM kortelė dabar yra išjungta. Jei norite tęsti, įveskite PUK kodą. Jums liko <xliff:g id="_NUMBER_1">%d</xliff:g> bandymų. Paskui visiškai nebegalėsite naudoti SIM kortelės. Jei reikia išsamios informacijos, susisiekite su operatoriumi.</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"Dabar"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"Dvylika"</item>
<item msgid="7389464214252023751">"Pirma"</item>
diff --git a/packages/SystemUI/res-keyguard/values-lv/strings.xml b/packages/SystemUI/res-keyguard/values-lv/strings.xml
index d906176..9ea4143 100644
--- a/packages/SystemUI/res-keyguard/values-lv/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-lv/strings.xml
@@ -158,7 +158,7 @@
<item quantity="one">SIM karte tagad ir atspējota. Ievadiet PUK kodu, lai turpinātu. Varat mēģināt vēl <xliff:g id="_NUMBER_1">%d</xliff:g> reizi. Kļūdas gadījumā SIM karti vairs nevarēs izmantot. Lai iegūtu detalizētu informāciju, sazinieties ar mobilo sakaru operatoru.</item>
<item quantity="other">SIM karte tagad ir atspējota. Ievadiet PUK kodu, lai turpinātu. Varat mēģināt vēl <xliff:g id="_NUMBER_1">%d</xliff:g> reizes. Kļūdas gadījumā SIM karti vairs nevarēs izmantot. Lai iegūtu detalizētu informāciju, sazinieties ar mobilo sakaru operatoru.</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"Laiks:"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"Divpadsmit"</item>
<item msgid="7389464214252023751">"Viens"</item>
diff --git a/packages/SystemUI/res-keyguard/values-mk/strings.xml b/packages/SystemUI/res-keyguard/values-mk/strings.xml
index 221b997..e48b93d 100644
--- a/packages/SystemUI/res-keyguard/values-mk/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-mk/strings.xml
@@ -150,7 +150,7 @@
<item quantity="one">SIM-картичката сега е оневозможена. Внесете PUK-код за да продолжите. Ви преостанува уште <xliff:g id="_NUMBER_1">%d</xliff:g> обид пред SIM-картичката да стане трајно неупотреблива. Контактирајте го операторот за детали.</item>
<item quantity="other">SIM-картичката сега е оневозможена. Внесете PUK-код за да продолжите. Ви преостануваат уште <xliff:g id="_NUMBER_1">%d</xliff:g> обиди пред SIM-картичката да стане трајно неупотреблива. Контактирајте го операторот за детали.</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"Сега е"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"Дванаесет"</item>
<item msgid="7389464214252023751">"Еден"</item>
diff --git a/packages/SystemUI/res-keyguard/values-ml/strings.xml b/packages/SystemUI/res-keyguard/values-ml/strings.xml
index e664288..37ce007 100644
--- a/packages/SystemUI/res-keyguard/values-ml/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-ml/strings.xml
@@ -150,7 +150,7 @@
<item quantity="other">സിം ഇപ്പോൾ പ്രവർത്തനരഹിതമാക്കി. തുടരുന്നതിന് PUK കോഡ് നൽകുക. സിം ശാശ്വതമായി ഉപയോഗശൂന്യമാകുന്നതിന് മുമ്പായി <xliff:g id="_NUMBER_1">%d</xliff:g> ശ്രമങ്ങൾ കൂടി ശേഷിക്കുന്നു. വിശദാംശങ്ങൾക്ക് കാരിയറുമായി ബന്ധപ്പെടുക.</item>
<item quantity="one">സിം ഇപ്പോൾ പ്രവർത്തനരഹിതമാക്കി. തുടരുന്നതിന് PUK കോഡ് നൽകുക. സിം ശാശ്വതമായി ഉപയോഗശൂന്യമാകുന്നതിന് മുമ്പായി <xliff:g id="_NUMBER_0">%d</xliff:g> ശ്രമം കൂടി ശേഷിക്കുന്നു. വിശദാംശങ്ങൾക്ക് കാരിയറുമായി ബന്ധപ്പെടുക.</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"സമയം"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"പന്ത്രണ്ട്"</item>
<item msgid="7389464214252023751">"ഒന്ന്"</item>
diff --git a/packages/SystemUI/res-keyguard/values-mn/strings.xml b/packages/SystemUI/res-keyguard/values-mn/strings.xml
index e418731..86da688 100644
--- a/packages/SystemUI/res-keyguard/values-mn/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-mn/strings.xml
@@ -150,7 +150,7 @@
<item quantity="other">SIM-г идэвхгүй болголоо. Үргэлжлүүлэхийн тулд PUK кодыг оруулна уу. Таны SIM бүрмөсөн хүчингүй болох хүртэл <xliff:g id="_NUMBER_1">%d</xliff:g> оролдлого үлдлээ. Дэлгэрэнгүй мэдээлэл авахын тулд оператор компанитайгаа холбогдоно уу.</item>
<item quantity="one">SIM-г идэвхгүй болголоо. Үргэлжлүүлэхийн тулд PUK кодыг оруулна уу. Таны SIM бүрмөсөн хүчингүй болох хүртэл <xliff:g id="_NUMBER_0">%d</xliff:g> оролдлого үлдлээ. Дэлгэрэнгүй мэдээлэл авахын тулд оператор компанитайгаа холбогдоно уу.</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"Одоо"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"Арван хоёр"</item>
<item msgid="7389464214252023751">"Нэг"</item>
diff --git a/packages/SystemUI/res-keyguard/values-mr/strings.xml b/packages/SystemUI/res-keyguard/values-mr/strings.xml
index 9d83e93..ea0c0bb 100644
--- a/packages/SystemUI/res-keyguard/values-mr/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-mr/strings.xml
@@ -150,7 +150,7 @@
<item quantity="one">सिम आता बंद केलेले आहे. सुरू ठेवण्यासाठी PUK कोड टाका. सिम कायमचे बंद होण्याआधी तुमच्याकडे <xliff:g id="_NUMBER_1">%d</xliff:g> प्रयत्न शिल्लक आहे. तपशीलांसाठी वाहकाशी संपर्क साधा.</item>
<item quantity="other">सिम आता बंद केलेले आहे. सुरू ठेवण्यासाठी PUK कोड टाका. सिम कायमचे बंद होण्याआधी तुमच्याकडे <xliff:g id="_NUMBER_1">%d</xliff:g> प्रयत्न शिल्लक आहेत. तपशीलांसाठी वाहकाशी संपर्क साधा.</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"हे आहे"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"बारा"</item>
<item msgid="7389464214252023751">"एक"</item>
diff --git a/packages/SystemUI/res-keyguard/values-ms/strings.xml b/packages/SystemUI/res-keyguard/values-ms/strings.xml
index 1c82f7c..03dca91 100644
--- a/packages/SystemUI/res-keyguard/values-ms/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-ms/strings.xml
@@ -150,7 +150,7 @@
<item quantity="other">Kini SIM dilumpuhkan. Masukkan kod PUK untuk meneruskan. Tinggal <xliff:g id="_NUMBER_1">%d</xliff:g> percubaan sebelum SIM tidak boleh digunakan secara kekal. Hubungi pembawa untuk mendapatkan butiran.</item>
<item quantity="one">Kini SIM dilumpuhkan. Masukkan kod PUK untuk meneruskan. Tinggal <xliff:g id="_NUMBER_0">%d</xliff:g> percubaan sebelum SIM tidak boleh digunakan secara kekal. Hubungi pembawa untuk mendapatkan butiran.</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"Pukul"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"Dua bls"</item>
<item msgid="7389464214252023751">"Satu"</item>
diff --git a/packages/SystemUI/res-keyguard/values-my/strings.xml b/packages/SystemUI/res-keyguard/values-my/strings.xml
index efdd779..a468a85 100644
--- a/packages/SystemUI/res-keyguard/values-my/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-my/strings.xml
@@ -150,7 +150,7 @@
<item quantity="other">ဆင်းမ်ကဒ်သည် ယခု ပိတ်သွားပါပြီ။ ရှေ့ဆက်ရန် PUK ကုဒ်ကို ထည့်ပါ။ ဆင်းမ်ကဒ် အပြီးပိတ်မသွားမီ သင့်တွင် <xliff:g id="_NUMBER_1">%d</xliff:g> ကြိမ် စမ်းသပ်ခွင့် ကျန်ပါသေးသည်။ အသေးစိတ်အချက်များအတွက် ဝန်ဆောင်မှုပေးသူကို ဆက်သွယ်ပါ။</item>
<item quantity="one">ဆင်းမ်ကဒ်သည် ယခု ပိတ်သွားပါပြီ။ ရှေ့ဆက်ရန် PUK ကုဒ်ကို ထည့်ပါ။ ဆင်းမ်ကဒ် အပြီးပိတ်မသွားမီ သင့်တွင် <xliff:g id="_NUMBER_0">%d</xliff:g> ကြိမ် စမ်းသပ်ခွင့် ကျန်ပါသေးသည်။ အသေးစိတ်အချက်များအတွက် ဝန်ဆောင်မှုပေးသူကို ဆက်သွယ်ပါ။</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"ယခု"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"ဆယ့်နှစ်"</item>
<item msgid="7389464214252023751">"တစ်"</item>
diff --git a/packages/SystemUI/res-keyguard/values-nb/strings.xml b/packages/SystemUI/res-keyguard/values-nb/strings.xml
index 17704c4..fcf06eb 100644
--- a/packages/SystemUI/res-keyguard/values-nb/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-nb/strings.xml
@@ -150,7 +150,7 @@
<item quantity="other">SIM-kortet er deaktivert nå. Skriv inn PUK-koden for å fortsette. Du har <xliff:g id="_NUMBER_1">%d</xliff:g> forsøk igjen før SIM-kortet blir permanent ubrukelig. Kontakt operatøren for å få vite mer.</item>
<item quantity="one">SIM-kortet er deaktivert nå. Skriv inn PUK-koden for å fortsette. Du har <xliff:g id="_NUMBER_0">%d</xliff:g> forsøk igjen før SIM-kortet blir permanent ubrukelig. Kontakt operatøren for å få vite mer.</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"Klokken"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"Tolv"</item>
<item msgid="7389464214252023751">"Ett"</item>
diff --git a/packages/SystemUI/res-keyguard/values-ne/strings.xml b/packages/SystemUI/res-keyguard/values-ne/strings.xml
index 77bc113..c3d92ab 100644
--- a/packages/SystemUI/res-keyguard/values-ne/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-ne/strings.xml
@@ -150,7 +150,7 @@
<item quantity="other">SIM लाई असक्षम पारिएको छ। जारी राख्न PUK कोड प्रविष्टि गर्नुहोस्। तपाईंसँग <xliff:g id="_NUMBER_1">%d</xliff:g> प्रयासहरू बाँकी छन्, त्यसपछि SIM सदाका लागि प्रयोग गर्न नमिल्ने हुन्छ। विवरणहरूका लागि सेवा प्रदायकलाई सम्पर्क गर्नुहोस्।</item>
<item quantity="one">SIM लाई असक्षम पारिएको छ। जारी राख्न PUK कोड प्रविष्टि गर्नुहोस्। तपाईंसँग <xliff:g id="_NUMBER_0">%d</xliff:g> प्रयास बाँकी छ, त्यसपछि SIM सदाका लागि प्रयोग गर्न नमिल्ने हुन्छ। विवरणहरूका लागि सेवा प्रदायकलाई सम्पर्क गर्नुहोस्।</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"समय:"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"बाह्र"</item>
<item msgid="7389464214252023751">"एक"</item>
diff --git a/packages/SystemUI/res-keyguard/values-nl/strings.xml b/packages/SystemUI/res-keyguard/values-nl/strings.xml
index 3bbbb53..b3d65bb7 100644
--- a/packages/SystemUI/res-keyguard/values-nl/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-nl/strings.xml
@@ -150,7 +150,7 @@
<item quantity="other">De simkaart is nu uitgeschakeld. Geef de pukcode op om door te gaan. Je hebt nog <xliff:g id="_NUMBER_1">%d</xliff:g> pogingen over voordat de simkaart definitief onbruikbaar wordt. Neem contact op met je provider voor meer informatie.</item>
<item quantity="one">De simkaart is nu uitgeschakeld. Geef de pukcode op om door te gaan. Je hebt nog <xliff:g id="_NUMBER_0">%d</xliff:g> poging over voordat de simkaart definitief onbruikbaar wordt. Neem contact op met je provider voor meer informatie.</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"Het is"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"Twaalf"</item>
<item msgid="7389464214252023751">"Eén"</item>
diff --git a/packages/SystemUI/res-keyguard/values-or/strings.xml b/packages/SystemUI/res-keyguard/values-or/strings.xml
index 0db20aa..94c42c4 100644
--- a/packages/SystemUI/res-keyguard/values-or/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-or/strings.xml
@@ -150,7 +150,7 @@
<item quantity="other">SIM କାର୍ଡକୁ ବର୍ତ୍ତମାନ ଅକ୍ଷମ କରିଦିଆଯାଇଛି। ଜାରି ରଖିବାକୁ PUK କୋଡ୍ ଲେଖନ୍ତୁ। ଆଉ <xliff:g id="_NUMBER_1">%d</xliff:g> ଥର ଭୁଲ କୋଡ୍ ଲେଖିବା ପରେ SIM କାର୍ଡ ସ୍ଥାୟୀ ଭାବେ ଅନୁପଯୋଗୀ ହୋଇଯିବ। ବିବରଣୀ ପାଇଁ କେରିଅର୍ର ସହ ଯୋଗାଯୋଗ କରନ୍ତୁ।</item>
<item quantity="one">SIM କାର୍ଡକୁ ବର୍ତ୍ତମାନ ଅକ୍ଷମ କରିଦିଆଯାଇଛି। ଜାରି ରଖିବାକୁ PUK କୋଡ୍ ଲେଖନ୍ତୁ। ଆଉ <xliff:g id="_NUMBER_0">%d</xliff:g> ଥର ଭୁଲ କୋଡ୍ ଲେଖିବା ପରେ SIM କାର୍ଡ ସ୍ଥାୟୀ ଭାବେ ଅନୁପଯୋଗୀ ହୋଇଯିବ। ବିବରଣୀ ପାଇଁ କେରିଅର୍ର ସହ ଯୋଗାଯୋଗ କରନ୍ତୁ।</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"ଏବେ"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"ବାର"</item>
<item msgid="7389464214252023751">"ଏକ"</item>
diff --git a/packages/SystemUI/res-keyguard/values-pa/strings.xml b/packages/SystemUI/res-keyguard/values-pa/strings.xml
index 9fd9b19..9b4e28d 100644
--- a/packages/SystemUI/res-keyguard/values-pa/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-pa/strings.xml
@@ -150,7 +150,7 @@
<item quantity="one">ਸਿਮ ਹੁਣ ਬੰਦ ਹੋ ਗਿਆ ਹੈ। ਜਾਰੀ ਰੱਖਣ ਲਈ PUK ਕੋਡ ਦਾਖਲ ਕਰੋ। ਸਿਮ ਦੇ ਪੱਕੇ ਤੌਰ \'ਤੇ ਬੇਕਾਰ ਹੋ ਜਾਣ ਤੋਂ ਪਹਿਲਾਂ ਤੁਹਾਡੇ ਕੋਲ <xliff:g id="_NUMBER_1">%d</xliff:g> ਕੋਸ਼ਿਸ਼ ਬਾਕੀ ਹੈ। ਵੇਰਵਿਆਂ ਲਈ ਕੈਰੀਅਰ ਨੂੰ ਸੰਪਰਕ ਕਰੋ।</item>
<item quantity="other">ਸਿਮ ਹੁਣ ਬੰਦ ਹੋ ਗਿਆ ਹੈ। ਜਾਰੀ ਰੱਖਣ ਲਈ PUK ਕੋਡ ਦਾਖਲ ਕਰੋ। ਸਿਮ ਦੇ ਪੱਕੇ ਤੌਰ \'ਤੇ ਬੇਕਾਰ ਹੋ ਜਾਣ ਤੋਂ ਪਹਿਲਾਂ ਤੁਹਾਡੇ ਕੋਲ <xliff:g id="_NUMBER_1">%d</xliff:g> ਕੋਸ਼ਿਸ਼ਾਂ ਬਾਕੀ ਹਨ। ਵੇਰਵਿਆਂ ਲਈ ਕੈਰੀਅਰ ਨੂੰ ਸੰਪਰਕ ਕਰੋ।</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"ਸਮਾਂ"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"ਬਾਰਾਂ"</item>
<item msgid="7389464214252023751">"ਇੱਕ"</item>
diff --git a/packages/SystemUI/res-keyguard/values-pl/strings.xml b/packages/SystemUI/res-keyguard/values-pl/strings.xml
index 106fab3..2294430 100644
--- a/packages/SystemUI/res-keyguard/values-pl/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-pl/strings.xml
@@ -166,7 +166,7 @@
<item quantity="other">Karta SIM została wyłączona. Wpisz kod PUK, by przejść dalej. Masz jeszcze <xliff:g id="_NUMBER_1">%d</xliff:g> próby, zanim karta SIM zostanie trwale zablokowana. Aby uzyskać szczegółowe informacje, skontaktuj się z operatorem.</item>
<item quantity="one">Karta SIM została wyłączona. Wpisz kod PUK, by przejść dalej. Masz jeszcze <xliff:g id="_NUMBER_0">%d</xliff:g> próbę, zanim karta SIM zostanie trwale zablokowana. Aby uzyskać szczegółowe informacje, skontaktuj się z operatorem.</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"Jest"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"Dwanaście"</item>
<item msgid="7389464214252023751">"Jeden"</item>
diff --git a/packages/SystemUI/res-keyguard/values-pt-rBR/strings.xml b/packages/SystemUI/res-keyguard/values-pt-rBR/strings.xml
index 3c6a372..56815ca 100644
--- a/packages/SystemUI/res-keyguard/values-pt-rBR/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-pt-rBR/strings.xml
@@ -150,7 +150,7 @@
<item quantity="one">O chip agora está desativado. Informe o código PUK para continuar. Você tem <xliff:g id="_NUMBER_1">%d</xliff:g> tentativa restante antes de o chip se tornar permanentemente inutilizável. Entre em contato com a operadora para saber mais detalhes.</item>
<item quantity="other">O chip agora está desativado. Informe o código PUK para continuar. Você tem <xliff:g id="_NUMBER_1">%d</xliff:g> tentativas restantes antes de o chip se tornar permanentemente inutilizável. Entre em contato com a operadora para saber mais detalhes.</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"São"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"Doze"</item>
<item msgid="7389464214252023751">"Uma"</item>
diff --git a/packages/SystemUI/res-keyguard/values-pt-rPT/strings.xml b/packages/SystemUI/res-keyguard/values-pt-rPT/strings.xml
index 4f60187..4e09dc7 100644
--- a/packages/SystemUI/res-keyguard/values-pt-rPT/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-pt-rPT/strings.xml
@@ -150,7 +150,7 @@
<item quantity="other">O SIM encontra-se desativado. Introduza o código PUK para continuar. Tem mais <xliff:g id="_NUMBER_1">%d</xliff:g> tentativas antes de o cartão SIM ficar permanentemente inutilizável. Contacte o operador para obter mais detalhes.</item>
<item quantity="one">O SIM encontra-se desativado. Introduza o código PUK para continuar. Tem mais <xliff:g id="_NUMBER_0">%d</xliff:g> tentativa antes de o cartão SIM ficar permanentemente inutilizável. Contacte o operador para obter mais detalhes.</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"São"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"Doze"</item>
<item msgid="7389464214252023751">"Google One"</item>
diff --git a/packages/SystemUI/res-keyguard/values-pt/strings.xml b/packages/SystemUI/res-keyguard/values-pt/strings.xml
index 3c6a372..56815ca 100644
--- a/packages/SystemUI/res-keyguard/values-pt/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-pt/strings.xml
@@ -150,7 +150,7 @@
<item quantity="one">O chip agora está desativado. Informe o código PUK para continuar. Você tem <xliff:g id="_NUMBER_1">%d</xliff:g> tentativa restante antes de o chip se tornar permanentemente inutilizável. Entre em contato com a operadora para saber mais detalhes.</item>
<item quantity="other">O chip agora está desativado. Informe o código PUK para continuar. Você tem <xliff:g id="_NUMBER_1">%d</xliff:g> tentativas restantes antes de o chip se tornar permanentemente inutilizável. Entre em contato com a operadora para saber mais detalhes.</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"São"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"Doze"</item>
<item msgid="7389464214252023751">"Uma"</item>
diff --git a/packages/SystemUI/res-keyguard/values-ro/strings.xml b/packages/SystemUI/res-keyguard/values-ro/strings.xml
index 9e4170e..23be62c 100644
--- a/packages/SystemUI/res-keyguard/values-ro/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-ro/strings.xml
@@ -158,7 +158,7 @@
<item quantity="other">Cardul SIM este dezactivat acum. Introduceți codul PUK pentru a continua. V-au mai rămas <xliff:g id="_NUMBER_1">%d</xliff:g> de încercări până când cardul SIM va deveni inutilizabil definitiv. Contactați operatorul pentru detalii.</item>
<item quantity="one">Cardul SIM este dezactivat acum. Introduceți codul PUK pentru a continua. V-a mai rămas <xliff:g id="_NUMBER_0">%d</xliff:g> încercare până când cardul SIM va deveni inutilizabil definitiv. Contactați operatorul pentru detalii.</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"Este"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"Douăsprezece"</item>
<item msgid="7389464214252023751">"Unu"</item>
diff --git a/packages/SystemUI/res-keyguard/values-ru/strings.xml b/packages/SystemUI/res-keyguard/values-ru/strings.xml
index dd9bc6a..f093748 100644
--- a/packages/SystemUI/res-keyguard/values-ru/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-ru/strings.xml
@@ -166,7 +166,7 @@
<item quantity="many">SIM-карта отключена. Чтобы продолжить, введите PUK-код. Осталось <xliff:g id="_NUMBER_1">%d</xliff:g> попыток. После этого SIM-карта будет заблокирована навсегда. За подробной информацией обратитесь к оператору связи.</item>
<item quantity="other">SIM-карта отключена. Чтобы продолжить, введите PUK-код. Осталось <xliff:g id="_NUMBER_1">%d</xliff:g> попытки. После этого SIM-карта будет заблокирована навсегда. За подробной информацией обратитесь к оператору связи.</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"Сейчас"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"двенадцать"</item>
<item msgid="7389464214252023751">"один"</item>
diff --git a/packages/SystemUI/res-keyguard/values-si/strings.xml b/packages/SystemUI/res-keyguard/values-si/strings.xml
index 59d2a06..17122a5 100644
--- a/packages/SystemUI/res-keyguard/values-si/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-si/strings.xml
@@ -150,7 +150,7 @@
<item quantity="one">SIM දැන් අබල කර ඇත. දිගටම කරගෙන යාමට PUK කේතය ඇතුළු කරන්න. SIM ස්ථිරවම භාවිත කළ නොහැකි බවට පත් වීමට පෙර ඔබ සතුව උත්සාහයන් <xliff:g id="_NUMBER_1">%d</xliff:g>ක් ඉතිරිව ඇත. විස්තර සඳහා වාහක සම්බන්ධ කර ගන්න.</item>
<item quantity="other">SIM දැන් අබල කර ඇත. දිගටම කරගෙන යාමට PUK කේතය ඇතුළු කරන්න. SIM ස්ථිරවම භාවිත කළ නොහැකි බවට පත් වීමට පෙර ඔබ සතුව උත්සාහයන් <xliff:g id="_NUMBER_1">%d</xliff:g>ක් ඉතිරිව ඇත. විස්තර සඳහා වාහක සම්බන්ධ කර ගන්න.</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"ඒ"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"දොළහ"</item>
<item msgid="7389464214252023751">"එක"</item>
diff --git a/packages/SystemUI/res-keyguard/values-sk/strings.xml b/packages/SystemUI/res-keyguard/values-sk/strings.xml
index 0cd5f78..c991903 100644
--- a/packages/SystemUI/res-keyguard/values-sk/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-sk/strings.xml
@@ -166,7 +166,7 @@
<item quantity="other">SIM karta je deaktivovaná. Pokračujte zadaním kódu PUK. Zostáva vám <xliff:g id="_NUMBER_1">%d</xliff:g> pokusov, potom sa SIM karta natrvalo zablokuje. Podrobnosti vám poskytne operátor.</item>
<item quantity="one">SIM karta je deaktivovaná. Pokračujte zadaním kódu PUK. Zostáva vám <xliff:g id="_NUMBER_0">%d</xliff:g> pokus, potom sa SIM karta natrvalo zablokuje. Podrobnosti vám poskytne operátor.</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"Práve je"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"Dvanásť"</item>
<item msgid="7389464214252023751">"Jedna"</item>
diff --git a/packages/SystemUI/res-keyguard/values-sl/strings.xml b/packages/SystemUI/res-keyguard/values-sl/strings.xml
index 52b9d60..1aba2aa 100644
--- a/packages/SystemUI/res-keyguard/values-sl/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-sl/strings.xml
@@ -166,7 +166,7 @@
<item quantity="few">Kartica SIM je zdaj onemogočena. Če želite nadaljevati, vnesite kodo PUK. Na voljo imate še <xliff:g id="_NUMBER_1">%d</xliff:g> poskuse. Potem bo kartica SIM postala trajno neuporabna. Za podrobnosti se obrnite na operaterja.</item>
<item quantity="other">Kartica SIM je zdaj onemogočena. Če želite nadaljevati, vnesite kodo PUK. Na voljo imate še <xliff:g id="_NUMBER_1">%d</xliff:g> poskusov. Potem bo kartica SIM postala trajno neuporabna. Za podrobnosti se obrnite na operaterja.</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"Ura je"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"Dvanajst"</item>
<item msgid="7389464214252023751">"Ena"</item>
diff --git a/packages/SystemUI/res-keyguard/values-sq/strings.xml b/packages/SystemUI/res-keyguard/values-sq/strings.xml
index 1dfb8fd..29819e2 100644
--- a/packages/SystemUI/res-keyguard/values-sq/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-sq/strings.xml
@@ -150,7 +150,7 @@
<item quantity="other">Karta SIM tani është çaktivizuar. Fut kodin PUK për të vazhduar. Të kanë mbetur edhe <xliff:g id="_NUMBER_1">%d</xliff:g> përpjekje përpara se karta SIM të bëhet përgjithmonë e papërdorshme. Kontakto me operatorin për detaje.</item>
<item quantity="one">Karta SIM tani është çaktivizuar. Fut kodin PUK për të vazhduar. Të ka mbetur edhe <xliff:g id="_NUMBER_0">%d</xliff:g> përpjekje përpara se karta SIM të bëhet përgjithmonë e papërdorshme. Kontakto me operatorin për detaje.</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"Ora është"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"Dymbëdhjetë"</item>
<item msgid="7389464214252023751">"Një"</item>
diff --git a/packages/SystemUI/res-keyguard/values-sr/strings.xml b/packages/SystemUI/res-keyguard/values-sr/strings.xml
index 7bb41e9..d572f96 100644
--- a/packages/SystemUI/res-keyguard/values-sr/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-sr/strings.xml
@@ -158,7 +158,7 @@
<item quantity="few">SIM је сада онемогућен. Унесите PUK кôд да бисте наставили. Имате још <xliff:g id="_NUMBER_1">%d</xliff:g> покушаја пре него што SIM постане трајно неупотребљив. Детаљне информације потражите од мобилног оператера.</item>
<item quantity="other">SIM је сада онемогућен. Унесите PUK кôд да бисте наставили. Имате још <xliff:g id="_NUMBER_1">%d</xliff:g> покушаја пре него што SIM постане трајно неупотребљив. Детаљне информације потражите од мобилног оператера.</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"Сада је"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"дванаест"</item>
<item msgid="7389464214252023751">"један"</item>
diff --git a/packages/SystemUI/res-keyguard/values-sv/strings.xml b/packages/SystemUI/res-keyguard/values-sv/strings.xml
index 2475dc1..6608add 100644
--- a/packages/SystemUI/res-keyguard/values-sv/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-sv/strings.xml
@@ -150,7 +150,7 @@
<item quantity="other">SIM-kortet är inaktiverat. Ange PUK-koden om du vill fortsätta. <xliff:g id="_NUMBER_1">%d</xliff:g> försök återstår innan SIM-kortet blir obrukbart. Kontakta operatören för mer information.</item>
<item quantity="one">SIM-kortet är inaktiverat. Ange PUK-koden om du vill fortsätta. <xliff:g id="_NUMBER_0">%d</xliff:g> försök återstår innan SIM-kortet blir obrukbart. Kontakta operatören för mer information.</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"Hon är"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"Tolv"</item>
<item msgid="7389464214252023751">"En"</item>
diff --git a/packages/SystemUI/res-keyguard/values-sw/strings.xml b/packages/SystemUI/res-keyguard/values-sw/strings.xml
index 0a1acf2..102db535 100644
--- a/packages/SystemUI/res-keyguard/values-sw/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-sw/strings.xml
@@ -150,7 +150,7 @@
<item quantity="other">Sasa SIM imefungwa. Weka msimbo wa PUK ili uendelee. Umesalia na majaribio <xliff:g id="_NUMBER_1">%d</xliff:g> kabla ya SIM kuacha kufanya kazi kabisa. Wasiliana na mtoa huduma kwa maelezo.</item>
<item quantity="one">Sasa SIM imefungwa. Weka msimbo wa PUK ili uendelee. Umesalia na jaribio <xliff:g id="_NUMBER_0">%d</xliff:g> kabla ya SIM kuacha kufanya kazi kabisa. Wasiliana na mtoa huduma kwa maelezo.</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"Ni saa"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"Sita"</item>
<item msgid="7389464214252023751">"Saba"</item>
diff --git a/packages/SystemUI/res-keyguard/values-ta/strings.xml b/packages/SystemUI/res-keyguard/values-ta/strings.xml
index 57a614a..009fb2d 100644
--- a/packages/SystemUI/res-keyguard/values-ta/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-ta/strings.xml
@@ -150,7 +150,7 @@
<item quantity="other">சிம் தற்போது முடக்கப்பட்டுள்ளது. தொடர்வதற்கு, PUK குறியீட்டை உள்ளிடவும். நீங்கள் <xliff:g id="_NUMBER_1">%d</xliff:g> முறை மட்டுமே முயற்சிக்க முடியும். அதன்பிறகு சிம் நிரந்தரமாக முடக்கப்படும். விவரங்களுக்கு, மொபைல் நிறுவனத்தைத் தொடர்புகொள்ளவும்.</item>
<item quantity="one">சிம் தற்போது முடக்கப்பட்டுள்ளது. தொடர்வதற்கு, PUK குறியீட்டை உள்ளிடவும். நீங்கள் <xliff:g id="_NUMBER_0">%d</xliff:g> முறை மட்டுமே முயற்சிக்க முடியும். அதன்பிறகு சிம் நிரந்தரமாக முடக்கப்படும். விவரங்களுக்கு, மொபைல் நிறுவனத்தைத் தொடர்புகொள்ளவும்.</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"அதன்"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"பன்னிரண்டு"</item>
<item msgid="7389464214252023751">"ஒன்று"</item>
diff --git a/packages/SystemUI/res-keyguard/values-te/strings.xml b/packages/SystemUI/res-keyguard/values-te/strings.xml
index 58880c4..8f4000f 100644
--- a/packages/SystemUI/res-keyguard/values-te/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-te/strings.xml
@@ -150,7 +150,7 @@
<item quantity="other">SIM ఇప్పుడు నిలిపివేయబడింది. PUK కోడ్ను నమోదు చేయండి. SIM శాశ్వతంగా నిరుపయోగం కాకుండా ఉండటానికి మీకు <xliff:g id="_NUMBER_1">%d</xliff:g> ప్రయత్నాలు మిగిలి ఉన్నాయి. వివరాల కోసం కారియర్ను సంప్రదించండి.</item>
<item quantity="one">SIM ఇప్పుడు నిలిపివేయబడింది. PUK కోడ్ను నమోదు చేయండి. SIM శాశ్వతంగా నిరుపయోగం కాకుండా ఉండటానికి మీకు <xliff:g id="_NUMBER_0">%d</xliff:g> ప్రయత్నం మిగిలి ఉంది వివరాల కోసం కారియర్ను సంప్రదించండి.</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"ఇప్పుడు"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"పన్నెండు"</item>
<item msgid="7389464214252023751">"ఒకటి"</item>
diff --git a/packages/SystemUI/res-keyguard/values-th/strings.xml b/packages/SystemUI/res-keyguard/values-th/strings.xml
index bb52a7f..bb58e20 100644
--- a/packages/SystemUI/res-keyguard/values-th/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-th/strings.xml
@@ -150,7 +150,7 @@
<item quantity="other">ซิมถูกปิดใช้งานในขณะนี้ โปรดป้อนรหัส PUK เพื่อทำต่อ คุณพยายามได้อีก <xliff:g id="_NUMBER_1">%d</xliff:g> ครั้งก่อนที่ซิมจะไม่สามารถใช้งานได้อย่างถาวร โปรดติดต่อสอบถามรายละเอียดจากผู้ให้บริการ</item>
<item quantity="one">ซิมถูกปิดใช้งานในขณะนี้ โปรดป้อนรหัส PUK เพื่อทำต่อ คุณพยายามได้อีก <xliff:g id="_NUMBER_0">%d</xliff:g> ครั้งก่อนที่ซิมจะไม่สามารถใช้งานได้อย่างถาวร โปรดติดต่อสอบถามรายละเอียดจากผู้ให้บริการ</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"เวลา"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"สิบสอง"</item>
<item msgid="7389464214252023751">"หนึ่ง"</item>
diff --git a/packages/SystemUI/res-keyguard/values-tl/strings.xml b/packages/SystemUI/res-keyguard/values-tl/strings.xml
index 1f480f4..ec7b924 100644
--- a/packages/SystemUI/res-keyguard/values-tl/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-tl/strings.xml
@@ -150,7 +150,7 @@
<item quantity="one">Naka-disable na ang SIM. Ilagay ang PUK code upang magpatuloy. Mayroon kang <xliff:g id="_NUMBER_1">%d</xliff:g> natitirang pagsubok bago tuluyang hindi magamit ang SIM. Makipag-ugnayan sa carrier para sa mga detalye.</item>
<item quantity="other">Naka-disable na ang SIM. Ilagay ang PUK code upang magpatuloy. Mayroon kang <xliff:g id="_NUMBER_1">%d</xliff:g> na natitirang pagsubok bago tuluyang hindi magamit ang SIM. Makipag-ugnayan sa carrier para sa mga detalye.</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"Oras ay"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"Twelve"</item>
<item msgid="7389464214252023751">"One"</item>
diff --git a/packages/SystemUI/res-keyguard/values-tr/strings.xml b/packages/SystemUI/res-keyguard/values-tr/strings.xml
index 8ff1d88..92b3fb3 100644
--- a/packages/SystemUI/res-keyguard/values-tr/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-tr/strings.xml
@@ -150,7 +150,7 @@
<item quantity="other">SIM artık devre dışı. Devam etmek için PUK kodunu girin. SIM kalıcı olarak kullanım dışı kalmadan önce <xliff:g id="_NUMBER_1">%d</xliff:g> deneme hakkınız kaldı. Ayrıntılı bilgi için operatörünüzle iletişim kurun.</item>
<item quantity="one">SIM artık devre dışı. Devam etmek için PUK kodunu girin. SIM kalıcı olarak kullanım dışı kalmadan önce <xliff:g id="_NUMBER_0">%d</xliff:g> deneme hakkınız kaldı. Ayrıntılı bilgi için operatörünüzle iletişim kurun.</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"Saat"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"On İki"</item>
<item msgid="7389464214252023751">"Bir"</item>
diff --git a/packages/SystemUI/res-keyguard/values-uk/strings.xml b/packages/SystemUI/res-keyguard/values-uk/strings.xml
index 3f0982f..2772d07 100644
--- a/packages/SystemUI/res-keyguard/values-uk/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-uk/strings.xml
@@ -166,7 +166,7 @@
<item quantity="many">SIM-карту заблоковано. Щоб продовжити, введіть PUK-код. Залишилося <xliff:g id="_NUMBER_1">%d</xliff:g> спроб. Після цього SIM-карту буде назавжди заблоковано. Щоб дізнатися більше, зверніться до свого оператора.</item>
<item quantity="other">SIM-карту заблоковано. Щоб продовжити, введіть PUK-код. Залишилося <xliff:g id="_NUMBER_1">%d</xliff:g> спроби. Після цього SIM-карту буде назавжди заблоковано. Щоб дізнатися більше, зверніться до свого оператора.</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"Зараз"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"дванадцята"</item>
<item msgid="7389464214252023751">"перша"</item>
diff --git a/packages/SystemUI/res-keyguard/values-ur/strings.xml b/packages/SystemUI/res-keyguard/values-ur/strings.xml
index 3c520f9..e9e6709 100644
--- a/packages/SystemUI/res-keyguard/values-ur/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-ur/strings.xml
@@ -150,7 +150,7 @@
<item quantity="other">SIM اب غیر فعال ہے۔ جاری رکھنے کیلئے PUK کوڈ درج کریں۔ SIM کے مستقل طور پر ناقابل استعمال ہونے سے پہلے آپ کے پاس <xliff:g id="_NUMBER_1">%d</xliff:g> کوششیں بچی ہیں۔ تفصیلات کیلئے کیریئر سے رابطہ کریں۔</item>
<item quantity="one">SIM اب غیر فعال ہے۔ جاری رکھنے کیلئے PUK کوڈ درج کریں۔ SIM کے مستقل طور پر ناقابل استعمال ہونے سے پہلے آپ کے پاس <xliff:g id="_NUMBER_0">%d</xliff:g> کوشش بچی ہے۔ تفصیلات کیلئے کیریئر سے رابطہ کریں۔</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"وقت/ابھی"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"بارہ"</item>
<item msgid="7389464214252023751">"ایک"</item>
diff --git a/packages/SystemUI/res-keyguard/values-uz/strings.xml b/packages/SystemUI/res-keyguard/values-uz/strings.xml
index 640a987..676f7bb9 100644
--- a/packages/SystemUI/res-keyguard/values-uz/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-uz/strings.xml
@@ -152,7 +152,7 @@
<item quantity="other">SIM karta faolsizlantirildi. Davom etish uchun PUK kodni kiriting. Yana <xliff:g id="_NUMBER_1">%d</xliff:g> marta xato qilsangiz, SIM kartangiz butunlay qulflanadi. Batafsil axborot olish uchun tarmoq operatoriga murojaat qiling.</item>
<item quantity="one">SIM karta faolsizlantirildi. Davom etish uchun PUK kodni kiriting. Yana <xliff:g id="_NUMBER_0">%d</xliff:g> marta xato qilsangiz, SIM kartangiz butunlay qulflanadi. Batafsil axborot olish uchun tarmoq operatoriga murojaat qiling.</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"Hozir"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"Oʻn ikki"</item>
<item msgid="7389464214252023751">"Bir"</item>
diff --git a/packages/SystemUI/res-keyguard/values-vi/strings.xml b/packages/SystemUI/res-keyguard/values-vi/strings.xml
index 2a62fb8..f2cfb2a 100644
--- a/packages/SystemUI/res-keyguard/values-vi/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-vi/strings.xml
@@ -150,7 +150,7 @@
<item quantity="other">SIM hiện đã bị tắt. Hãy nhập mã PUK để tiếp tục. Bạn còn <xliff:g id="_NUMBER_1">%d</xliff:g> lần thử trước khi SIM vĩnh viễn không sử dụng được. Hãy liên hệ với nhà cung cấp dịch vụ để biết chi tiết.</item>
<item quantity="one">SIM hiện đã bị tắt. Hãy nhập mã PUK để tiếp tục. Bạn còn <xliff:g id="_NUMBER_0">%d</xliff:g> lần thử trước khi SIM vĩnh viễn không thể sử dụng được. Hãy liên hệ với nhà cung cấp dịch vụ để biết chi tiết.</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"Hiện là"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"Mười hai"</item>
<item msgid="7389464214252023751">"Một"</item>
diff --git a/packages/SystemUI/res-keyguard/values-zh-rCN/strings.xml b/packages/SystemUI/res-keyguard/values-zh-rCN/strings.xml
index 80fac90..efa5fc3 100644
--- a/packages/SystemUI/res-keyguard/values-zh-rCN/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-zh-rCN/strings.xml
@@ -150,7 +150,7 @@
<item quantity="other">SIM 卡现已停用,请输入 PUK 码继续使用。您还可以尝试 <xliff:g id="_NUMBER_1">%d</xliff:g> 次。如果仍不正确,该 SIM 卡将永远无法使用。有关详情,请联系您的运营商。</item>
<item quantity="one">SIM 卡现已停用,请输入 PUK 码继续使用。您还可以尝试 <xliff:g id="_NUMBER_0">%d</xliff:g> 次。如果仍不正确,该 SIM 卡将永远无法使用。有关详情,请联系您的运营商。</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"时间是"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"十二"</item>
<item msgid="7389464214252023751">"一"</item>
diff --git a/packages/SystemUI/res-keyguard/values-zh-rHK/strings.xml b/packages/SystemUI/res-keyguard/values-zh-rHK/strings.xml
index 926d601..eeff66a 100644
--- a/packages/SystemUI/res-keyguard/values-zh-rHK/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-zh-rHK/strings.xml
@@ -150,7 +150,7 @@
<item quantity="other">SIM 卡已停用。請輸入 PUK 碼以繼續進行。您還可以再試 <xliff:g id="_NUMBER_1">%d</xliff:g> 次。如果仍然輸入錯誤,SIM 卡將永久無法使用。詳情請與流動網絡供應商聯絡。</item>
<item quantity="one">SIM 卡已停用。請輸入 PUK 碼以繼續進行。您還可以再試 <xliff:g id="_NUMBER_0">%d</xliff:g> 次。如果仍然輸入錯誤,SIM 卡將永久無法使用。詳情請與流動網絡供應商聯絡。</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"現在是"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"十二"</item>
<item msgid="7389464214252023751">"一"</item>
diff --git a/packages/SystemUI/res-keyguard/values-zh-rTW/strings.xml b/packages/SystemUI/res-keyguard/values-zh-rTW/strings.xml
index 728f1a9..961ef39 100644
--- a/packages/SystemUI/res-keyguard/values-zh-rTW/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-zh-rTW/strings.xml
@@ -150,7 +150,7 @@
<item quantity="other">SIM 卡現在已遭停用。請輸入 PUK 碼以繼續進行。你還可以再試 <xliff:g id="_NUMBER_1">%d</xliff:g> 次,如果仍然失敗,SIM 卡將永久無法使用。詳情請與電信業者聯絡。</item>
<item quantity="one">SIM 卡現在已遭停用。請輸入 PUK 碼以繼續進行。你還可以再試 <xliff:g id="_NUMBER_0">%d</xliff:g> 次,如果仍然失敗,SIM 卡將永久無法使用。詳情請與電信業者聯絡。</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"時間是"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"十二"</item>
<item msgid="7389464214252023751">"一"</item>
diff --git a/packages/SystemUI/res-keyguard/values-zu/strings.xml b/packages/SystemUI/res-keyguard/values-zu/strings.xml
index 7e0a03c..2e948b4 100644
--- a/packages/SystemUI/res-keyguard/values-zu/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-zu/strings.xml
@@ -150,7 +150,7 @@
<item quantity="one">I-SIM manje ikhutshaziwe. Faka ikhodi ye-PUK ukuze uqhubeke. Unemizamo engu-<xliff:g id="_NUMBER_1">%d</xliff:g> esele ngaphambi kokuthi i-SIM ingasebenziseki unaphakade. Xhumana nenkampani yenethiwekhi ngemininingwane.</item>
<item quantity="other">I-SIM manje ikhutshaziwe. Faka ikhodi ye-PUK ukuze uqhubeke. Unemizamo engu-<xliff:g id="_NUMBER_1">%d</xliff:g> esele ngaphambi kokuthi i-SIM ingasebenziseki unaphakade. Xhumana nenkampani yenethiwekhi ngemininingwane.</item>
</plurals>
- <string name="type_clock_header" msgid="4786545441902447636">"Kuyi-"</string>
+ <!-- no translation found for type_clock_header (6782840450655632763) -->
<string-array name="type_clock_hours">
<item msgid="3543074812389379830">"Ishumi nambili"</item>
<item msgid="7389464214252023751">"Kunye"</item>
diff --git a/packages/SystemUI/res/values-af/strings.xml b/packages/SystemUI/res/values-af/strings.xml
index 053371a..9b765f8 100644
--- a/packages/SystemUI/res/values-af/strings.xml
+++ b/packages/SystemUI/res/values-af/strings.xml
@@ -879,8 +879,7 @@
<item quantity="one"><xliff:g id="NUM_APPS_0">%1$d</xliff:g> program gebruik jou <xliff:g id="TYPE_1">%2$s</xliff:g>.</item>
</plurals>
<string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"Het dit"</string>
- <!-- no translation found for ongoing_privacy_dialog_open_settings (6773015940472748876) -->
- <skip />
+ <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Privaatheidsinstellings"</string>
<string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"Program wat jou <xliff:g id="TYPES_LIST">%s</xliff:g> gebruik"</string>
<string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Programme wat jou <xliff:g id="TYPES_LIST">%s</xliff:g> gebruik"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
@@ -895,8 +894,12 @@
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Sensors is af"</string>
<string name="device_services" msgid="1191212554435440592">"Toesteldienste"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Titelloos"</string>
- <!-- no translation found for bubbles_deep_link_button_description (8895837143057564517) -->
+ <string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"Maak <xliff:g id="APP_NAME">%1$s</xliff:g> oop"</string>
+ <string name="bubbles_settings_button_description" msgid="1940331766151865776">"Maak kennisgewinginstellings oop vir <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
<skip />
- <!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
<skip />
</resources>
diff --git a/packages/SystemUI/res/values-am/strings.xml b/packages/SystemUI/res/values-am/strings.xml
index 8acd1b8..d12ba4c 100644
--- a/packages/SystemUI/res/values-am/strings.xml
+++ b/packages/SystemUI/res/values-am/strings.xml
@@ -879,8 +879,7 @@
<item quantity="other"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> መተግበሪያዎች የእርስዎን <xliff:g id="TYPE_5">%2$s</xliff:g> እየተጠቀሙ ነው።</item>
</plurals>
<string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"ገባኝ"</string>
- <!-- no translation found for ongoing_privacy_dialog_open_settings (6773015940472748876) -->
- <skip />
+ <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"የግላዊነት ቅንብሮች"</string>
<string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"የእርስዎን <xliff:g id="TYPES_LIST">%s</xliff:g> የሚጠቀሙ መተግበሪያዎች"</string>
<string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"የእርስዎን <xliff:g id="TYPES_LIST">%s</xliff:g> የሚጠቀሙ መተግበሪያዎች"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">"፣ "</string>
@@ -895,8 +894,12 @@
<string name="sensor_privacy_mode" msgid="8982771253020769598">"ዳሳሾች ጠፍተዋል"</string>
<string name="device_services" msgid="1191212554435440592">"የመሣሪያ አገልግሎቶች"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"ርዕስ የለም"</string>
- <!-- no translation found for bubbles_deep_link_button_description (8895837143057564517) -->
+ <string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"<xliff:g id="APP_NAME">%1$s</xliff:g> ክፈት"</string>
+ <string name="bubbles_settings_button_description" msgid="1940331766151865776">"የማስታወቂያ ቅንብሮች ለ <xliff:g id="APP_NAME">%1$s</xliff:g> ክፈት"</string>
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
<skip />
- <!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
<skip />
</resources>
diff --git a/packages/SystemUI/res/values-ar/strings.xml b/packages/SystemUI/res/values-ar/strings.xml
index 0312adf..7c08783 100644
--- a/packages/SystemUI/res/values-ar/strings.xml
+++ b/packages/SystemUI/res/values-ar/strings.xml
@@ -907,8 +907,7 @@
<item quantity="one">هناك تطبيق واحد (<xliff:g id="NUM_APPS_0">%1$d</xliff:g>) يستخدِم <xliff:g id="TYPE_1">%2$s</xliff:g>.</item>
</plurals>
<string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"حسنًا"</string>
- <!-- no translation found for ongoing_privacy_dialog_open_settings (6773015940472748876) -->
- <skip />
+ <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"إعدادات الخصوصية"</string>
<string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"التطبيق الذي يستخدِم <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"التطبيقات التي تستخدِم <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">"، "</string>
@@ -927,8 +926,12 @@
<string name="sensor_privacy_mode" msgid="8982771253020769598">"إيقاف أجهزة الاستشعار"</string>
<string name="device_services" msgid="1191212554435440592">"خدمات الأجهزة"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"بلا عنوان"</string>
- <!-- no translation found for bubbles_deep_link_button_description (8895837143057564517) -->
+ <string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"فتح <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="bubbles_settings_button_description" msgid="1940331766151865776">"فتح إعدادات الإشعارات في <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
<skip />
- <!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
<skip />
</resources>
diff --git a/packages/SystemUI/res/values-as/strings.xml b/packages/SystemUI/res/values-as/strings.xml
index fbaad96..c782d1b 100644
--- a/packages/SystemUI/res/values-as/strings.xml
+++ b/packages/SystemUI/res/values-as/strings.xml
@@ -899,4 +899,10 @@
<skip />
<!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
<skip />
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
+ <skip />
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-az/strings.xml b/packages/SystemUI/res/values-az/strings.xml
index 70608a1..896fe34 100644
--- a/packages/SystemUI/res/values-az/strings.xml
+++ b/packages/SystemUI/res/values-az/strings.xml
@@ -879,8 +879,7 @@
<item quantity="one"><xliff:g id="NUM_APPS_0">%1$d</xliff:g> tətbiq <xliff:g id="TYPE_1">%2$s</xliff:g> tətbiqindən istifadə edir.</item>
</plurals>
<string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"Anladım"</string>
- <!-- no translation found for ongoing_privacy_dialog_open_settings (6773015940472748876) -->
- <skip />
+ <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Məxfilik ayarları"</string>
<string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"<xliff:g id="TYPES_LIST">%s</xliff:g> tətbiqindən istifadə edən tətbiq"</string>
<string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"<xliff:g id="TYPES_LIST">%s</xliff:g> tətbiqindən istifadə edən tətbiqlər"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
@@ -895,8 +894,12 @@
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Sensorlar deaktivdir"</string>
<string name="device_services" msgid="1191212554435440592">"Cihaz Xidmətləri"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Başlıq yoxdur"</string>
- <!-- no translation found for bubbles_deep_link_button_description (8895837143057564517) -->
+ <string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"<xliff:g id="APP_NAME">%1$s</xliff:g> tətbiqini açın"</string>
+ <string name="bubbles_settings_button_description" msgid="1940331766151865776">"<xliff:g id="APP_NAME">%1$s</xliff:g> üçün bildiriş ayarlarını açın"</string>
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
<skip />
- <!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
<skip />
</resources>
diff --git a/packages/SystemUI/res/values-b+sr+Latn/strings.xml b/packages/SystemUI/res/values-b+sr+Latn/strings.xml
index 8a754f3..14ab0a4 100644
--- a/packages/SystemUI/res/values-b+sr+Latn/strings.xml
+++ b/packages/SystemUI/res/values-b+sr+Latn/strings.xml
@@ -886,8 +886,7 @@
<item quantity="other"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> aplikacija koristi dozvolu <xliff:g id="TYPE_5">%2$s</xliff:g>.</item>
</plurals>
<string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"Važi"</string>
- <!-- no translation found for ongoing_privacy_dialog_open_settings (6773015940472748876) -->
- <skip />
+ <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Podešav. privatnosti"</string>
<string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"Aplikacija koja koristi dozvole <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Aplikacije koje koriste dozvole <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
@@ -903,8 +902,12 @@
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Senzori su isključeni"</string>
<string name="device_services" msgid="1191212554435440592">"Usluge za uređaje"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Bez naslova"</string>
- <!-- no translation found for bubbles_deep_link_button_description (8895837143057564517) -->
+ <string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"Otvorite <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="bubbles_settings_button_description" msgid="1940331766151865776">"Otvorite podešavanja obaveštenja za <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
<skip />
- <!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
<skip />
</resources>
diff --git a/packages/SystemUI/res/values-be/strings.xml b/packages/SystemUI/res/values-be/strings.xml
index 3390fcb..0e724fa 100644
--- a/packages/SystemUI/res/values-be/strings.xml
+++ b/packages/SystemUI/res/values-be/strings.xml
@@ -917,4 +917,10 @@
<skip />
<!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
<skip />
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
+ <skip />
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-bg/strings.xml b/packages/SystemUI/res/values-bg/strings.xml
index 00454dd..c44b3ad 100644
--- a/packages/SystemUI/res/values-bg/strings.xml
+++ b/packages/SystemUI/res/values-bg/strings.xml
@@ -879,8 +879,7 @@
<item quantity="one"><xliff:g id="NUM_APPS_0">%1$d</xliff:g> приложение използва <xliff:g id="TYPE_1">%2$s</xliff:g>.</item>
</plurals>
<string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"Разбрах"</string>
- <!-- no translation found for ongoing_privacy_dialog_open_settings (6773015940472748876) -->
- <skip />
+ <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Поверит.: Настройки"</string>
<string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"Приложение, което използва <xliff:g id="TYPES_LIST">%s</xliff:g> ви"</string>
<string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Приложения, които използват <xliff:g id="TYPES_LIST">%s</xliff:g> ви"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
@@ -895,8 +894,12 @@
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Сензорите са изключени"</string>
<string name="device_services" msgid="1191212554435440592">"Услуги за устройството"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Няма заглавие"</string>
- <!-- no translation found for bubbles_deep_link_button_description (8895837143057564517) -->
+ <string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"Отваряне на „<xliff:g id="APP_NAME">%1$s</xliff:g>“"</string>
+ <string name="bubbles_settings_button_description" msgid="1940331766151865776">"Отваряне на настройките за известията за „<xliff:g id="APP_NAME">%1$s</xliff:g>“"</string>
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
<skip />
- <!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
<skip />
</resources>
diff --git a/packages/SystemUI/res/values-bn/strings.xml b/packages/SystemUI/res/values-bn/strings.xml
index b864206..ec7ff6d 100644
--- a/packages/SystemUI/res/values-bn/strings.xml
+++ b/packages/SystemUI/res/values-bn/strings.xml
@@ -899,4 +899,10 @@
<skip />
<!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
<skip />
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
+ <skip />
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-bs/strings.xml b/packages/SystemUI/res/values-bs/strings.xml
index d152831..77069b2 100644
--- a/packages/SystemUI/res/values-bs/strings.xml
+++ b/packages/SystemUI/res/values-bs/strings.xml
@@ -888,8 +888,7 @@
<item quantity="other"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> aplikacija koristi <xliff:g id="TYPE_5">%2$s</xliff:g>.</item>
</plurals>
<string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"Razumijem"</string>
- <!-- no translation found for ongoing_privacy_dialog_open_settings (6773015940472748876) -->
- <skip />
+ <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Postavke privatnosti"</string>
<string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"Aplikacija koristi odobrenja <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Aplikacije koriste odobrenja <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
@@ -905,8 +904,12 @@
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Senzori su isključeni"</string>
<string name="device_services" msgid="1191212554435440592">"Usluge uređaja"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Bez naslova"</string>
- <!-- no translation found for bubbles_deep_link_button_description (8895837143057564517) -->
+ <string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"Otvorite aplikaciju <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="bubbles_settings_button_description" msgid="1940331766151865776">"Otvorite postavke obavijesti za aplikaciju <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
<skip />
- <!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
<skip />
</resources>
diff --git a/packages/SystemUI/res/values-ca/strings.xml b/packages/SystemUI/res/values-ca/strings.xml
index f41ea3c..1c52610 100644
--- a/packages/SystemUI/res/values-ca/strings.xml
+++ b/packages/SystemUI/res/values-ca/strings.xml
@@ -899,4 +899,10 @@
<skip />
<!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
<skip />
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
+ <skip />
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-cs/strings.xml b/packages/SystemUI/res/values-cs/strings.xml
index 4bdc271..735b476 100644
--- a/packages/SystemUI/res/values-cs/strings.xml
+++ b/packages/SystemUI/res/values-cs/strings.xml
@@ -915,4 +915,10 @@
<skip />
<!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
<skip />
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
+ <skip />
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-da/strings.xml b/packages/SystemUI/res/values-da/strings.xml
index 0c3c253..615338d 100644
--- a/packages/SystemUI/res/values-da/strings.xml
+++ b/packages/SystemUI/res/values-da/strings.xml
@@ -879,8 +879,7 @@
<item quantity="other"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> apps anvender din/dit <xliff:g id="TYPE_5">%2$s</xliff:g>.</item>
</plurals>
<string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"OK"</string>
- <!-- no translation found for ongoing_privacy_dialog_open_settings (6773015940472748876) -->
- <skip />
+ <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Privatlivsindstill."</string>
<string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"App, der anvender din/dit <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Apps, der anvender din/dit <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
@@ -895,8 +894,12 @@
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Deaktiver sensorer"</string>
<string name="device_services" msgid="1191212554435440592">"Enhedstjenester"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Ingen titel"</string>
- <!-- no translation found for bubbles_deep_link_button_description (8895837143057564517) -->
+ <string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"Åbn <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="bubbles_settings_button_description" msgid="1940331766151865776">"Åbn notifikationsindstillingerne for <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
<skip />
- <!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
<skip />
</resources>
diff --git a/packages/SystemUI/res/values-de/strings.xml b/packages/SystemUI/res/values-de/strings.xml
index c21288d..4e2e1e1 100644
--- a/packages/SystemUI/res/values-de/strings.xml
+++ b/packages/SystemUI/res/values-de/strings.xml
@@ -441,7 +441,7 @@
<string name="battery_saver_notification_text" msgid="820318788126672692">"Reduzierung der Leistung und Hintergrunddaten"</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"Energiesparmodus deaktivieren"</string>
<string name="media_projection_dialog_text" msgid="3071431025448218928">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> nimmt alle auf deinem Bildschirm angezeigten Aktivitäten auf."</string>
- <string name="media_projection_remember_text" msgid="3103510882172746752">"Nicht erneut anzeigen"</string>
+ <string name="media_projection_remember_text" msgid="3103510882172746752">"Nicht mehr anzeigen"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"Alle löschen"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"Verwalten"</string>
<string name="dnd_suppressing_shade_text" msgid="1904574852846769301">"Benachrichtigungen durch \"Bitte nicht stören\" pausiert"</string>
@@ -883,8 +883,7 @@
<item quantity="one"><xliff:g id="NUM_APPS_0">%1$d</xliff:g> App verwendet gerade: <xliff:g id="TYPE_1">%2$s</xliff:g>.</item>
</plurals>
<string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"OK"</string>
- <!-- no translation found for ongoing_privacy_dialog_open_settings (6773015940472748876) -->
- <skip />
+ <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Datenschutzeinst."</string>
<string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"App, die <xliff:g id="TYPES_LIST">%s</xliff:g> verwendet"</string>
<string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Apps, die <xliff:g id="TYPES_LIST">%s</xliff:g> verwenden"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
@@ -899,8 +898,12 @@
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Sensoren aus"</string>
<string name="device_services" msgid="1191212554435440592">"Gerätedienste"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Kein Titel"</string>
- <!-- no translation found for bubbles_deep_link_button_description (8895837143057564517) -->
+ <string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"<xliff:g id="APP_NAME">%1$s</xliff:g> öffnen"</string>
+ <string name="bubbles_settings_button_description" msgid="1940331766151865776">"Benachrichtigungseinstellungen für <xliff:g id="APP_NAME">%1$s</xliff:g> öffnen"</string>
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
<skip />
- <!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
<skip />
</resources>
diff --git a/packages/SystemUI/res/values-el/strings.xml b/packages/SystemUI/res/values-el/strings.xml
index 23818956..1a0df6b 100644
--- a/packages/SystemUI/res/values-el/strings.xml
+++ b/packages/SystemUI/res/values-el/strings.xml
@@ -879,8 +879,7 @@
<item quantity="one"><xliff:g id="NUM_APPS_0">%1$d</xliff:g> εφαρμογή χρησιμοποιεί το <xliff:g id="TYPE_1">%2$s</xliff:g>.</item>
</plurals>
<string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"Κατάλαβα"</string>
- <!-- no translation found for ongoing_privacy_dialog_open_settings (6773015940472748876) -->
- <skip />
+ <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Ρυθμίσεις απορρήτου"</string>
<string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"Εφαρμογή που χρησιμοποιεί τις λειτουργίες <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Εφαρμογές που χρησιμοποιούν τις λειτουργίες <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
@@ -895,8 +894,12 @@
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Αισθητήρες ανενεργοί"</string>
<string name="device_services" msgid="1191212554435440592">"Υπηρεσίες συσκευής"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Χωρίς τίτλο"</string>
- <!-- no translation found for bubbles_deep_link_button_description (8895837143057564517) -->
+ <string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"Άνοιγμα <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="bubbles_settings_button_description" msgid="1940331766151865776">"Άνοιγμα ρυθμίσεων ειδοποιήσεων για την εφαρμογή <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
<skip />
- <!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
<skip />
</resources>
diff --git a/packages/SystemUI/res/values-en-rAU/strings.xml b/packages/SystemUI/res/values-en-rAU/strings.xml
index 63f6773..95c1349 100644
--- a/packages/SystemUI/res/values-en-rAU/strings.xml
+++ b/packages/SystemUI/res/values-en-rAU/strings.xml
@@ -879,8 +879,7 @@
<item quantity="one"><xliff:g id="NUM_APPS_0">%1$d</xliff:g> application is using your <xliff:g id="TYPE_1">%2$s</xliff:g>.</item>
</plurals>
<string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"Got it"</string>
- <!-- no translation found for ongoing_privacy_dialog_open_settings (6773015940472748876) -->
- <skip />
+ <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Privacy settings"</string>
<string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"App using your <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Apps using your <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
@@ -895,8 +894,12 @@
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Sensors off"</string>
<string name="device_services" msgid="1191212554435440592">"Device Services"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"No title"</string>
- <!-- no translation found for bubbles_deep_link_button_description (8895837143057564517) -->
+ <string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"Open <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="bubbles_settings_button_description" msgid="1940331766151865776">"Open notification settings for <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
<skip />
- <!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
<skip />
</resources>
diff --git a/packages/SystemUI/res/values-en-rCA/strings.xml b/packages/SystemUI/res/values-en-rCA/strings.xml
index d6539e7..6d55c5a 100644
--- a/packages/SystemUI/res/values-en-rCA/strings.xml
+++ b/packages/SystemUI/res/values-en-rCA/strings.xml
@@ -879,8 +879,7 @@
<item quantity="one"><xliff:g id="NUM_APPS_0">%1$d</xliff:g> application is using your <xliff:g id="TYPE_1">%2$s</xliff:g>.</item>
</plurals>
<string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"Got it"</string>
- <!-- no translation found for ongoing_privacy_dialog_open_settings (6773015940472748876) -->
- <skip />
+ <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Privacy settings"</string>
<string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"App using your <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Apps using your <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
@@ -895,8 +894,12 @@
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Sensors off"</string>
<string name="device_services" msgid="1191212554435440592">"Device Services"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"No title"</string>
- <!-- no translation found for bubbles_deep_link_button_description (8895837143057564517) -->
+ <string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"Open <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="bubbles_settings_button_description" msgid="1940331766151865776">"Open notification settings for <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
<skip />
- <!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
<skip />
</resources>
diff --git a/packages/SystemUI/res/values-en-rGB/strings.xml b/packages/SystemUI/res/values-en-rGB/strings.xml
index 63f6773..95c1349 100644
--- a/packages/SystemUI/res/values-en-rGB/strings.xml
+++ b/packages/SystemUI/res/values-en-rGB/strings.xml
@@ -879,8 +879,7 @@
<item quantity="one"><xliff:g id="NUM_APPS_0">%1$d</xliff:g> application is using your <xliff:g id="TYPE_1">%2$s</xliff:g>.</item>
</plurals>
<string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"Got it"</string>
- <!-- no translation found for ongoing_privacy_dialog_open_settings (6773015940472748876) -->
- <skip />
+ <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Privacy settings"</string>
<string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"App using your <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Apps using your <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
@@ -895,8 +894,12 @@
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Sensors off"</string>
<string name="device_services" msgid="1191212554435440592">"Device Services"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"No title"</string>
- <!-- no translation found for bubbles_deep_link_button_description (8895837143057564517) -->
+ <string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"Open <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="bubbles_settings_button_description" msgid="1940331766151865776">"Open notification settings for <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
<skip />
- <!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
<skip />
</resources>
diff --git a/packages/SystemUI/res/values-en-rIN/strings.xml b/packages/SystemUI/res/values-en-rIN/strings.xml
index 63f6773..95c1349 100644
--- a/packages/SystemUI/res/values-en-rIN/strings.xml
+++ b/packages/SystemUI/res/values-en-rIN/strings.xml
@@ -879,8 +879,7 @@
<item quantity="one"><xliff:g id="NUM_APPS_0">%1$d</xliff:g> application is using your <xliff:g id="TYPE_1">%2$s</xliff:g>.</item>
</plurals>
<string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"Got it"</string>
- <!-- no translation found for ongoing_privacy_dialog_open_settings (6773015940472748876) -->
- <skip />
+ <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Privacy settings"</string>
<string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"App using your <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Apps using your <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
@@ -895,8 +894,12 @@
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Sensors off"</string>
<string name="device_services" msgid="1191212554435440592">"Device Services"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"No title"</string>
- <!-- no translation found for bubbles_deep_link_button_description (8895837143057564517) -->
+ <string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"Open <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="bubbles_settings_button_description" msgid="1940331766151865776">"Open notification settings for <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
<skip />
- <!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
<skip />
</resources>
diff --git a/packages/SystemUI/res/values-en-rXC/strings.xml b/packages/SystemUI/res/values-en-rXC/strings.xml
index 36ef647..266faa8 100644
--- a/packages/SystemUI/res/values-en-rXC/strings.xml
+++ b/packages/SystemUI/res/values-en-rXC/strings.xml
@@ -879,8 +879,7 @@
<item quantity="one"><xliff:g id="NUM_APPS_0">%1$d</xliff:g> application is using your <xliff:g id="TYPE_1">%2$s</xliff:g>.</item>
</plurals>
<string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"Got it"</string>
- <!-- no translation found for ongoing_privacy_dialog_open_settings (6773015940472748876) -->
- <skip />
+ <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Privacy settings"</string>
<string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"App using your <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Apps using your <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
@@ -895,8 +894,12 @@
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Sensors off"</string>
<string name="device_services" msgid="1191212554435440592">"Device Services"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"No title"</string>
- <!-- no translation found for bubbles_deep_link_button_description (8895837143057564517) -->
+ <string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"Open <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="bubbles_settings_button_description" msgid="1940331766151865776">"Open notification settings for <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
<skip />
- <!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
<skip />
</resources>
diff --git a/packages/SystemUI/res/values-es-rUS/strings.xml b/packages/SystemUI/res/values-es-rUS/strings.xml
index 81cd300..b1f7068 100644
--- a/packages/SystemUI/res/values-es-rUS/strings.xml
+++ b/packages/SystemUI/res/values-es-rUS/strings.xml
@@ -879,8 +879,7 @@
<item quantity="one"><xliff:g id="NUM_APPS_0">%1$d</xliff:g> aplicación está usando tu <xliff:g id="TYPE_1">%2$s</xliff:g>.</item>
</plurals>
<string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"Entendido"</string>
- <!-- no translation found for ongoing_privacy_dialog_open_settings (6773015940472748876) -->
- <skip />
+ <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Config. privacidad"</string>
<string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"Una app está usando tu <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Apps que están usando tu <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
@@ -895,8 +894,12 @@
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Se desactivaron los sensores"</string>
<string name="device_services" msgid="1191212554435440592">"Servicios del dispositivo"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Sin título"</string>
- <!-- no translation found for bubbles_deep_link_button_description (8895837143057564517) -->
+ <string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"Abrir <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="bubbles_settings_button_description" msgid="1940331766151865776">"Abrir la configuración de notificaciones de <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
<skip />
- <!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
<skip />
</resources>
diff --git a/packages/SystemUI/res/values-es/strings.xml b/packages/SystemUI/res/values-es/strings.xml
index 16c182b..b1947fd 100644
--- a/packages/SystemUI/res/values-es/strings.xml
+++ b/packages/SystemUI/res/values-es/strings.xml
@@ -899,4 +899,10 @@
<skip />
<!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
<skip />
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
+ <skip />
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-et/strings.xml b/packages/SystemUI/res/values-et/strings.xml
index b02e457..8085224 100644
--- a/packages/SystemUI/res/values-et/strings.xml
+++ b/packages/SystemUI/res/values-et/strings.xml
@@ -879,8 +879,7 @@
<item quantity="one"><xliff:g id="NUM_APPS_0">%1$d</xliff:g> rakendus kasutab üksust <xliff:g id="TYPE_1">%2$s</xliff:g>.</item>
</plurals>
<string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"Selge"</string>
- <!-- no translation found for ongoing_privacy_dialog_open_settings (6773015940472748876) -->
- <skip />
+ <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Privaatsusseaded"</string>
<string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"Rakendus, mis kasutab üksusi <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Rakendused, mis kasutavad üksusi <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
@@ -895,8 +894,12 @@
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Andurid on välja lülitatud"</string>
<string name="device_services" msgid="1191212554435440592">"Seadme teenused"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Pealkiri puudub"</string>
- <!-- no translation found for bubbles_deep_link_button_description (8895837143057564517) -->
+ <string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"Ava <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="bubbles_settings_button_description" msgid="1940331766151865776">"Ava rakenduse <xliff:g id="APP_NAME">%1$s</xliff:g> märguandeseaded"</string>
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
<skip />
- <!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
<skip />
</resources>
diff --git a/packages/SystemUI/res/values-eu/strings.xml b/packages/SystemUI/res/values-eu/strings.xml
index b2d29c1..7f9bffa 100644
--- a/packages/SystemUI/res/values-eu/strings.xml
+++ b/packages/SystemUI/res/values-eu/strings.xml
@@ -879,8 +879,7 @@
<item quantity="one"><xliff:g id="NUM_APPS_0">%1$d</xliff:g> aplikazio ari da <xliff:g id="TYPE_1">%2$s</xliff:g> erabiltzen.</item>
</plurals>
<string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"Ados"</string>
- <!-- no translation found for ongoing_privacy_dialog_open_settings (6773015940472748876) -->
- <skip />
+ <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Pribatutasun-ezarpenak"</string>
<string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"<xliff:g id="TYPES_LIST">%s</xliff:g> erabiltzen ari den aplikazioa"</string>
<string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"<xliff:g id="TYPES_LIST">%s</xliff:g> erabiltzen ari diren aplikazioak"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
@@ -895,8 +894,12 @@
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Sentsoreak desaktibatuta daude"</string>
<string name="device_services" msgid="1191212554435440592">"Gailuetarako zerbitzuak"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Ez du izenik"</string>
- <!-- no translation found for bubbles_deep_link_button_description (8895837143057564517) -->
+ <string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"Ireki <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="bubbles_settings_button_description" msgid="1940331766151865776">"Ireki <xliff:g id="APP_NAME">%1$s</xliff:g> aplikazioaren jakinarazpen-ezarpenak"</string>
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
<skip />
- <!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
<skip />
</resources>
diff --git a/packages/SystemUI/res/values-fa/strings.xml b/packages/SystemUI/res/values-fa/strings.xml
index 4fb889b..018d6d1 100644
--- a/packages/SystemUI/res/values-fa/strings.xml
+++ b/packages/SystemUI/res/values-fa/strings.xml
@@ -879,8 +879,7 @@
<item quantity="other"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> برنامه درحال استفاده از <xliff:g id="TYPE_5">%2$s</xliff:g> شما است.</item>
</plurals>
<string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"متوجه شدم"</string>
- <!-- no translation found for ongoing_privacy_dialog_open_settings (6773015940472748876) -->
- <skip />
+ <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"تنظیمات حریم خصوصی"</string>
<string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"برنامهای که از <xliff:g id="TYPES_LIST">%s</xliff:g> شما استفاده میکند"</string>
<string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"برنامههایی که از <xliff:g id="TYPES_LIST">%s</xliff:g> شما استفاده میکنند"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">"، "</string>
@@ -895,8 +894,12 @@
<string name="sensor_privacy_mode" msgid="8982771253020769598">"حسگرها خاموش است"</string>
<string name="device_services" msgid="1191212554435440592">"سرویسهای دستگاه"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"بدون عنوان"</string>
- <!-- no translation found for bubbles_deep_link_button_description (8895837143057564517) -->
+ <string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"باز کردن <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="bubbles_settings_button_description" msgid="1940331766151865776">"تنظیمات اعلان <xliff:g id="APP_NAME">%1$s</xliff:g> را باز کنید"</string>
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
<skip />
- <!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
<skip />
</resources>
diff --git a/packages/SystemUI/res/values-fi/strings.xml b/packages/SystemUI/res/values-fi/strings.xml
index 1ab48a0..0258ccb 100644
--- a/packages/SystemUI/res/values-fi/strings.xml
+++ b/packages/SystemUI/res/values-fi/strings.xml
@@ -879,8 +879,7 @@
<item quantity="one"><xliff:g id="TYPE_1">%2$s</xliff:g> on <xliff:g id="NUM_APPS_0">%1$d</xliff:g> sovelluksen käytössä.</item>
</plurals>
<string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"Selvä"</string>
- <!-- no translation found for ongoing_privacy_dialog_open_settings (6773015940472748876) -->
- <skip />
+ <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Tietosuoja-asetukset"</string>
<string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"Sovellus, jolla on <xliff:g id="TYPES_LIST">%s</xliff:g> ‑käyttöoikeus"</string>
<string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Sovellukset, joilla on <xliff:g id="TYPES_LIST">%s</xliff:g> ‑käyttöoikeus"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
@@ -895,8 +894,12 @@
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Anturit pois päältä"</string>
<string name="device_services" msgid="1191212554435440592">"Laitepalvelut"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Ei nimeä"</string>
- <!-- no translation found for bubbles_deep_link_button_description (8895837143057564517) -->
+ <string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"Avaa <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="bubbles_settings_button_description" msgid="1940331766151865776">"Avaa ilmoitusasetukset (<xliff:g id="APP_NAME">%1$s</xliff:g>)"</string>
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
<skip />
- <!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
<skip />
</resources>
diff --git a/packages/SystemUI/res/values-fr-rCA/strings.xml b/packages/SystemUI/res/values-fr-rCA/strings.xml
index 554a222..a3a3135 100644
--- a/packages/SystemUI/res/values-fr-rCA/strings.xml
+++ b/packages/SystemUI/res/values-fr-rCA/strings.xml
@@ -899,4 +899,10 @@
<skip />
<!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
<skip />
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
+ <skip />
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-fr/strings.xml b/packages/SystemUI/res/values-fr/strings.xml
index 2e47000..d1ce32e 100644
--- a/packages/SystemUI/res/values-fr/strings.xml
+++ b/packages/SystemUI/res/values-fr/strings.xml
@@ -899,4 +899,10 @@
<skip />
<!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
<skip />
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
+ <skip />
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-gl/strings.xml b/packages/SystemUI/res/values-gl/strings.xml
index 90b9f87..d76c34a 100644
--- a/packages/SystemUI/res/values-gl/strings.xml
+++ b/packages/SystemUI/res/values-gl/strings.xml
@@ -879,8 +879,7 @@
<item quantity="one"><xliff:g id="NUM_APPS_0">%1$d</xliff:g> aplicación utiliza o teu dispositivo (<xliff:g id="TYPE_1">%2$s</xliff:g>).</item>
</plurals>
<string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"De acordo"</string>
- <!-- no translation found for ongoing_privacy_dialog_open_settings (6773015940472748876) -->
- <skip />
+ <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Config. privacidade"</string>
<string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"Aplicación que utiliza o seguinte: <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Aplicacións que utilizan o seguinte: <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
@@ -895,8 +894,12 @@
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Desactivar sensores"</string>
<string name="device_services" msgid="1191212554435440592">"Servizos do dispositivo"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Sen título"</string>
- <!-- no translation found for bubbles_deep_link_button_description (8895837143057564517) -->
+ <string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"Abre a aplicación <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="bubbles_settings_button_description" msgid="1940331766151865776">"Abre a configuración de notificacións para <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
<skip />
- <!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
<skip />
</resources>
diff --git a/packages/SystemUI/res/values-gu/strings.xml b/packages/SystemUI/res/values-gu/strings.xml
index 5717616..c84051c 100644
--- a/packages/SystemUI/res/values-gu/strings.xml
+++ b/packages/SystemUI/res/values-gu/strings.xml
@@ -899,4 +899,10 @@
<skip />
<!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
<skip />
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
+ <skip />
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-hi/strings.xml b/packages/SystemUI/res/values-hi/strings.xml
index 20b9198..157f55c 100644
--- a/packages/SystemUI/res/values-hi/strings.xml
+++ b/packages/SystemUI/res/values-hi/strings.xml
@@ -899,4 +899,10 @@
<skip />
<!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
<skip />
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
+ <skip />
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-hr/strings.xml b/packages/SystemUI/res/values-hr/strings.xml
index 79f410a..77c3ce3 100644
--- a/packages/SystemUI/res/values-hr/strings.xml
+++ b/packages/SystemUI/res/values-hr/strings.xml
@@ -886,8 +886,7 @@
<item quantity="other"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> aplikacija upotrebljava <xliff:g id="TYPE_5">%2$s</xliff:g>.</item>
</plurals>
<string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"Shvaćam"</string>
- <!-- no translation found for ongoing_privacy_dialog_open_settings (6773015940472748876) -->
- <skip />
+ <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Postavke privatnosti"</string>
<string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"Aplikacije koje upotrebljavaju <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Aplikacije koje upotrebljavaju <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
@@ -903,8 +902,12 @@
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Senzori su isključeni"</string>
<string name="device_services" msgid="1191212554435440592">"Usluge uređaja"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Bez naslova"</string>
- <!-- no translation found for bubbles_deep_link_button_description (8895837143057564517) -->
+ <string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"Otvorite aplikaciju <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="bubbles_settings_button_description" msgid="1940331766151865776">"Otvorite postavke obavijesti za aplikaciju <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
<skip />
- <!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
<skip />
</resources>
diff --git a/packages/SystemUI/res/values-hu/strings.xml b/packages/SystemUI/res/values-hu/strings.xml
index d0cdfb4..308295a 100644
--- a/packages/SystemUI/res/values-hu/strings.xml
+++ b/packages/SystemUI/res/values-hu/strings.xml
@@ -879,8 +879,7 @@
<item quantity="one"><xliff:g id="NUM_APPS_0">%1$d</xliff:g> alkalmazás használja a következőt: <xliff:g id="TYPE_1">%2$s</xliff:g>.</item>
</plurals>
<string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"Értem"</string>
- <!-- no translation found for ongoing_privacy_dialog_open_settings (6773015940472748876) -->
- <skip />
+ <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Adatvédelmi beállítások"</string>
<string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"A következőket használó alkalmazás: <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"A következőt használó alkalmazások: <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
@@ -895,8 +894,12 @@
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Érzékelők kikapcsolva"</string>
<string name="device_services" msgid="1191212554435440592">"Eszközszolgáltatások"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Nincs cím"</string>
- <!-- no translation found for bubbles_deep_link_button_description (8895837143057564517) -->
+ <string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"<xliff:g id="APP_NAME">%1$s</xliff:g> megnyitása"</string>
+ <string name="bubbles_settings_button_description" msgid="1940331766151865776">"<xliff:g id="APP_NAME">%1$s</xliff:g> – az alkalmazás értesítési beállításainak megnyitása"</string>
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
<skip />
- <!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
<skip />
</resources>
diff --git a/packages/SystemUI/res/values-hy/strings.xml b/packages/SystemUI/res/values-hy/strings.xml
index 41bd378..a3e05ad 100644
--- a/packages/SystemUI/res/values-hy/strings.xml
+++ b/packages/SystemUI/res/values-hy/strings.xml
@@ -899,4 +899,10 @@
<skip />
<!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
<skip />
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
+ <skip />
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-in/strings.xml b/packages/SystemUI/res/values-in/strings.xml
index 98e1c4b..2bad55e0 100644
--- a/packages/SystemUI/res/values-in/strings.xml
+++ b/packages/SystemUI/res/values-in/strings.xml
@@ -879,8 +879,7 @@
<item quantity="one"><xliff:g id="NUM_APPS_0">%1$d</xliff:g> aplikasi menggunakan <xliff:g id="TYPE_1">%2$s</xliff:g> Anda.</item>
</plurals>
<string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"Oke"</string>
- <!-- no translation found for ongoing_privacy_dialog_open_settings (6773015940472748876) -->
- <skip />
+ <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Setelan privasi"</string>
<string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"Aplikasi yang menggunakan <xliff:g id="TYPES_LIST">%s</xliff:g> Anda"</string>
<string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Aplikasi yang menggunakan <xliff:g id="TYPES_LIST">%s</xliff:g> Anda"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
@@ -895,8 +894,12 @@
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Sensor nonaktif"</string>
<string name="device_services" msgid="1191212554435440592">"Layanan Perangkat"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Tanpa judul"</string>
- <!-- no translation found for bubbles_deep_link_button_description (8895837143057564517) -->
+ <string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"Buka <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="bubbles_settings_button_description" msgid="1940331766151865776">"Buka setelan notifikasi untuk <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
<skip />
- <!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
<skip />
</resources>
diff --git a/packages/SystemUI/res/values-is/strings.xml b/packages/SystemUI/res/values-is/strings.xml
index d1ea979..3502613 100644
--- a/packages/SystemUI/res/values-is/strings.xml
+++ b/packages/SystemUI/res/values-is/strings.xml
@@ -879,8 +879,7 @@
<item quantity="other"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> forrit eru að nota <xliff:g id="TYPE_5">%2$s</xliff:g>.</item>
</plurals>
<string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"Ég skil"</string>
- <!-- no translation found for ongoing_privacy_dialog_open_settings (6773015940472748876) -->
- <skip />
+ <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Persónuvernd"</string>
<string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"Forrit sem nota <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Forrit sem nota <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
@@ -895,8 +894,12 @@
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Slökkt á skynjurum"</string>
<string name="device_services" msgid="1191212554435440592">"Tækjaþjónusta"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Enginn titill"</string>
- <!-- no translation found for bubbles_deep_link_button_description (8895837143057564517) -->
+ <string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"Opna <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="bubbles_settings_button_description" msgid="1940331766151865776">"Opna tilkynningastillingar fyrir <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
<skip />
- <!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
<skip />
</resources>
diff --git a/packages/SystemUI/res/values-it/strings.xml b/packages/SystemUI/res/values-it/strings.xml
index af22c6d..42ff72a 100644
--- a/packages/SystemUI/res/values-it/strings.xml
+++ b/packages/SystemUI/res/values-it/strings.xml
@@ -879,8 +879,7 @@
<item quantity="one"><xliff:g id="NUM_APPS_0">%1$d</xliff:g> applicazione sta utilizzando <xliff:g id="TYPE_1">%2$s</xliff:g>.</item>
</plurals>
<string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"OK"</string>
- <!-- no translation found for ongoing_privacy_dialog_open_settings (6773015940472748876) -->
- <skip />
+ <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Impostazioni privacy"</string>
<string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"App che usa <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"App che utilizzano <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
@@ -895,8 +894,12 @@
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Sensori disattivati"</string>
<string name="device_services" msgid="1191212554435440592">"Servizi del dispositivo"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Senza titolo"</string>
- <!-- no translation found for bubbles_deep_link_button_description (8895837143057564517) -->
+ <string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"Apri <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="bubbles_settings_button_description" msgid="1940331766151865776">"Apri le impostazioni di notifica dell\'app <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
<skip />
- <!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
<skip />
</resources>
diff --git a/packages/SystemUI/res/values-iw/strings.xml b/packages/SystemUI/res/values-iw/strings.xml
index a7d5138..036b0df 100644
--- a/packages/SystemUI/res/values-iw/strings.xml
+++ b/packages/SystemUI/res/values-iw/strings.xml
@@ -519,9 +519,9 @@
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"כווץ"</string>
<string name="accessibility_output_chooser" msgid="8185317493017988680">"החלפת מכשיר פלט"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"המסך מוצמד"</string>
- <string name="screen_pinning_description" msgid="8909878447196419623">"נשאר בתצוגה עד לביטול ההצמדה. גע בלחצנים \'הקודם\' ו\'סקירה\' והחזק כדי לבטל את ההצמדה."</string>
+ <string name="screen_pinning_description" msgid="8909878447196419623">"נשאר בתצוגה עד לביטול ההצמדה. יש ללחוץ לחיצה ארוכה על הלחצנים \'הקודם\' ו\'סקירה\' כדי לבטל את ההצמדה."</string>
<string name="screen_pinning_description_recents_invisible" msgid="8281145542163727971">"נשאר בתצוגה עד לביטול ההצמדה. יש ללחוץ לחיצה ארוכה על הלחצנים \'הקודם\' ו\'דף הבית\' כדי לבטל את ההצמדה."</string>
- <string name="screen_pinning_description_accessible" msgid="426190689254018656">"נשאר בתצוגה עד לביטול ההצמדה. גע בלחצן \'סקירה\' והחזק כדי לבטל את ההצמדה."</string>
+ <string name="screen_pinning_description_accessible" msgid="426190689254018656">"נשאר בתצוגה עד לביטול ההצמדה. יש ללחוץ לחיצה ארוכה על הלחצן \'סקירה\' כדי לבטל את ההצמדה."</string>
<string name="screen_pinning_description_recents_invisible_accessible" msgid="6134833683151189507">"נשאר בתצוגה עד לביטול ההצמדה. יש ללחוץ לחיצה ארוכה על הלחצן \'דף הבית\' כדי לבטל את ההצמדה."</string>
<string name="screen_pinning_toast" msgid="2266705122951934150">"כדי לבטל את ההצמדה של מסך זה, יש ללחוץ לחיצה ארוכה על הלחצנים \'הקודם\' ו\'סקירה\'"</string>
<string name="screen_pinning_toast_recents_invisible" msgid="8252402309499161281">"כדי לבטל את ההצמדה של מסך זה, יש ללחוץ לחיצה ארוכה על הלחצנים \'הקודם\' ו\'דף הבית\'"</string>
@@ -915,4 +915,10 @@
<skip />
<!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
<skip />
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
+ <skip />
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-ja/strings.xml b/packages/SystemUI/res/values-ja/strings.xml
index 9095fd1..7aa7fbf 100644
--- a/packages/SystemUI/res/values-ja/strings.xml
+++ b/packages/SystemUI/res/values-ja/strings.xml
@@ -879,8 +879,7 @@
<item quantity="one"><xliff:g id="NUM_APPS_0">%1$d</xliff:g> 個のアプリが <xliff:g id="TYPE_1">%2$s</xliff:g> を使用しています。</item>
</plurals>
<string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"OK"</string>
- <!-- no translation found for ongoing_privacy_dialog_open_settings (6773015940472748876) -->
- <skip />
+ <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"プライバシー設定"</string>
<string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"<xliff:g id="TYPES_LIST">%s</xliff:g>を使用しているアプリ"</string>
<string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"<xliff:g id="TYPES_LIST">%s</xliff:g>を使用しているアプリ"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">"、 "</string>
@@ -895,8 +894,12 @@
<string name="sensor_privacy_mode" msgid="8982771253020769598">"センサー OFF"</string>
<string name="device_services" msgid="1191212554435440592">"デバイス サービス"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"タイトルなし"</string>
- <!-- no translation found for bubbles_deep_link_button_description (8895837143057564517) -->
+ <string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"<xliff:g id="APP_NAME">%1$s</xliff:g> を開く"</string>
+ <string name="bubbles_settings_button_description" msgid="1940331766151865776">"<xliff:g id="APP_NAME">%1$s</xliff:g> の通知設定を開く"</string>
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
<skip />
- <!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
<skip />
</resources>
diff --git a/packages/SystemUI/res/values-ka/strings.xml b/packages/SystemUI/res/values-ka/strings.xml
index 9236830..4fec284 100644
--- a/packages/SystemUI/res/values-ka/strings.xml
+++ b/packages/SystemUI/res/values-ka/strings.xml
@@ -879,8 +879,7 @@
<item quantity="one">თქვენი <xliff:g id="TYPE_1">%2$s</xliff:g> გამოიყენება <xliff:g id="NUM_APPS_0">%1$d</xliff:g> აპლიკაციის მიერ.</item>
</plurals>
<string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"გასაგებია"</string>
- <!-- no translation found for ongoing_privacy_dialog_open_settings (6773015940472748876) -->
- <skip />
+ <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"კონფიდ. პარამეტრები"</string>
<string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"აპი, რომლის მიერაც გამოიყენება თქვენი <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"აპები, რომელთა მიერაც გამოიყენება თქვენი <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
@@ -895,8 +894,12 @@
<string name="sensor_privacy_mode" msgid="8982771253020769598">"სენსორების გამორთვა"</string>
<string name="device_services" msgid="1191212554435440592">"მოწყობილობის სერვისები"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"უსათაურო"</string>
- <!-- no translation found for bubbles_deep_link_button_description (8895837143057564517) -->
+ <string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"<xliff:g id="APP_NAME">%1$s</xliff:g>-ის გახსნა"</string>
+ <string name="bubbles_settings_button_description" msgid="1940331766151865776">"<xliff:g id="APP_NAME">%1$s</xliff:g>-ის შეტყობინების პარამეტრების გახსნა"</string>
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
<skip />
- <!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
<skip />
</resources>
diff --git a/packages/SystemUI/res/values-kk/strings.xml b/packages/SystemUI/res/values-kk/strings.xml
index 3b46364..c5022b5 100644
--- a/packages/SystemUI/res/values-kk/strings.xml
+++ b/packages/SystemUI/res/values-kk/strings.xml
@@ -899,4 +899,10 @@
<skip />
<!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
<skip />
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
+ <skip />
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-km/strings.xml b/packages/SystemUI/res/values-km/strings.xml
index 6811072..c03dddd 100644
--- a/packages/SystemUI/res/values-km/strings.xml
+++ b/packages/SystemUI/res/values-km/strings.xml
@@ -899,4 +899,10 @@
<skip />
<!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
<skip />
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
+ <skip />
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-kn/strings.xml b/packages/SystemUI/res/values-kn/strings.xml
index 273470a..aa0e63f 100644
--- a/packages/SystemUI/res/values-kn/strings.xml
+++ b/packages/SystemUI/res/values-kn/strings.xml
@@ -899,4 +899,10 @@
<skip />
<!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
<skip />
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
+ <skip />
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-ko/strings.xml b/packages/SystemUI/res/values-ko/strings.xml
index ca45e4d..eb94903 100644
--- a/packages/SystemUI/res/values-ko/strings.xml
+++ b/packages/SystemUI/res/values-ko/strings.xml
@@ -899,4 +899,10 @@
<skip />
<!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
<skip />
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
+ <skip />
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-ky/strings.xml b/packages/SystemUI/res/values-ky/strings.xml
index 82d709b..14d93e4 100644
--- a/packages/SystemUI/res/values-ky/strings.xml
+++ b/packages/SystemUI/res/values-ky/strings.xml
@@ -899,4 +899,10 @@
<skip />
<!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
<skip />
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
+ <skip />
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-lo/strings.xml b/packages/SystemUI/res/values-lo/strings.xml
index ed05407..467a2dc 100644
--- a/packages/SystemUI/res/values-lo/strings.xml
+++ b/packages/SystemUI/res/values-lo/strings.xml
@@ -899,4 +899,10 @@
<skip />
<!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
<skip />
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
+ <skip />
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-lt/strings.xml b/packages/SystemUI/res/values-lt/strings.xml
index a136772..c79743f 100644
--- a/packages/SystemUI/res/values-lt/strings.xml
+++ b/packages/SystemUI/res/values-lt/strings.xml
@@ -893,8 +893,7 @@
<item quantity="other"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> programų naudoja jūsų <xliff:g id="TYPE_5">%2$s</xliff:g>.</item>
</plurals>
<string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"Supratau"</string>
- <!-- no translation found for ongoing_privacy_dialog_open_settings (6773015940472748876) -->
- <skip />
+ <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Privatumo nustatymai"</string>
<string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"Programa, kuri naudoja: <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Programos, kurios naudoja: <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
@@ -911,8 +910,12 @@
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Jutikliai išjungti"</string>
<string name="device_services" msgid="1191212554435440592">"Įrenginio paslaugos"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Nėra pavadinimo"</string>
- <!-- no translation found for bubbles_deep_link_button_description (8895837143057564517) -->
+ <string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"Atidaryti „<xliff:g id="APP_NAME">%1$s</xliff:g>“"</string>
+ <string name="bubbles_settings_button_description" msgid="1940331766151865776">"Atidaryti „<xliff:g id="APP_NAME">%1$s</xliff:g>“ pranešimų nustatymus"</string>
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
<skip />
- <!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
<skip />
</resources>
diff --git a/packages/SystemUI/res/values-lv/strings.xml b/packages/SystemUI/res/values-lv/strings.xml
index fec4fe8..d6dc8f3 100644
--- a/packages/SystemUI/res/values-lv/strings.xml
+++ b/packages/SystemUI/res/values-lv/strings.xml
@@ -886,8 +886,7 @@
<item quantity="other"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> lietojumprogrammās tiek izmantots: <xliff:g id="TYPE_5">%2$s</xliff:g>.</item>
</plurals>
<string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"Labi"</string>
- <!-- no translation found for ongoing_privacy_dialog_open_settings (6773015940472748876) -->
- <skip />
+ <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Konfidencialitāte"</string>
<string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"Lietotne, kurā tiek izmantots: <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Lietotnes, kurās tiek izmantots: <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
@@ -903,8 +902,12 @@
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Sensori izslēgti"</string>
<string name="device_services" msgid="1191212554435440592">"Ierīces pakalpojumi"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Nav nosaukuma"</string>
- <!-- no translation found for bubbles_deep_link_button_description (8895837143057564517) -->
+ <string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"Atvērt lietotni <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="bubbles_settings_button_description" msgid="1940331766151865776">"Atvērt paziņojumu iestatījumus lietotnei <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
<skip />
- <!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
<skip />
</resources>
diff --git a/packages/SystemUI/res/values-mk/strings.xml b/packages/SystemUI/res/values-mk/strings.xml
index 6b3e8cc..03e31f74 100644
--- a/packages/SystemUI/res/values-mk/strings.xml
+++ b/packages/SystemUI/res/values-mk/strings.xml
@@ -899,4 +899,10 @@
<skip />
<!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
<skip />
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
+ <skip />
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-ml/strings.xml b/packages/SystemUI/res/values-ml/strings.xml
index 37d4b8c..f25ae1d 100644
--- a/packages/SystemUI/res/values-ml/strings.xml
+++ b/packages/SystemUI/res/values-ml/strings.xml
@@ -899,4 +899,10 @@
<skip />
<!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
<skip />
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
+ <skip />
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-mn/strings.xml b/packages/SystemUI/res/values-mn/strings.xml
index 42cb765..0e5dbb7 100644
--- a/packages/SystemUI/res/values-mn/strings.xml
+++ b/packages/SystemUI/res/values-mn/strings.xml
@@ -879,8 +879,7 @@
<item quantity="one">Таны <xliff:g id="TYPE_1">%2$s</xliff:g>-г <xliff:g id="NUM_APPS_0">%1$d</xliff:g> апп ашиглаж байна.</item>
</plurals>
<string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"Ойлголоо"</string>
- <!-- no translation found for ongoing_privacy_dialog_open_settings (6773015940472748876) -->
- <skip />
+ <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Нууцлалын тохиргоо"</string>
<string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"Апп таны <xliff:g id="TYPES_LIST">%s</xliff:g>-г ашиглаж байна"</string>
<string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Аппууд таны <xliff:g id="TYPES_LIST">%s</xliff:g>-г ашиглаж байна"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
@@ -895,8 +894,12 @@
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Мэдрэгчийг унтраах"</string>
<string name="device_services" msgid="1191212554435440592">"Төхөөрөмжийн үйлчилгээ"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Гарчиггүй"</string>
- <!-- no translation found for bubbles_deep_link_button_description (8895837143057564517) -->
+ <string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"<xliff:g id="APP_NAME">%1$s</xliff:g>-г нээх"</string>
+ <string name="bubbles_settings_button_description" msgid="1940331766151865776">"<xliff:g id="APP_NAME">%1$s</xliff:g>-н мэдэгдлийн тохиргоог нээх"</string>
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
<skip />
- <!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
<skip />
</resources>
diff --git a/packages/SystemUI/res/values-mr/strings.xml b/packages/SystemUI/res/values-mr/strings.xml
index 44d8c4e..1b81062 100644
--- a/packages/SystemUI/res/values-mr/strings.xml
+++ b/packages/SystemUI/res/values-mr/strings.xml
@@ -899,4 +899,10 @@
<skip />
<!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
<skip />
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
+ <skip />
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-ms/strings.xml b/packages/SystemUI/res/values-ms/strings.xml
index eee6b25..df10b2f 100644
--- a/packages/SystemUI/res/values-ms/strings.xml
+++ b/packages/SystemUI/res/values-ms/strings.xml
@@ -899,4 +899,10 @@
<skip />
<!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
<skip />
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
+ <skip />
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-my/strings.xml b/packages/SystemUI/res/values-my/strings.xml
index b341bea..f827805 100644
--- a/packages/SystemUI/res/values-my/strings.xml
+++ b/packages/SystemUI/res/values-my/strings.xml
@@ -684,7 +684,7 @@
<string name="keyboard_key_numpad_template" msgid="8729216555174634026">"ဂဏန်းကွက်<xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="keyboard_shortcut_group_system" msgid="6472647649616541064">"စနစ်"</string>
<string name="keyboard_shortcut_group_system_home" msgid="3054369431319891965">"ပင်မ"</string>
- <string name="keyboard_shortcut_group_system_recents" msgid="3154851905021926744">"မကြာသေးခင်က"</string>
+ <string name="keyboard_shortcut_group_system_recents" msgid="3154851905021926744">"လတ်တလော"</string>
<string name="keyboard_shortcut_group_system_back" msgid="2207004531216446378">"နောက်သို့"</string>
<string name="keyboard_shortcut_group_system_notifications" msgid="8366964080041773224">"အကြောင်းကြားချက်များ"</string>
<string name="keyboard_shortcut_group_system_shortcuts_helper" msgid="4892255911160332762">"ကီးဘုတ် ဖြတ်လမ်းများ"</string>
@@ -879,8 +879,7 @@
<item quantity="one">အပလီကေးရှင်း <xliff:g id="NUM_APPS_0">%1$d</xliff:g> ခုက သင်၏ <xliff:g id="TYPE_1">%2$s</xliff:g> ကို အသုံးပြုနေသည်။</item>
</plurals>
<string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"ရပါပြီ"</string>
- <!-- no translation found for ongoing_privacy_dialog_open_settings (6773015940472748876) -->
- <skip />
+ <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"ကန့်သတ်ဆက်တင်များ"</string>
<string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"သင့် <xliff:g id="TYPES_LIST">%s</xliff:g> ကို အသုံးပြုနေသော အက်ပ်"</string>
<string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"သင့် <xliff:g id="TYPES_LIST">%s</xliff:g> ကို အသုံးပြုနေသော အက်ပ်များ"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">"၊ "</string>
@@ -895,8 +894,12 @@
<string name="sensor_privacy_mode" msgid="8982771253020769598">"အာရုံခံကိရိယာများ ပိတ်ထားသည်"</string>
<string name="device_services" msgid="1191212554435440592">"စက်ပစ္စည်းဝန်ဆောင်မှုများ"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"ခေါင်းစဉ် မရှိပါ"</string>
- <!-- no translation found for bubbles_deep_link_button_description (8895837143057564517) -->
+ <string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"<xliff:g id="APP_NAME">%1$s</xliff:g> ကိုဖွင့်ရန်"</string>
+ <string name="bubbles_settings_button_description" msgid="1940331766151865776">"<xliff:g id="APP_NAME">%1$s</xliff:g> အတွက် အကြောင်းကြားချက်ဆက်တင်များကို ဖွင့်ရန်"</string>
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
<skip />
- <!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
<skip />
</resources>
diff --git a/packages/SystemUI/res/values-nb/strings.xml b/packages/SystemUI/res/values-nb/strings.xml
index a27addb..1370468 100644
--- a/packages/SystemUI/res/values-nb/strings.xml
+++ b/packages/SystemUI/res/values-nb/strings.xml
@@ -899,4 +899,10 @@
<skip />
<!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
<skip />
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
+ <skip />
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-ne/strings.xml b/packages/SystemUI/res/values-ne/strings.xml
index 1bb3664..08f3cef 100644
--- a/packages/SystemUI/res/values-ne/strings.xml
+++ b/packages/SystemUI/res/values-ne/strings.xml
@@ -899,4 +899,10 @@
<skip />
<!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
<skip />
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
+ <skip />
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-nl/strings.xml b/packages/SystemUI/res/values-nl/strings.xml
index 8075ef4..7cb4b5a 100644
--- a/packages/SystemUI/res/values-nl/strings.xml
+++ b/packages/SystemUI/res/values-nl/strings.xml
@@ -792,7 +792,7 @@
<string name="accessibility_quick_settings_open_settings" msgid="7806613775728380737">"<xliff:g id="ID_1">%s</xliff:g>-instellingen openen."</string>
<string name="accessibility_quick_settings_edit" msgid="7839992848995240393">"Volgorde van instellingen bewerken."</string>
<string name="accessibility_quick_settings_page" msgid="5032979051755200721">"Pagina <xliff:g id="ID_1">%1$d</xliff:g> van <xliff:g id="ID_2">%2$d</xliff:g>"</string>
- <string name="tuner_lock_screen" msgid="5755818559638850294">"Scherm vergrendelen"</string>
+ <string name="tuner_lock_screen" msgid="5755818559638850294">"Vergrendelingsscherm"</string>
<string name="pip_phone_expand" msgid="5889780005575693909">"Uitvouwen"</string>
<string name="pip_phone_minimize" msgid="1079119422589131792">"Minimaliseren"</string>
<string name="pip_phone_close" msgid="8416647892889710330">"Sluiten"</string>
@@ -879,8 +879,7 @@
<item quantity="one"><xliff:g id="NUM_APPS_0">%1$d</xliff:g> app gebruikt je <xliff:g id="TYPE_1">%2$s</xliff:g>.</item>
</plurals>
<string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"OK"</string>
- <!-- no translation found for ongoing_privacy_dialog_open_settings (6773015940472748876) -->
- <skip />
+ <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Privacyinstellingen"</string>
<string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"App die je <xliff:g id="TYPES_LIST">%s</xliff:g> gebruikt"</string>
<string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Apps die je <xliff:g id="TYPES_LIST">%s</xliff:g> gebruiken"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
@@ -895,8 +894,12 @@
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Sensoren uit"</string>
<string name="device_services" msgid="1191212554435440592">"Apparaatservices"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Geen titel"</string>
- <!-- no translation found for bubbles_deep_link_button_description (8895837143057564517) -->
+ <string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"<xliff:g id="APP_NAME">%1$s</xliff:g> openen"</string>
+ <string name="bubbles_settings_button_description" msgid="1940331766151865776">"Instellingen voor meldingen voor <xliff:g id="APP_NAME">%1$s</xliff:g> openen"</string>
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
<skip />
- <!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
<skip />
</resources>
diff --git a/packages/SystemUI/res/values-or/strings.xml b/packages/SystemUI/res/values-or/strings.xml
index 337b15d..b9b4ea8 100644
--- a/packages/SystemUI/res/values-or/strings.xml
+++ b/packages/SystemUI/res/values-or/strings.xml
@@ -899,4 +899,10 @@
<skip />
<!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
<skip />
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
+ <skip />
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-pa/strings.xml b/packages/SystemUI/res/values-pa/strings.xml
index 4d8e3f1..5432975 100644
--- a/packages/SystemUI/res/values-pa/strings.xml
+++ b/packages/SystemUI/res/values-pa/strings.xml
@@ -899,4 +899,10 @@
<skip />
<!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
<skip />
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
+ <skip />
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-pl/strings.xml b/packages/SystemUI/res/values-pl/strings.xml
index d955236..b692045 100644
--- a/packages/SystemUI/res/values-pl/strings.xml
+++ b/packages/SystemUI/res/values-pl/strings.xml
@@ -893,8 +893,7 @@
<item quantity="one"><xliff:g id="NUM_APPS_0">%1$d</xliff:g> aplikacja używa: <xliff:g id="TYPE_1">%2$s</xliff:g>.</item>
</plurals>
<string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"OK"</string>
- <!-- no translation found for ongoing_privacy_dialog_open_settings (6773015940472748876) -->
- <skip />
+ <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Ustawienia prywatności"</string>
<string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"Aplikacje, które używają: <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Aplikacje, które używają: <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
@@ -911,8 +910,12 @@
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Wyłącz czujniki"</string>
<string name="device_services" msgid="1191212554435440592">"Usługi urządzenia"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Bez tytułu"</string>
- <!-- no translation found for bubbles_deep_link_button_description (8895837143057564517) -->
+ <string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"Otwórz: <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="bubbles_settings_button_description" msgid="1940331766151865776">"Otwórz ustawienia powiadomień z aplikacji <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
<skip />
- <!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
<skip />
</resources>
diff --git a/packages/SystemUI/res/values-pt-rBR/strings.xml b/packages/SystemUI/res/values-pt-rBR/strings.xml
index d2219d2..fcd7f85 100644
--- a/packages/SystemUI/res/values-pt-rBR/strings.xml
+++ b/packages/SystemUI/res/values-pt-rBR/strings.xml
@@ -879,8 +879,7 @@
<item quantity="other"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> aplicativos estão usando <xliff:g id="TYPE_5">%2$s</xliff:g>.</item>
</plurals>
<string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"Ok"</string>
- <!-- no translation found for ongoing_privacy_dialog_open_settings (6773015940472748876) -->
- <skip />
+ <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Config. de privacidade"</string>
<string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"App usando <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Apps usando <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
@@ -895,8 +894,12 @@
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Sensores desativados"</string>
<string name="device_services" msgid="1191212554435440592">"Serviços do dispositivo"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Sem título"</string>
- <!-- no translation found for bubbles_deep_link_button_description (8895837143057564517) -->
+ <string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"Abrir <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="bubbles_settings_button_description" msgid="1940331766151865776">"Abra as configurações de notificação do <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
<skip />
- <!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
<skip />
</resources>
diff --git a/packages/SystemUI/res/values-pt-rPT/strings.xml b/packages/SystemUI/res/values-pt-rPT/strings.xml
index 0866ffc..6579645 100644
--- a/packages/SystemUI/res/values-pt-rPT/strings.xml
+++ b/packages/SystemUI/res/values-pt-rPT/strings.xml
@@ -879,8 +879,7 @@
<item quantity="one"><xliff:g id="NUM_APPS_0">%1$d</xliff:g> aplicação está a utilizar o(a) <xliff:g id="TYPE_1">%2$s</xliff:g>.</item>
</plurals>
<string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"Compreendi"</string>
- <!-- no translation found for ongoing_privacy_dialog_open_settings (6773015940472748876) -->
- <skip />
+ <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Def. de privacidade"</string>
<string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"Aplicações que utilizam o(a) <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Aplicações que utilizam o(a) <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
@@ -895,8 +894,12 @@
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Sensores desativados"</string>
<string name="device_services" msgid="1191212554435440592">"Serviços do dispositivo"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Sem título"</string>
- <!-- no translation found for bubbles_deep_link_button_description (8895837143057564517) -->
+ <string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"Abrir a aplicação <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="bubbles_settings_button_description" msgid="1940331766151865776">"Abrir as definições de notificação da aplicação <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
<skip />
- <!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
<skip />
</resources>
diff --git a/packages/SystemUI/res/values-pt/strings.xml b/packages/SystemUI/res/values-pt/strings.xml
index d2219d2..fcd7f85 100644
--- a/packages/SystemUI/res/values-pt/strings.xml
+++ b/packages/SystemUI/res/values-pt/strings.xml
@@ -879,8 +879,7 @@
<item quantity="other"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> aplicativos estão usando <xliff:g id="TYPE_5">%2$s</xliff:g>.</item>
</plurals>
<string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"Ok"</string>
- <!-- no translation found for ongoing_privacy_dialog_open_settings (6773015940472748876) -->
- <skip />
+ <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Config. de privacidade"</string>
<string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"App usando <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Apps usando <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
@@ -895,8 +894,12 @@
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Sensores desativados"</string>
<string name="device_services" msgid="1191212554435440592">"Serviços do dispositivo"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Sem título"</string>
- <!-- no translation found for bubbles_deep_link_button_description (8895837143057564517) -->
+ <string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"Abrir <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="bubbles_settings_button_description" msgid="1940331766151865776">"Abra as configurações de notificação do <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
<skip />
- <!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
<skip />
</resources>
diff --git a/packages/SystemUI/res/values-ro/strings.xml b/packages/SystemUI/res/values-ro/strings.xml
index e040484..144bfc3 100644
--- a/packages/SystemUI/res/values-ro/strings.xml
+++ b/packages/SystemUI/res/values-ro/strings.xml
@@ -886,8 +886,7 @@
<item quantity="one"><xliff:g id="NUM_APPS_0">%1$d</xliff:g> aplicație folosește <xliff:g id="TYPE_1">%2$s</xliff:g>.</item>
</plurals>
<string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"OK"</string>
- <!-- no translation found for ongoing_privacy_dialog_open_settings (6773015940472748876) -->
- <skip />
+ <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Setări de confidențialitate"</string>
<string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"Aplicație care folosește <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Aplicații care folosesc <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
@@ -903,8 +902,12 @@
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Senzori dezactivați"</string>
<string name="device_services" msgid="1191212554435440592">"Servicii pentru dispozitiv"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Fără titlu"</string>
- <!-- no translation found for bubbles_deep_link_button_description (8895837143057564517) -->
+ <string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"Accesați <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="bubbles_settings_button_description" msgid="1940331766151865776">"Deschideți setările pentru notificări pentru aplicația <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
<skip />
- <!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
<skip />
</resources>
diff --git a/packages/SystemUI/res/values-ru/strings.xml b/packages/SystemUI/res/values-ru/strings.xml
index 338ce14..6d65592 100644
--- a/packages/SystemUI/res/values-ru/strings.xml
+++ b/packages/SystemUI/res/values-ru/strings.xml
@@ -893,8 +893,7 @@
<item quantity="other">Функцию \"<xliff:g id="TYPE_5">%2$s</xliff:g>\" используют <xliff:g id="NUM_APPS_4">%1$d</xliff:g> приложения.</item>
</plurals>
<string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"ОК"</string>
- <!-- no translation found for ongoing_privacy_dialog_open_settings (6773015940472748876) -->
- <skip />
+ <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Конфиденциальность"</string>
<string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"Приложение, в котором используются операции <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Приложения, в которых используются операции <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
@@ -911,8 +910,12 @@
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Датчики отключены"</string>
<string name="device_services" msgid="1191212554435440592">"Сервисы устройства"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Без названия"</string>
- <!-- no translation found for bubbles_deep_link_button_description (8895837143057564517) -->
+ <string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"Открыть приложение \"<xliff:g id="APP_NAME">%1$s</xliff:g>\"."</string>
+ <string name="bubbles_settings_button_description" msgid="1940331766151865776">"Настройки уведомлений приложения \"<xliff:g id="APP_NAME">%1$s</xliff:g>\"."</string>
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
<skip />
- <!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
<skip />
</resources>
diff --git a/packages/SystemUI/res/values-si/strings.xml b/packages/SystemUI/res/values-si/strings.xml
index 3a0b3a4..2529f19 100644
--- a/packages/SystemUI/res/values-si/strings.xml
+++ b/packages/SystemUI/res/values-si/strings.xml
@@ -879,8 +879,7 @@
<item quantity="other">යෙදුම් <xliff:g id="NUM_APPS_4">%1$d</xliff:g>ක් ඔබේ <xliff:g id="TYPE_5">%2$s</xliff:g> භාවිත කරමින් සිටිති.</item>
</plurals>
<string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"තේරුණා"</string>
- <!-- no translation found for ongoing_privacy_dialog_open_settings (6773015940472748876) -->
- <skip />
+ <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"පෞද්ගලිකත්ව සැකසීම්"</string>
<string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"ඔබගේ <xliff:g id="TYPES_LIST">%s</xliff:g> භාවිත කරන යෙදුම්"</string>
<string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"ඔබගේ <xliff:g id="TYPES_LIST">%s</xliff:g> භාවිත කරන යෙදුම්"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
@@ -895,8 +894,12 @@
<string name="sensor_privacy_mode" msgid="8982771253020769598">"සංවේදක ක්රියාවිරහිතයි"</string>
<string name="device_services" msgid="1191212554435440592">"උපාංග සේවා"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"මාතෘකාවක් නැත"</string>
- <!-- no translation found for bubbles_deep_link_button_description (8895837143057564517) -->
+ <string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"<xliff:g id="APP_NAME">%1$s</xliff:g> විවෘත කරන්න"</string>
+ <string name="bubbles_settings_button_description" msgid="1940331766151865776">"<xliff:g id="APP_NAME">%1$s</xliff:g> සඳහා දැනුම්දීම් සැකසීම් විවෘත කරන්න"</string>
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
<skip />
- <!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
<skip />
</resources>
diff --git a/packages/SystemUI/res/values-sk/strings.xml b/packages/SystemUI/res/values-sk/strings.xml
index 883243e..923384f 100644
--- a/packages/SystemUI/res/values-sk/strings.xml
+++ b/packages/SystemUI/res/values-sk/strings.xml
@@ -893,8 +893,7 @@
<item quantity="one"><xliff:g id="TYPE_1">%2$s</xliff:g> používa <xliff:g id="NUM_APPS_0">%1$d</xliff:g> aplikácia.</item>
</plurals>
<string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"Dobre"</string>
- <!-- no translation found for ongoing_privacy_dialog_open_settings (6773015940472748876) -->
- <skip />
+ <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Nastavenia ochrany súkromia"</string>
<string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"Aplikácia používajúca <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Aplikácie používajúce <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
@@ -911,8 +910,12 @@
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Senzory sú vypnuté"</string>
<string name="device_services" msgid="1191212554435440592">"Služby zariadenia"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Bez názvu"</string>
- <!-- no translation found for bubbles_deep_link_button_description (8895837143057564517) -->
+ <string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"Otvoriť <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="bubbles_settings_button_description" msgid="1940331766151865776">"Otvoriť nastavenia upozornení pre <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
<skip />
- <!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
<skip />
</resources>
diff --git a/packages/SystemUI/res/values-sl/strings.xml b/packages/SystemUI/res/values-sl/strings.xml
index db40b44..d497f26 100644
--- a/packages/SystemUI/res/values-sl/strings.xml
+++ b/packages/SystemUI/res/values-sl/strings.xml
@@ -915,4 +915,10 @@
<skip />
<!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
<skip />
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
+ <skip />
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-sq/strings.xml b/packages/SystemUI/res/values-sq/strings.xml
index ad6113e..db905ce 100644
--- a/packages/SystemUI/res/values-sq/strings.xml
+++ b/packages/SystemUI/res/values-sq/strings.xml
@@ -899,4 +899,10 @@
<skip />
<!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
<skip />
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
+ <skip />
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-sr/strings.xml b/packages/SystemUI/res/values-sr/strings.xml
index 768ae7f..264698a 100644
--- a/packages/SystemUI/res/values-sr/strings.xml
+++ b/packages/SystemUI/res/values-sr/strings.xml
@@ -886,8 +886,7 @@
<item quantity="other"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> апликација користи дозволу <xliff:g id="TYPE_5">%2$s</xliff:g>.</item>
</plurals>
<string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"Важи"</string>
- <!-- no translation found for ongoing_privacy_dialog_open_settings (6773015940472748876) -->
- <skip />
+ <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Подешав. приватности"</string>
<string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"Апликација која користи дозволе <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Апликације које користе дозволе <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
@@ -903,8 +902,12 @@
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Сензори су искључени"</string>
<string name="device_services" msgid="1191212554435440592">"Услуге за уређаје"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Без наслова"</string>
- <!-- no translation found for bubbles_deep_link_button_description (8895837143057564517) -->
+ <string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"Отворите <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="bubbles_settings_button_description" msgid="1940331766151865776">"Отворите подешавања обавештења за <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
<skip />
- <!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
<skip />
</resources>
diff --git a/packages/SystemUI/res/values-sv/strings.xml b/packages/SystemUI/res/values-sv/strings.xml
index 0f36517..7e8446e 100644
--- a/packages/SystemUI/res/values-sv/strings.xml
+++ b/packages/SystemUI/res/values-sv/strings.xml
@@ -899,4 +899,10 @@
<skip />
<!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
<skip />
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
+ <skip />
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-sw/strings.xml b/packages/SystemUI/res/values-sw/strings.xml
index a11e4d4..eb658ff 100644
--- a/packages/SystemUI/res/values-sw/strings.xml
+++ b/packages/SystemUI/res/values-sw/strings.xml
@@ -899,4 +899,10 @@
<skip />
<!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
<skip />
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
+ <skip />
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-ta/strings.xml b/packages/SystemUI/res/values-ta/strings.xml
index a8587c1..5bcc6fe 100644
--- a/packages/SystemUI/res/values-ta/strings.xml
+++ b/packages/SystemUI/res/values-ta/strings.xml
@@ -899,4 +899,10 @@
<skip />
<!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
<skip />
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
+ <skip />
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-te/strings.xml b/packages/SystemUI/res/values-te/strings.xml
index a512c0c..cb9b70d 100644
--- a/packages/SystemUI/res/values-te/strings.xml
+++ b/packages/SystemUI/res/values-te/strings.xml
@@ -899,4 +899,10 @@
<skip />
<!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
<skip />
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
+ <skip />
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-th/strings.xml b/packages/SystemUI/res/values-th/strings.xml
index b8a840e..6a126ff 100644
--- a/packages/SystemUI/res/values-th/strings.xml
+++ b/packages/SystemUI/res/values-th/strings.xml
@@ -879,8 +879,7 @@
<item quantity="one">มี <xliff:g id="NUM_APPS_0">%1$d</xliff:g> แอปพลิเคชันกำลังใช้<xliff:g id="TYPE_1">%2$s</xliff:g></item>
</plurals>
<string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"รับทราบ"</string>
- <!-- no translation found for ongoing_privacy_dialog_open_settings (6773015940472748876) -->
- <skip />
+ <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"การตั้งค่าความเป็นส่วนตัว"</string>
<string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"มีแอปกำลังใช้<xliff:g id="TYPES_LIST">%s</xliff:g>ของคุณ"</string>
<string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"มีหลายแอปกำลังใช้<xliff:g id="TYPES_LIST">%s</xliff:g>ของคุณ"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
@@ -895,8 +894,12 @@
<string name="sensor_privacy_mode" msgid="8982771253020769598">"เซ็นเซอร์ปิดอยู่"</string>
<string name="device_services" msgid="1191212554435440592">"บริการของอุปกรณ์"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"ไม่มีชื่อ"</string>
- <!-- no translation found for bubbles_deep_link_button_description (8895837143057564517) -->
+ <string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"เปิด <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="bubbles_settings_button_description" msgid="1940331766151865776">"เปิดการตั้งค่าการแจ้งเตือนสำหรับ <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
<skip />
- <!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
<skip />
</resources>
diff --git a/packages/SystemUI/res/values-tl/strings.xml b/packages/SystemUI/res/values-tl/strings.xml
index 72c5eac..1550787 100644
--- a/packages/SystemUI/res/values-tl/strings.xml
+++ b/packages/SystemUI/res/values-tl/strings.xml
@@ -879,8 +879,7 @@
<item quantity="other">Ginagamit ng <xliff:g id="NUM_APPS_4">%1$d</xliff:g> na application ang iyong <xliff:g id="TYPE_5">%2$s</xliff:g>.</item>
</plurals>
<string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"OK"</string>
- <!-- no translation found for ongoing_privacy_dialog_open_settings (6773015940472748876) -->
- <skip />
+ <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Mga setting ng privacy"</string>
<string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"App na gumagamit ng iyong <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Mga app na gumagamit ng iyong <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
@@ -895,8 +894,12 @@
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Naka-off ang mga sensor"</string>
<string name="device_services" msgid="1191212554435440592">"Mga Serbisyo ng Device"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Walang pamagat"</string>
- <!-- no translation found for bubbles_deep_link_button_description (8895837143057564517) -->
+ <string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"Buksan ang <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="bubbles_settings_button_description" msgid="1940331766151865776">"Buksan ang mga setting ng notification para sa <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
<skip />
- <!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
<skip />
</resources>
diff --git a/packages/SystemUI/res/values-tr/strings.xml b/packages/SystemUI/res/values-tr/strings.xml
index 5cd4e4c..9367155 100644
--- a/packages/SystemUI/res/values-tr/strings.xml
+++ b/packages/SystemUI/res/values-tr/strings.xml
@@ -899,4 +899,10 @@
<skip />
<!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
<skip />
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
+ <skip />
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-uk/strings.xml b/packages/SystemUI/res/values-uk/strings.xml
index b231c58..a850f21 100644
--- a/packages/SystemUI/res/values-uk/strings.xml
+++ b/packages/SystemUI/res/values-uk/strings.xml
@@ -915,4 +915,10 @@
<skip />
<!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
<skip />
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
+ <skip />
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-ur/strings.xml b/packages/SystemUI/res/values-ur/strings.xml
index 90447d7..c7bf3b0 100644
--- a/packages/SystemUI/res/values-ur/strings.xml
+++ b/packages/SystemUI/res/values-ur/strings.xml
@@ -879,8 +879,7 @@
<item quantity="one"><xliff:g id="NUM_APPS_0">%1$d</xliff:g> ایپلیکیشن آپ کی <xliff:g id="TYPE_1">%2$s</xliff:g> کا استعمال کر رہی ہے۔</item>
</plurals>
<string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"سمجھ آ گئی"</string>
- <!-- no translation found for ongoing_privacy_dialog_open_settings (6773015940472748876) -->
- <skip />
+ <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"رازداری کی ترتیبات"</string>
<string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"ایپ آپ کی <xliff:g id="TYPES_LIST">%s</xliff:g> کا استعمال کر رہی ہیں"</string>
<string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"ایپس آپ کی <xliff:g id="TYPES_LIST">%s</xliff:g> کا استعمال کر رہی ہیں"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">"، "</string>
@@ -895,8 +894,12 @@
<string name="sensor_privacy_mode" msgid="8982771253020769598">"سینسرز آف ہیں"</string>
<string name="device_services" msgid="1191212554435440592">"آلہ کی سروس"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"کوئی عنوان نہیں ہے"</string>
- <!-- no translation found for bubbles_deep_link_button_description (8895837143057564517) -->
+ <string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"<xliff:g id="APP_NAME">%1$s</xliff:g> کھولیں"</string>
+ <string name="bubbles_settings_button_description" msgid="1940331766151865776">"<xliff:g id="APP_NAME">%1$s</xliff:g> کے لئے اطلاع کی ترتیبات کھولیں"</string>
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
<skip />
- <!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
<skip />
</resources>
diff --git a/packages/SystemUI/res/values-uz/strings.xml b/packages/SystemUI/res/values-uz/strings.xml
index 4a7af62..48532fa 100644
--- a/packages/SystemUI/res/values-uz/strings.xml
+++ b/packages/SystemUI/res/values-uz/strings.xml
@@ -879,8 +879,7 @@
<item quantity="one"><xliff:g id="NUM_APPS_0">%1$d</xliff:g> ta ilova <xliff:g id="TYPE_1">%2$s</xliff:g> ishlatmoqda.</item>
</plurals>
<string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"OK"</string>
- <!-- no translation found for ongoing_privacy_dialog_open_settings (6773015940472748876) -->
- <skip />
+ <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Maxfiylik sozlama-ri"</string>
<string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"<xliff:g id="TYPES_LIST">%s</xliff:g> ishlatayotgan ilova"</string>
<string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Ilovalar <xliff:g id="TYPES_LIST">%s</xliff:g> ishlatmoqda"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
@@ -895,8 +894,12 @@
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Sensorlar nofaol"</string>
<string name="device_services" msgid="1191212554435440592">"Qurilma xizmatlari"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Nomsiz"</string>
- <!-- no translation found for bubbles_deep_link_button_description (8895837143057564517) -->
+ <string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"Ochish: <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="bubbles_settings_button_description" msgid="1940331766151865776">"<xliff:g id="APP_NAME">%1$s</xliff:g> bildirishnoma sozlamalarini ochish"</string>
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
<skip />
- <!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
<skip />
</resources>
diff --git a/packages/SystemUI/res/values-vi/strings.xml b/packages/SystemUI/res/values-vi/strings.xml
index ad8d17c..b796503 100644
--- a/packages/SystemUI/res/values-vi/strings.xml
+++ b/packages/SystemUI/res/values-vi/strings.xml
@@ -879,8 +879,7 @@
<item quantity="one"><xliff:g id="NUM_APPS_0">%1$d</xliff:g> ứng dụng đang dùng <xliff:g id="TYPE_1">%2$s</xliff:g> của bạn.</item>
</plurals>
<string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"OK"</string>
- <!-- no translation found for ongoing_privacy_dialog_open_settings (6773015940472748876) -->
- <skip />
+ <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Cài đặt quyền riêng tư"</string>
<string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"Ứng dụng đang sử dụng <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Các ứng dụng đang sử dụng <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
@@ -895,8 +894,12 @@
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Tắt cảm biến"</string>
<string name="device_services" msgid="1191212554435440592">"Dịch vụ cho thiết bị"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Không có tiêu đề"</string>
- <!-- no translation found for bubbles_deep_link_button_description (8895837143057564517) -->
+ <string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"Mở <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="bubbles_settings_button_description" msgid="1940331766151865776">"Mở mục cài đặt thông báo dành cho <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
<skip />
- <!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
<skip />
</resources>
diff --git a/packages/SystemUI/res/values-zh-rCN/strings.xml b/packages/SystemUI/res/values-zh-rCN/strings.xml
index 0330edf..3a5dd5c 100644
--- a/packages/SystemUI/res/values-zh-rCN/strings.xml
+++ b/packages/SystemUI/res/values-zh-rCN/strings.xml
@@ -899,4 +899,10 @@
<skip />
<!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
<skip />
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
+ <skip />
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-zh-rHK/strings.xml b/packages/SystemUI/res/values-zh-rHK/strings.xml
index 01797fb..8d67f5c 100644
--- a/packages/SystemUI/res/values-zh-rHK/strings.xml
+++ b/packages/SystemUI/res/values-zh-rHK/strings.xml
@@ -879,8 +879,7 @@
<item quantity="one">有 <xliff:g id="NUM_APPS_0">%1$d</xliff:g> 個應用程式正在使用您的<xliff:g id="TYPE_1">%2$s</xliff:g>。</item>
</plurals>
<string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"知道了"</string>
- <!-- no translation found for ongoing_privacy_dialog_open_settings (6773015940472748876) -->
- <skip />
+ <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"隱私權設定"</string>
<string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"使用<xliff:g id="TYPES_LIST">%s</xliff:g>的應用程式"</string>
<string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"使用<xliff:g id="TYPES_LIST">%s</xliff:g>的應用程式"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">"、 "</string>
@@ -895,8 +894,12 @@
<string name="sensor_privacy_mode" msgid="8982771253020769598">"感應器已關閉"</string>
<string name="device_services" msgid="1191212554435440592">"裝置服務"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"無標題"</string>
- <!-- no translation found for bubbles_deep_link_button_description (8895837143057564517) -->
+ <string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"開啟「<xliff:g id="APP_NAME">%1$s</xliff:g>」"</string>
+ <string name="bubbles_settings_button_description" msgid="1940331766151865776">"開啟「<xliff:g id="APP_NAME">%1$s</xliff:g>」的通知設定"</string>
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
<skip />
- <!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
<skip />
</resources>
diff --git a/packages/SystemUI/res/values-zh-rTW/strings.xml b/packages/SystemUI/res/values-zh-rTW/strings.xml
index 62b7cb6..d8d0c07 100644
--- a/packages/SystemUI/res/values-zh-rTW/strings.xml
+++ b/packages/SystemUI/res/values-zh-rTW/strings.xml
@@ -879,8 +879,7 @@
<item quantity="one">有 <xliff:g id="NUM_APPS_0">%1$d</xliff:g> 個應用程式正在使用你的<xliff:g id="TYPE_1">%2$s</xliff:g>。</item>
</plurals>
<string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"我知道了"</string>
- <!-- no translation found for ongoing_privacy_dialog_open_settings (6773015940472748876) -->
- <skip />
+ <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"隱私權設定"</string>
<string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"使用<xliff:g id="TYPES_LIST">%s</xliff:g>的應用程式"</string>
<string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"使用<xliff:g id="TYPES_LIST">%s</xliff:g>的應用程式"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">"、 "</string>
@@ -895,8 +894,12 @@
<string name="sensor_privacy_mode" msgid="8982771253020769598">"已關閉感應器"</string>
<string name="device_services" msgid="1191212554435440592">"裝置服務"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"無標題"</string>
- <!-- no translation found for bubbles_deep_link_button_description (8895837143057564517) -->
+ <string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"開啟「<xliff:g id="APP_NAME">%1$s</xliff:g>」"</string>
+ <string name="bubbles_settings_button_description" msgid="1940331766151865776">"開啟「<xliff:g id="APP_NAME">%1$s</xliff:g>」的通知設定"</string>
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
<skip />
- <!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
<skip />
</resources>
diff --git a/packages/SystemUI/res/values-zu/strings.xml b/packages/SystemUI/res/values-zu/strings.xml
index f8bf2e3..2e0efcc 100644
--- a/packages/SystemUI/res/values-zu/strings.xml
+++ b/packages/SystemUI/res/values-zu/strings.xml
@@ -879,8 +879,7 @@
<item quantity="other"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> izinhlelo zokusebenza zisebenzisa i-<xliff:g id="TYPE_5">%2$s</xliff:g> yakho.</item>
</plurals>
<string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"Ngiyezwa"</string>
- <!-- no translation found for ongoing_privacy_dialog_open_settings (6773015940472748876) -->
- <skip />
+ <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Izilungiselelo zobumfihlo"</string>
<string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"Uhlelo lokusebenza olusebenzisa i-<xliff:g id="TYPES_LIST">%s</xliff:g> yakho"</string>
<string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Izinhlelo zokusebenza ezisebenzisa i-<xliff:g id="TYPES_LIST">%s</xliff:g> yakho"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
@@ -895,8 +894,12 @@
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Izinzwa zivaliwe"</string>
<string name="device_services" msgid="1191212554435440592">"Amasevisi edivayisi"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Asikho isihloko"</string>
- <!-- no translation found for bubbles_deep_link_button_description (8895837143057564517) -->
+ <string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"Vula i-<xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="bubbles_settings_button_description" msgid="1940331766151865776">"VUla izilungiselelo zesaziso ze-<xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <!-- no translation found for bubbles_prompt (2684301469286150276) -->
<skip />
- <!-- no translation found for bubbles_settings_button_description (1940331766151865776) -->
+ <!-- no translation found for no_bubbles (7173621233904687258) -->
+ <skip />
+ <!-- no translation found for yes_bubbles (668809525728633841) -->
<skip />
</resources>
diff --git a/proto/src/wifi.proto b/proto/src/wifi.proto
index afd19db..fb7585b 100644
--- a/proto/src/wifi.proto
+++ b/proto/src/wifi.proto
@@ -1877,6 +1877,13 @@
// Rx link speed at the sample time in Mbps
optional int32 rx_link_speed_mbps = 27;
+
+ // Sequence number generated by framework
+ optional int32 seq_num_inside_framework = 28;
+
+ // Whether current entry is for the same BSSID on the same frequency compared
+ // to last entry
+ optional bool is_same_bssid_and_freq = 29;
}
message WifiUsabilityStats {
diff --git a/services/contentcapture/java/com/android/server/contentcapture/ContentCaptureManagerService.java b/services/contentcapture/java/com/android/server/contentcapture/ContentCaptureManagerService.java
index 9249c9c..4afbc64 100644
--- a/services/contentcapture/java/com/android/server/contentcapture/ContentCaptureManagerService.java
+++ b/services/contentcapture/java/com/android/server/contentcapture/ContentCaptureManagerService.java
@@ -23,6 +23,7 @@
import android.annotation.Nullable;
import android.annotation.UserIdInt;
import android.app.ActivityManagerInternal;
+import android.app.ActivityThread;
import android.content.ComponentName;
import android.content.ContentResolver;
import android.content.Context;
@@ -39,6 +40,7 @@
import android.os.ShellCallback;
import android.os.UserHandle;
import android.os.UserManager;
+import android.provider.DeviceConfig;
import android.provider.Settings;
import android.util.LocalLog;
import android.util.Slog;
@@ -89,19 +91,38 @@
@Nullable
private SparseBooleanArray mDisabledUsers;
+ /**
+ * Global kill-switch based on value defined by
+ * {@link ContentCaptureManager#DEVICE_CONFIG_PROPERTY_SERVICE_EXPLICITLY_ENABLED}.
+ */
+ @GuardedBy("mLock")
+ @Nullable
+ private boolean mDisabledByDeviceConfig;
public ContentCaptureManagerService(@NonNull Context context) {
super(context, new FrameworkResourcesServiceNameResolver(context,
com.android.internal.R.string.config_defaultContentCaptureService),
UserManager.DISALLOW_CONTENT_CAPTURE);
- // Sets which serviecs are disabled
+ DeviceConfig.addOnPropertyChangedListener(DeviceConfig.NAMESPACE_CONTENT_CAPTURE,
+ ActivityThread.currentApplication().getMainExecutor(),
+ (namespace, key, value) -> {
+ if (!ContentCaptureManager.DEVICE_CONFIG_PROPERTY_SERVICE_EXPLICITLY_ENABLED
+ .equals(key)) {
+ Slog.i(mTag, "Ignoring change on " + key);
+ return;
+ }
+ setDisabledByDeviceConfig(value);
+ });
+ setDisabledByDeviceConfig();
+
+ // Sets which services are disabled
final UserManager um = getContext().getSystemService(UserManager.class);
final List<UserInfo> users = um.getUsers();
for (int i = 0; i < users.size(); i++) {
final int userId = users.get(i).id;
- final boolean disabled = isDisabledBySettings(userId);
+ final boolean disabled = mDisabledByDeviceConfig || isDisabledBySettings(userId);
if (disabled) {
- Slog.i(mTag, "user " + userId + " disabled by settings");
+ Slog.i(mTag, "user " + userId + " disabled by settings or device config");
if (mDisabledUsers == null) {
mDisabledUsers = new SparseBooleanArray(1);
}
@@ -160,7 +181,8 @@
@Override // from AbstractMasterSystemService
protected boolean isDisabledLocked(@UserIdInt int userId) {
- return isDisabledBySettingsLocked(userId) || super.isDisabledLocked(userId);
+ return mDisabledByDeviceConfig || isDisabledBySettingsLocked(userId)
+ || super.isDisabledLocked(userId);
}
private boolean isDisabledBySettingsLocked(@UserIdInt int userId) {
@@ -191,6 +213,45 @@
return false;
}
+ private void setDisabledByDeviceConfig() {
+ final String value = DeviceConfig.getProperty(DeviceConfig.NAMESPACE_CONTENT_CAPTURE,
+ ContentCaptureManager.DEVICE_CONFIG_PROPERTY_SERVICE_EXPLICITLY_ENABLED);
+ setDisabledByDeviceConfig(value);
+ }
+
+ private void setDisabledByDeviceConfig(@Nullable String value) {
+ if (verbose) Slog.v(mTag, "setDisabledByDeviceConfig(): value=" + value);
+ final UserManager um = getContext().getSystemService(UserManager.class);
+ final List<UserInfo> users = um.getUsers();
+
+ final boolean newDisabledValue;
+
+ if (value != null && value.equalsIgnoreCase("false")) {
+ newDisabledValue = true;
+ } else {
+ newDisabledValue = false;
+ }
+
+ synchronized (mLock) {
+ if (mDisabledByDeviceConfig == newDisabledValue) {
+ if (verbose) {
+ Slog.v(mTag, "setDisabledByDeviceConfig(): already " + newDisabledValue);
+ }
+ return;
+ }
+ mDisabledByDeviceConfig = newDisabledValue;
+
+ Slog.i(mTag, "setDisabledByDeviceConfig(): set to " + mDisabledByDeviceConfig);
+ for (int i = 0; i < users.size(); i++) {
+ final int userId = users.get(i).id;
+ boolean disabled = mDisabledByDeviceConfig || isDisabledBySettingsLocked(userId);
+ Slog.i(mTag, "setDisabledByDeviceConfig(): updating service for user "
+ + userId + " to " + (disabled ? "'disabled'" : "'enabled'"));
+ updateCachedServiceLocked(userId, disabled);
+ }
+ }
+ }
+
private void setContentCaptureFeatureEnabledForUser(@UserIdInt int userId, boolean enabled) {
synchronized (mLock) {
if (mDisabledUsers == null) {
@@ -338,6 +399,8 @@
super.dumpLocked(prefix, pw);
pw.print(prefix); pw.print("Disabled users: "); pw.println(mDisabledUsers);
+ pw.print(prefix); pw.print("Disabled by DeviceConfig: ");
+ pw.println(mDisabledByDeviceConfig);
}
final class ContentCaptureManagerServiceStub extends IContentCaptureManager.Stub {
@@ -406,7 +469,7 @@
"isContentCaptureFeatureEnabled()", userId, Binder.getCallingUid(), result);
if (!isService) return;
- enabled = !isDisabledBySettingsLocked(userId);
+ enabled = !mDisabledByDeviceConfig && !isDisabledBySettingsLocked(userId);
}
try {
result.send(enabled ? ContentCaptureManager.RESULT_CODE_TRUE
diff --git a/services/core/java/com/android/server/adb/AdbDebuggingManager.java b/services/core/java/com/android/server/adb/AdbDebuggingManager.java
index c7b9a3c..eaf790b 100644
--- a/services/core/java/com/android/server/adb/AdbDebuggingManager.java
+++ b/services/core/java/com/android/server/adb/AdbDebuggingManager.java
@@ -82,6 +82,9 @@
private static final String ADB_DIRECTORY = "misc/adb";
// This file contains keys that will always be allowed to connect to the device via adb.
private static final String ADB_KEYS_FILE = "adb_keys";
+ // This file contains keys that will be allowed to connect without user interaction as long
+ // as a subsequent connection occurs within the allowed duration.
+ private static final String ADB_TEMP_KEYS_FILE = "adb_temp_keys.xml";
private static final int BUFFER_SIZE = 4096;
private final Context mContext;
@@ -263,7 +266,6 @@
AdbDebuggingHandler(Looper looper) {
super(looper);
- mAdbKeyStore = new AdbKeyStore();
}
/**
@@ -289,6 +291,7 @@
mThread = new AdbDebuggingThread();
mThread.start();
+ mAdbKeyStore = new AdbKeyStore();
break;
case MESSAGE_ADB_DISABLED:
@@ -303,6 +306,9 @@
mThread = null;
}
+ cancelJobToUpdateAdbKeyStore();
+ mAdbKeyStore = null;
+ mConnectedKey = null;
break;
case MESSAGE_ADB_ALLOW: {
@@ -532,7 +538,11 @@
return new File(adbDir, fileName);
}
- private File getUserKeyFile() {
+ File getAdbTempKeysFile() {
+ return getAdbFile(ADB_TEMP_KEYS_FILE);
+ }
+
+ File getUserKeyFile() {
return getAdbFile(ADB_KEYS_FILE);
}
@@ -668,9 +678,6 @@
private Map<String, Long> mKeyMap;
private File mKeyFile;
private AtomicFile mAtomicKeyFile;
- // This file contains keys that will be allowed to connect without user interaction as long
- // as a subsequent connection occurs within the allowed duration.
- private static final String ADB_TEMP_KEYS_FILE = "adb_temp_keys.xml";
private static final String XML_TAG_ADB_KEY = "adbKey";
private static final String XML_ATTRIBUTE_KEY = "key";
private static final String XML_ATTRIBUTE_LAST_CONNECTION = "lastConnection";
@@ -704,9 +711,9 @@
*/
private void initKeyFile() {
if (mKeyFile == null) {
- mKeyFile = getAdbFile(ADB_TEMP_KEYS_FILE);
+ mKeyFile = getAdbTempKeysFile();
}
- // getAdbFile can return null if the adb file cannot be obtained
+ // getAdbTempKeysFile can return null if the adb file cannot be obtained
if (mKeyFile != null) {
mAtomicKeyFile = new AtomicFile(mKeyFile);
}
@@ -767,7 +774,8 @@
public void persistKeyStore() {
// if there is nothing in the key map then ensure any keys left in the key store files
// are deleted as well.
- if (mKeyMap.size() == 0) {
+ filterOutOldKeys();
+ if (mKeyMap.isEmpty()) {
deleteKeyStore();
return;
}
@@ -784,22 +792,15 @@
keyStream = mAtomicKeyFile.startWrite();
serializer.setOutput(keyStream, StandardCharsets.UTF_8.name());
serializer.startDocument(null, true);
- long allowedTime = getAllowedConnectionTime();
- long systemTime = System.currentTimeMillis();
- Iterator keyMapIterator = mKeyMap.entrySet().iterator();
- while (keyMapIterator.hasNext()) {
- Map.Entry<String, Long> keyEntry = (Map.Entry) keyMapIterator.next();
- long connectionTime = keyEntry.getValue();
- if (systemTime < (connectionTime + allowedTime)) {
- serializer.startTag(null, XML_TAG_ADB_KEY);
- serializer.attribute(null, XML_ATTRIBUTE_KEY, keyEntry.getKey());
- serializer.attribute(null, XML_ATTRIBUTE_LAST_CONNECTION,
- String.valueOf(keyEntry.getValue()));
- serializer.endTag(null, XML_TAG_ADB_KEY);
- } else {
- keyMapIterator.remove();
- }
+
+ for (Map.Entry<String, Long> keyEntry : mKeyMap.entrySet()) {
+ serializer.startTag(null, XML_TAG_ADB_KEY);
+ serializer.attribute(null, XML_ATTRIBUTE_KEY, keyEntry.getKey());
+ serializer.attribute(null, XML_ATTRIBUTE_LAST_CONNECTION,
+ String.valueOf(keyEntry.getValue()));
+ serializer.endTag(null, XML_TAG_ADB_KEY);
}
+
serializer.endDocument();
mAtomicKeyFile.finishWrite(keyStream);
} catch (IOException e) {
@@ -808,6 +809,19 @@
}
}
+ private void filterOutOldKeys() {
+ long allowedTime = getAllowedConnectionTime();
+ long systemTime = System.currentTimeMillis();
+ Iterator<Map.Entry<String, Long>> keyMapIterator = mKeyMap.entrySet().iterator();
+ while (keyMapIterator.hasNext()) {
+ Map.Entry<String, Long> keyEntry = keyMapIterator.next();
+ long connectionTime = keyEntry.getValue();
+ if (allowedTime != 0 && systemTime > (connectionTime + allowedTime)) {
+ keyMapIterator.remove();
+ }
+ }
+ }
+
/**
* Removes all of the entries in the key map and deletes the key file.
*/
diff --git a/services/core/java/com/android/server/adb/AdbService.java b/services/core/java/com/android/server/adb/AdbService.java
index c316915..7fd98e0 100644
--- a/services/core/java/com/android/server/adb/AdbService.java
+++ b/services/core/java/com/android/server/adb/AdbService.java
@@ -45,6 +45,7 @@
import com.android.server.LocalServices;
import com.android.server.SystemService;
+import java.io.File;
import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.Collections;
@@ -95,6 +96,16 @@
public boolean isAdbEnabled() {
return mAdbEnabled;
}
+
+ @Override
+ public File getAdbKeysFile() {
+ return mDebuggingManager.getUserKeyFile();
+ }
+
+ @Override
+ public File getAdbTempKeysFile() {
+ return mDebuggingManager.getAdbTempKeysFile();
+ }
}
private final class AdbHandler extends Handler {
diff --git a/services/core/java/com/android/server/audio/AudioDeviceBroker.java b/services/core/java/com/android/server/audio/AudioDeviceBroker.java
index 0dc73d9..6df60d6 100644
--- a/services/core/java/com/android/server/audio/AudioDeviceBroker.java
+++ b/services/core/java/com/android/server/audio/AudioDeviceBroker.java
@@ -21,6 +21,8 @@
import android.annotation.NonNull;
import android.bluetooth.BluetoothA2dp;
import android.bluetooth.BluetoothDevice;
+import android.bluetooth.BluetoothHeadset;
+import android.bluetooth.BluetoothHearingAid;
import android.bluetooth.BluetoothProfile;
import android.content.ContentResolver;
import android.content.Context;
@@ -424,11 +426,28 @@
}
/*package*/ void postDisconnectHearingAid() {
- sendMsgNoDelay(MSG_DISCONNECT_HEARING_AID, SENDMSG_QUEUE);
+ sendMsgNoDelay(MSG_DISCONNECT_BT_HEARING_AID, SENDMSG_QUEUE);
}
/*package*/ void postDisconnectHeadset() {
- sendMsgNoDelay(MSG_DISCONNECT_HEADSET, SENDMSG_QUEUE);
+ sendMsgNoDelay(MSG_DISCONNECT_BT_HEADSET, SENDMSG_QUEUE);
+ }
+
+ /*package*/ void postBtA2dpProfileConnected(BluetoothA2dp a2dpProfile) {
+ sendLMsgNoDelay(MSG_L_BT_SERVICE_CONNECTED_PROFILE_A2DP, SENDMSG_QUEUE, a2dpProfile);
+ }
+
+ /*package*/ void postBtA2dpSinkProfileConnected(BluetoothProfile profile) {
+ sendLMsgNoDelay(MSG_L_BT_SERVICE_CONNECTED_PROFILE_A2DP_SINK, SENDMSG_QUEUE, profile);
+ }
+
+ /*package*/ void postBtHeasetProfileConnected(BluetoothHeadset headsetProfile) {
+ sendLMsgNoDelay(MSG_L_BT_SERVICE_CONNECTED_PROFILE_HEADSET, SENDMSG_QUEUE, headsetProfile);
+ }
+
+ /*package*/ void postBtHearingAidProfileConnected(BluetoothHearingAid hearingAidProfile) {
+ sendLMsgNoDelay(MSG_L_BT_SERVICE_CONNECTED_PROFILE_HEARING_AID, SENDMSG_QUEUE,
+ hearingAidProfile);
}
//---------------------------------------------------------------------
@@ -460,16 +479,14 @@
}
}
+ @GuardedBy("mDeviceStateLock")
/*package*/ void handleSetA2dpSinkConnectionState(@BluetoothProfile.BtProfileState int state,
@NonNull BtHelper.BluetoothA2dpDeviceInfo btDeviceInfo) {
final int intState = (state == BluetoothA2dp.STATE_CONNECTED)
? CONNECTION_STATE_CONNECTED : CONNECTION_STATE_DISCONNECTED;
- final int delay;
- synchronized (mDeviceStateLock) {
- delay = mDeviceInventory.checkSendBecomingNoisyIntent(
+ final int delay = mDeviceInventory.checkSendBecomingNoisyIntent(
AudioSystem.DEVICE_OUT_BLUETOOTH_A2DP, intState,
AudioSystem.DEVICE_NONE);
- }
final String addr = btDeviceInfo == null ? "null" : btDeviceInfo.getBtDevice().getAddress();
if (AudioService.DEBUG_DEVICES) {
@@ -719,16 +736,36 @@
mDeviceInventory.disconnectA2dpSink();
}
break;
- case MSG_DISCONNECT_HEARING_AID:
+ case MSG_DISCONNECT_BT_HEARING_AID:
synchronized (mDeviceStateLock) {
mDeviceInventory.disconnectHearingAid();
}
break;
- case MSG_DISCONNECT_HEADSET:
+ case MSG_DISCONNECT_BT_HEADSET:
synchronized (mDeviceStateLock) {
mBtHelper.disconnectHeadset();
}
break;
+ case MSG_L_BT_SERVICE_CONNECTED_PROFILE_A2DP:
+ synchronized (mDeviceStateLock) {
+ mBtHelper.onA2dpProfileConnected((BluetoothA2dp) msg.obj);
+ }
+ break;
+ case MSG_L_BT_SERVICE_CONNECTED_PROFILE_A2DP_SINK:
+ synchronized (mDeviceStateLock) {
+ mBtHelper.onA2dpSinkProfileConnected((BluetoothProfile) msg.obj);
+ }
+ break;
+ case MSG_L_BT_SERVICE_CONNECTED_PROFILE_HEARING_AID:
+ synchronized (mDeviceStateLock) {
+ mBtHelper.onHearingAidProfileConnected((BluetoothHearingAid) msg.obj);
+ }
+ break;
+ case MSG_L_BT_SERVICE_CONNECTED_PROFILE_HEADSET:
+ synchronized (mDeviceStateLock) {
+ mBtHelper.onHeadsetProfileConnected((BluetoothHeadset) msg.obj);
+ }
+ break;
default:
Log.wtf(TAG, "Invalid message " + msg.what);
}
@@ -766,8 +803,12 @@
private static final int MSG_L_A2DP_ACTIVE_DEVICE_CHANGE = 18;
private static final int MSG_DISCONNECT_A2DP = 19;
private static final int MSG_DISCONNECT_A2DP_SINK = 20;
- private static final int MSG_DISCONNECT_HEARING_AID = 21;
- private static final int MSG_DISCONNECT_HEADSET = 22;
+ private static final int MSG_DISCONNECT_BT_HEARING_AID = 21;
+ private static final int MSG_DISCONNECT_BT_HEADSET = 22;
+ private static final int MSG_L_BT_SERVICE_CONNECTED_PROFILE_A2DP = 23;
+ private static final int MSG_L_BT_SERVICE_CONNECTED_PROFILE_A2DP_SINK = 24;
+ private static final int MSG_L_BT_SERVICE_CONNECTED_PROFILE_HEARING_AID = 25;
+ private static final int MSG_L_BT_SERVICE_CONNECTED_PROFILE_HEADSET = 26;
private static boolean isMessageHandledUnderWakelock(int msgId) {
diff --git a/services/core/java/com/android/server/audio/BtHelper.java b/services/core/java/com/android/server/audio/BtHelper.java
index e918997..58c1882 100644
--- a/services/core/java/com/android/server/audio/BtHelper.java
+++ b/services/core/java/com/android/server/audio/BtHelper.java
@@ -393,6 +393,84 @@
mBluetoothHeadset = null;
}
+ /*package*/ synchronized void onA2dpProfileConnected(BluetoothA2dp a2dp) {
+ mA2dp = a2dp;
+ final List<BluetoothDevice> deviceList = mA2dp.getConnectedDevices();
+ if (deviceList.isEmpty()) {
+ return;
+ }
+ final BluetoothDevice btDevice = deviceList.get(0);
+ final @BluetoothProfile.BtProfileState int state = mA2dp.getConnectionState(btDevice);
+ mDeviceBroker.handleSetA2dpSinkConnectionState(
+ state, new BluetoothA2dpDeviceInfo(btDevice));
+ }
+
+ /*package*/ synchronized void onA2dpSinkProfileConnected(BluetoothProfile profile) {
+ final List<BluetoothDevice> deviceList = profile.getConnectedDevices();
+ if (deviceList.isEmpty()) {
+ return;
+ }
+ final BluetoothDevice btDevice = deviceList.get(0);
+ final @BluetoothProfile.BtProfileState int state =
+ profile.getConnectionState(btDevice);
+ mDeviceBroker.postSetA2dpSourceConnectionState(
+ state, new BluetoothA2dpDeviceInfo(btDevice));
+ }
+
+ /*package*/ synchronized void onHearingAidProfileConnected(BluetoothHearingAid hearingAid) {
+ mHearingAid = hearingAid;
+ final List<BluetoothDevice> deviceList = mHearingAid.getConnectedDevices();
+ if (deviceList.isEmpty()) {
+ return;
+ }
+ final BluetoothDevice btDevice = deviceList.get(0);
+ final @BluetoothProfile.BtProfileState int state =
+ mHearingAid.getConnectionState(btDevice);
+ mDeviceBroker.setBluetoothHearingAidDeviceConnectionState(
+ btDevice, state,
+ /*suppressNoisyIntent*/ false,
+ /*musicDevice*/ android.media.AudioSystem.DEVICE_NONE,
+ /*eventSource*/ "mBluetoothProfileServiceListener");
+ }
+
+ /*package*/ synchronized void onHeadsetProfileConnected(BluetoothHeadset headset) {
+ // Discard timeout message
+ mDeviceBroker.handleCancelFailureToConnectToBtHeadsetService();
+ mBluetoothHeadset = headset;
+ setBtScoActiveDevice(mBluetoothHeadset.getActiveDevice());
+ // Refresh SCO audio state
+ checkScoAudioState();
+ if (mScoAudioState != SCO_STATE_ACTIVATE_REQ
+ && mScoAudioState != SCO_STATE_DEACTIVATE_REQ) {
+ return;
+ }
+ boolean status = false;
+ if (mBluetoothHeadsetDevice != null) {
+ switch (mScoAudioState) {
+ case SCO_STATE_ACTIVATE_REQ:
+ status = connectBluetoothScoAudioHelper(
+ mBluetoothHeadset,
+ mBluetoothHeadsetDevice, mScoAudioMode);
+ if (status) {
+ mScoAudioState = SCO_STATE_ACTIVE_INTERNAL;
+ }
+ break;
+ case SCO_STATE_DEACTIVATE_REQ:
+ status = disconnectBluetoothScoAudioHelper(
+ mBluetoothHeadset,
+ mBluetoothHeadsetDevice, mScoAudioMode);
+ if (status) {
+ mScoAudioState = SCO_STATE_DEACTIVATING;
+ }
+ break;
+ }
+ }
+ if (!status) {
+ mScoAudioState = SCO_STATE_INACTIVE;
+ broadcastScoConnectionState(AudioManager.SCO_AUDIO_STATE_DISCONNECTED);
+ }
+ }
+
//----------------------------------------------------------------------
private void broadcastScoConnectionState(int state) {
mDeviceBroker.postBroadcastScoConnectionState(state);
@@ -462,99 +540,36 @@
}
}
+ // NOTE this listener is NOT called from AudioDeviceBroker event thread, only call async
+ // methods inside listener.
private BluetoothProfile.ServiceListener mBluetoothProfileServiceListener =
new BluetoothProfile.ServiceListener() {
public void onServiceConnected(int profile, BluetoothProfile proxy) {
- final BluetoothDevice btDevice;
- List<BluetoothDevice> deviceList;
switch(profile) {
case BluetoothProfile.A2DP:
- synchronized (BtHelper.this) {
- mA2dp = (BluetoothA2dp) proxy;
- deviceList = mA2dp.getConnectedDevices();
- if (deviceList.size() > 0) {
- btDevice = deviceList.get(0);
- if (btDevice == null) {
- Log.e(TAG, "Invalid null device in BT profile listener");
- return;
- }
- final @BluetoothProfile.BtProfileState int state =
- mA2dp.getConnectionState(btDevice);
- mDeviceBroker.handleSetA2dpSinkConnectionState(
- state, new BluetoothA2dpDeviceInfo(btDevice));
- }
- }
+ AudioService.sDeviceLogger.log(new AudioEventLogger.StringEvent(
+ "BT profile service: connecting A2DP profile"));
+ mDeviceBroker.postBtA2dpProfileConnected((BluetoothA2dp) proxy);
break;
case BluetoothProfile.A2DP_SINK:
- deviceList = proxy.getConnectedDevices();
- if (deviceList.size() > 0) {
- btDevice = deviceList.get(0);
- final @BluetoothProfile.BtProfileState int state =
- proxy.getConnectionState(btDevice);
- mDeviceBroker.postSetA2dpSourceConnectionState(
- state, new BluetoothA2dpDeviceInfo(btDevice));
- }
+ AudioService.sDeviceLogger.log(new AudioEventLogger.StringEvent(
+ "BT profile service: connecting A2DP_SINK profile"));
+ mDeviceBroker.postBtA2dpSinkProfileConnected(proxy);
break;
case BluetoothProfile.HEADSET:
- synchronized (BtHelper.this) {
- // Discard timeout message
- mDeviceBroker.handleCancelFailureToConnectToBtHeadsetService();
- mBluetoothHeadset = (BluetoothHeadset) proxy;
- setBtScoActiveDevice(mBluetoothHeadset.getActiveDevice());
- // Refresh SCO audio state
- checkScoAudioState();
- // Continue pending action if any
- if (mScoAudioState == SCO_STATE_ACTIVATE_REQ
- || mScoAudioState == SCO_STATE_DEACTIVATE_REQ) {
- boolean status = false;
- if (mBluetoothHeadsetDevice != null) {
- switch (mScoAudioState) {
- case SCO_STATE_ACTIVATE_REQ:
- status = connectBluetoothScoAudioHelper(
- mBluetoothHeadset,
- mBluetoothHeadsetDevice, mScoAudioMode);
- if (status) {
- mScoAudioState = SCO_STATE_ACTIVE_INTERNAL;
- }
- break;
- case SCO_STATE_DEACTIVATE_REQ:
- status = disconnectBluetoothScoAudioHelper(
- mBluetoothHeadset,
- mBluetoothHeadsetDevice, mScoAudioMode);
- if (status) {
- mScoAudioState = SCO_STATE_DEACTIVATING;
- }
- break;
- }
- }
- if (!status) {
- mScoAudioState = SCO_STATE_INACTIVE;
- broadcastScoConnectionState(
- AudioManager.SCO_AUDIO_STATE_DISCONNECTED);
- }
- }
- }
+ AudioService.sDeviceLogger.log(new AudioEventLogger.StringEvent(
+ "BT profile service: connecting HEADSET profile"));
+ mDeviceBroker.postBtHeasetProfileConnected((BluetoothHeadset) proxy);
break;
case BluetoothProfile.HEARING_AID:
- synchronized (BtHelper.this) {
- mHearingAid = (BluetoothHearingAid) proxy;
- deviceList = mHearingAid.getConnectedDevices();
- if (deviceList.size() > 0) {
- btDevice = deviceList.get(0);
- final @BluetoothProfile.BtProfileState int state =
- mHearingAid.getConnectionState(btDevice);
- mDeviceBroker.setBluetoothHearingAidDeviceConnectionState(
- btDevice, state,
- /*suppressNoisyIntent*/ false,
- /*musicDevice*/ android.media.AudioSystem.DEVICE_NONE,
- /*eventSource*/ "mBluetoothProfileServiceListener");
- }
- }
+ AudioService.sDeviceLogger.log(new AudioEventLogger.StringEvent(
+ "BT profile service: connecting HEARING_AID profile"));
+ mDeviceBroker.postBtHearingAidProfileConnected(
+ (BluetoothHearingAid) proxy);
break;
-
default:
break;
}
diff --git a/services/core/java/com/android/server/biometrics/BiometricService.java b/services/core/java/com/android/server/biometrics/BiometricService.java
index b50b800..bca84f7 100644
--- a/services/core/java/com/android/server/biometrics/BiometricService.java
+++ b/services/core/java/com/android/server/biometrics/BiometricService.java
@@ -391,10 +391,11 @@
private final Random mRandom = new Random();
// TODO(b/123378871): Remove when moved.
- // When BiometricPrompt#setEnableFallback is set to true, we need to store the client (app)
- // receiver. BiometricService internally launches CDCA which invokes BiometricService to
- // start authentication (normal path). When auth is success/rejected, CDCA will use an aidl
- // method to poke BiometricService - the result will then be forwarded to this receiver.
+ // When BiometricPrompt#setAllowDeviceCredentials is set to true, we need to store the
+ // client (app) receiver. BiometricService internally launches CDCA which invokes
+ // BiometricService to start authentication (normal path). When auth is success/rejected,
+ // CDCA will use an aidl method to poke BiometricService - the result will then be forwarded
+ // to this receiver.
private IBiometricServiceReceiver mConfirmDeviceCredentialReceiver;
// The current authentication session, null if idle/done. We need to track both the current
@@ -803,11 +804,21 @@
// we can't get activity results. Store the receiver somewhere so we can forward the
// result back to the client.
// TODO(b/123378871): Remove when moved.
- if (bundle.getBoolean(BiometricPrompt.KEY_ENABLE_FALLBACK)) {
+ if (bundle.getBoolean(BiometricPrompt.KEY_ALLOW_DEVICE_CREDENTIAL)) {
mHandler.post(() -> {
- mConfirmDeviceCredentialReceiver = receiver;
final KeyguardManager kgm = getContext().getSystemService(
KeyguardManager.class);
+ if (!kgm.isDeviceSecure()) {
+ try {
+ receiver.onError(BiometricConstants.BIOMETRIC_ERROR_NO_DEVICE_CREDENTIAL,
+ getContext().getString(
+ R.string.biometric_error_device_not_secured));
+ } catch (RemoteException e) {
+ Slog.e(TAG, "Remote exception", e);
+ }
+ return;
+ }
+ mConfirmDeviceCredentialReceiver = receiver;
// Use this so we don't need to duplicate logic..
final Intent intent = kgm.createConfirmDeviceCredentialIntent(null /* title */,
null /* description */);
diff --git a/services/core/java/com/android/server/biometrics/BiometricServiceBase.java b/services/core/java/com/android/server/biometrics/BiometricServiceBase.java
index b65535a..9e0f2fc 100644
--- a/services/core/java/com/android/server/biometrics/BiometricServiceBase.java
+++ b/services/core/java/com/android/server/biometrics/BiometricServiceBase.java
@@ -624,7 +624,8 @@
handleError(getHalDeviceId(), BiometricConstants.BIOMETRIC_ERROR_HW_UNAVAILABLE,
0 /*vendorCode */);
- StatsLog.write(StatsLog.BIOMETRIC_HAL_DEATH_REPORTED, statsModality());
+ StatsLog.write(StatsLog.BIOMETRIC_SYSTEM_HEALTH_ISSUE_DETECTED, statsModality(),
+ BiometricsProtoEnums.ISSUE_HAL_DEATH);
}
protected ClientMonitor getCurrentClient() {
diff --git a/services/core/java/com/android/server/biometrics/LoggableMonitor.java b/services/core/java/com/android/server/biometrics/LoggableMonitor.java
index 91c924d..3b75b95 100644
--- a/services/core/java/com/android/server/biometrics/LoggableMonitor.java
+++ b/services/core/java/com/android/server/biometrics/LoggableMonitor.java
@@ -28,7 +28,7 @@
public abstract class LoggableMonitor {
public static final String TAG = "BiometricStats";
- public static final boolean DEBUG = true;
+ public static final boolean DEBUG = false;
private long mFirstAcquireTimeMs;
@@ -137,6 +137,8 @@
+ ", RequireConfirmation: " + requireConfirmation
+ ", State: " + authState
+ ", Latency: " + latency);
+ } else {
+ Slog.v(TAG, "Authentication latency: " + latency);
}
StatsLog.write(StatsLog.BIOMETRIC_AUTHENTICATED,
diff --git a/services/core/java/com/android/server/biometrics/fingerprint/FingerprintService.java b/services/core/java/com/android/server/biometrics/fingerprint/FingerprintService.java
index 9e0a1c0c..d8544e3 100644
--- a/services/core/java/com/android/server/biometrics/fingerprint/FingerprintService.java
+++ b/services/core/java/com/android/server/biometrics/fingerprint/FingerprintService.java
@@ -49,6 +49,7 @@
import android.os.UserHandle;
import android.os.UserManager;
import android.util.Slog;
+import android.util.StatsLog;
import android.util.proto.ProtoOutputStream;
import com.android.internal.annotations.GuardedBy;
@@ -554,6 +555,8 @@
+ " " + f.getDeviceId());
FingerprintUtils.getInstance().removeBiometricForUser(getContext(),
getTargetUserId(), f.getBiometricId());
+ StatsLog.write(StatsLog.BIOMETRIC_SYSTEM_HEALTH_ISSUE_DETECTED,
+ BiometricsProtoEnums.ISSUE_UNKNOWN_TEMPLATE_ENROLLED_FRAMEWORK);
}
mEnrolledList.clear();
}
@@ -1003,6 +1006,8 @@
mHalDeviceId, mToken, new ServiceListenerImpl(null), uf.f.getBiometricId(),
uf.f.getGroupId(), uf.userId, restricted, getContext().getOpPackageName());
removeInternal(client);
+ StatsLog.write(StatsLog.BIOMETRIC_SYSTEM_HEALTH_ISSUE_DETECTED, statsModality(),
+ BiometricsProtoEnums.ISSUE_UNKNOWN_TEMPLATE_ENROLLED_HAL);
} else {
clearEnumerateState();
}
diff --git a/services/core/java/com/android/server/job/JobSchedulerService.java b/services/core/java/com/android/server/job/JobSchedulerService.java
index 19d10ec..cefe583 100644
--- a/services/core/java/com/android/server/job/JobSchedulerService.java
+++ b/services/core/java/com/android/server/job/JobSchedulerService.java
@@ -509,7 +509,7 @@
private static final float DEFAULT_CONN_CONGESTION_DELAY_FRAC = 0.5f;
private static final float DEFAULT_CONN_PREFETCH_RELAX_FRAC = 0.5f;
private static final boolean DEFAULT_USE_HEARTBEATS = false;
- private static final boolean DEFAULT_TIME_CONTROLLER_SKIP_NOT_READY_JOBS = false;
+ private static final boolean DEFAULT_TIME_CONTROLLER_SKIP_NOT_READY_JOBS = true;
private static final long DEFAULT_QUOTA_CONTROLLER_ALLOWED_TIME_PER_PERIOD_MS =
10 * 60 * 1000L; // 10 minutes
private static final long DEFAULT_QUOTA_CONTROLLER_IN_QUOTA_BUFFER_MS =
diff --git a/services/core/java/com/android/server/job/controllers/StateController.java b/services/core/java/com/android/server/job/controllers/StateController.java
index 97c3bac..74628fb 100644
--- a/services/core/java/com/android/server/job/controllers/StateController.java
+++ b/services/core/java/com/android/server/job/controllers/StateController.java
@@ -110,6 +110,7 @@
final boolean jobWouldBeReady = jobStatus.wouldBeReadyWithConstraint(constraint);
if (DEBUG) {
Slog.v(TAG, "wouldBeReadyWithConstraintLocked: " + jobStatus.toShortString()
+ + " constraint=" + constraint
+ " readyWithConstraint=" + jobWouldBeReady);
}
if (!jobWouldBeReady) {
diff --git a/services/core/java/com/android/server/job/controllers/TimeController.java b/services/core/java/com/android/server/job/controllers/TimeController.java
index 26f3caf..70deb38 100644
--- a/services/core/java/com/android/server/job/controllers/TimeController.java
+++ b/services/core/java/com/android/server/job/controllers/TimeController.java
@@ -149,8 +149,8 @@
@Override
public void onConstantsUpdatedLocked() {
- checkExpiredDelaysAndResetAlarm();
checkExpiredDeadlinesAndResetAlarm();
+ checkExpiredDelaysAndResetAlarm();
}
@Override
@@ -159,20 +159,47 @@
return;
}
- if (job.hasTimingDelayConstraint()
- && job.getEarliestRunTime() <= mNextDelayExpiredElapsedMillis) {
- checkExpiredDelaysAndResetAlarm();
- }
+ final long nowElapsedMillis = sElapsedRealtimeClock.millis();
+
+ // Check deadline constraint first because if it's satisfied, we avoid a little bit of
+ // unnecessary processing of the timing delay.
if (job.hasDeadlineConstraint()
+ && !job.isConstraintSatisfied(JobStatus.CONSTRAINT_DEADLINE)
&& job.getLatestRunTimeElapsed() <= mNextJobExpiredElapsedMillis) {
- checkExpiredDeadlinesAndResetAlarm();
+ if (evaluateDeadlineConstraint(job, nowElapsedMillis)) {
+ checkExpiredDeadlinesAndResetAlarm();
+ checkExpiredDelaysAndResetAlarm();
+ } else {
+ final boolean isAlarmForJob =
+ job.getLatestRunTimeElapsed() == mNextJobExpiredElapsedMillis;
+ final boolean wouldBeReady = wouldBeReadyWithConstraintLocked(
+ job, JobStatus.CONSTRAINT_DEADLINE);
+ if ((isAlarmForJob && !wouldBeReady) || (!isAlarmForJob && wouldBeReady)) {
+ checkExpiredDeadlinesAndResetAlarm();
+ }
+ }
+ }
+ if (job.hasTimingDelayConstraint()
+ && !job.isConstraintSatisfied(JobStatus.CONSTRAINT_TIMING_DELAY)
+ && job.getEarliestRunTime() <= mNextDelayExpiredElapsedMillis) {
+ if (evaluateTimingDelayConstraint(job, nowElapsedMillis)) {
+ checkExpiredDelaysAndResetAlarm();
+ } else {
+ final boolean isAlarmForJob =
+ job.getEarliestRunTime() == mNextDelayExpiredElapsedMillis;
+ final boolean wouldBeReady = wouldBeReadyWithConstraintLocked(
+ job, JobStatus.CONSTRAINT_TIMING_DELAY);
+ if ((isAlarmForJob && !wouldBeReady) || (!isAlarmForJob && wouldBeReady)) {
+ checkExpiredDelaysAndResetAlarm();
+ }
+ }
}
}
@Override
public void reevaluateStateLocked(int uid) {
- checkExpiredDelaysAndResetAlarm();
checkExpiredDeadlinesAndResetAlarm();
+ checkExpiredDelaysAndResetAlarm();
}
/**
@@ -182,10 +209,10 @@
* back and forth.
*/
private boolean canStopTrackingJobLocked(JobStatus job) {
- return (!job.hasTimingDelayConstraint() ||
- (job.satisfiedConstraints&JobStatus.CONSTRAINT_TIMING_DELAY) != 0) &&
- (!job.hasDeadlineConstraint() ||
- (job.satisfiedConstraints&JobStatus.CONSTRAINT_DEADLINE) != 0);
+ return (!job.hasTimingDelayConstraint()
+ || job.isConstraintSatisfied(JobStatus.CONSTRAINT_TIMING_DELAY))
+ && (!job.hasDeadlineConstraint()
+ || job.isConstraintSatisfied(JobStatus.CONSTRAINT_DEADLINE));
}
private void ensureAlarmServiceLocked() {
@@ -241,6 +268,7 @@
}
}
+ /** @return true if the job's deadline constraint is satisfied */
private boolean evaluateDeadlineConstraint(JobStatus job, long nowElapsedMillis) {
final long jobDeadline = job.getLatestRunTimeElapsed();
@@ -279,7 +307,7 @@
if (job.isReady()) {
ready = true;
}
- } else if (!job.isConstraintSatisfied(JobStatus.CONSTRAINT_TIMING_DELAY)) {
+ } else {
if (mConstants.TIME_CONTROLLER_SKIP_NOT_READY_JOBS
&& !wouldBeReadyWithConstraintLocked(
job, JobStatus.CONSTRAINT_TIMING_DELAY)) {
@@ -319,6 +347,7 @@
}
}
+ /** @return true if the job's delay constraint is satisfied */
private boolean evaluateTimingDelayConstraint(JobStatus job, long nowElapsedMillis) {
final long jobDelayTime = job.getEarliestRunTime();
if (jobDelayTime <= nowElapsedMillis) {
@@ -347,6 +376,9 @@
*/
private void setDelayExpiredAlarmLocked(long alarmTimeElapsedMillis, WorkSource ws) {
alarmTimeElapsedMillis = maybeAdjustAlarmTime(alarmTimeElapsedMillis);
+ if (mNextDelayExpiredElapsedMillis == alarmTimeElapsedMillis) {
+ return;
+ }
mNextDelayExpiredElapsedMillis = alarmTimeElapsedMillis;
updateAlarmWithListenerLocked(DELAY_TAG, mNextDelayExpiredListener,
mNextDelayExpiredElapsedMillis, ws);
@@ -359,6 +391,9 @@
*/
private void setDeadlineExpiredAlarmLocked(long alarmTimeElapsedMillis, WorkSource ws) {
alarmTimeElapsedMillis = maybeAdjustAlarmTime(alarmTimeElapsedMillis);
+ if (mNextJobExpiredElapsedMillis == alarmTimeElapsedMillis) {
+ return;
+ }
mNextJobExpiredElapsedMillis = alarmTimeElapsedMillis;
updateAlarmWithListenerLocked(DEADLINE_TAG, mDeadlineExpiredListener,
mNextJobExpiredElapsedMillis, ws);
diff --git a/services/core/java/com/android/server/location/GnssConfiguration.java b/services/core/java/com/android/server/location/GnssConfiguration.java
index 7225926..91b5234 100644
--- a/services/core/java/com/android/server/location/GnssConfiguration.java
+++ b/services/core/java/com/android/server/location/GnssConfiguration.java
@@ -367,7 +367,7 @@
return defaultValue;
}
try {
- return Integer.parseInt(valueString);
+ return Integer.decode(valueString);
} catch (NumberFormatException e) {
Log.e(TAG, "Unable to parse config parameter " + configParameter + " value: "
+ valueString + ". Using default value: " + defaultValue);
diff --git a/services/core/java/com/android/server/location/GnssLocationProvider.java b/services/core/java/com/android/server/location/GnssLocationProvider.java
index f368e7b..2f0b388 100644
--- a/services/core/java/com/android/server/location/GnssLocationProvider.java
+++ b/services/core/java/com/android/server/location/GnssLocationProvider.java
@@ -302,7 +302,7 @@
MAX_RETRY_INTERVAL);
// true if we are enabled, protected by this
- private boolean mEnabled = true;
+ private boolean mEnabled;
private boolean mShutdown;
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
index eaedec5..874d1a7 100644
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
@@ -16321,7 +16321,6 @@
final boolean onExternal = args.volumeUuid != null;
final boolean instantApp = ((installFlags & PackageManager.INSTALL_INSTANT_APP) != 0);
final boolean fullApp = ((installFlags & PackageManager.INSTALL_FULL_APP) != 0);
- final boolean forceSdk = ((installFlags & PackageManager.INSTALL_FORCE_SDK) != 0);
final boolean virtualPreload =
((installFlags & PackageManager.INSTALL_VIRTUAL_PRELOAD) != 0);
@ScanFlags int scanFlags = SCAN_NEW_INSTALL | SCAN_UPDATE_SIGNATURE;
@@ -16353,8 +16352,7 @@
// Retrieve PackageSettings and parse package
@ParseFlags final int parseFlags = mDefParseFlags | PackageParser.PARSE_CHATTY
| PackageParser.PARSE_ENFORCE_CODE
- | (onExternal ? PackageParser.PARSE_EXTERNAL_STORAGE : 0)
- | (forceSdk ? PackageParser.PARSE_FORCE_SDK : 0);
+ | (onExternal ? PackageParser.PARSE_EXTERNAL_STORAGE : 0);
PackageParser pp = new PackageParser();
pp.setSeparateProcesses(mSeparateProcesses);
@@ -16775,19 +16773,6 @@
"replacePackageLI: new=" + pkg + ", old=" + oldPackage);
}
- // don't allow upgrade to target a release SDK from a pre-release SDK
- final boolean oldTargetsPreRelease = oldPackage.applicationInfo.targetSdkVersion
- == Build.VERSION_CODES.CUR_DEVELOPMENT;
- final boolean newTargetsPreRelease = pkg.applicationInfo.targetSdkVersion
- == Build.VERSION_CODES.CUR_DEVELOPMENT;
- if (oldTargetsPreRelease
- && !newTargetsPreRelease
- && ((parseFlags & PackageParser.PARSE_FORCE_SDK) == 0)) {
- Slog.w(TAG, "Can't install package targeting released sdk");
- throw new PrepareFailure(
- PackageManager.INSTALL_FAILED_UPDATE_INCOMPATIBLE);
- }
-
ps = mSettings.mPackages.get(pkgName11);
disabledPs = mSettings.getDisabledSystemPkgLPr(ps);
diff --git a/services/core/java/com/android/server/pm/PackageManagerShellCommand.java b/services/core/java/com/android/server/pm/PackageManagerShellCommand.java
index dc18dfc..2eb762b 100644
--- a/services/core/java/com/android/server/pm/PackageManagerShellCommand.java
+++ b/services/core/java/com/android/server/pm/PackageManagerShellCommand.java
@@ -2383,8 +2383,7 @@
sessionParams.volumeUuid = null;
}
break;
- case "--force-sdk":
- sessionParams.installFlags |= PackageManager.INSTALL_FORCE_SDK;
+ case "--force-sdk": // ignore
break;
case "--apex":
sessionParams.setInstallAsApex();
@@ -2961,8 +2960,6 @@
pw.println(" 0=unknown, 1=admin policy, 2=device restore,");
pw.println(" 3=device setup, 4=user request");
pw.println(" --force-uuid: force install on to disk volume with given UUID");
- pw.println(" --force-sdk: allow install even when existing app targets platform");
- pw.println(" codename but new one targets a final API level");
pw.println(" --apex: install an .apex file, not an .apk");
pw.println("");
pw.println(" install-create [-lrtsfdg] [-i PACKAGE] [--user USER_ID|all|current]");
diff --git a/services/core/java/com/android/server/pm/UserRestrictionsUtils.java b/services/core/java/com/android/server/pm/UserRestrictionsUtils.java
index 8d64b81..18e292f 100644
--- a/services/core/java/com/android/server/pm/UserRestrictionsUtils.java
+++ b/services/core/java/com/android/server/pm/UserRestrictionsUtils.java
@@ -743,6 +743,9 @@
case android.provider.Settings.Global.PRIVATE_DNS_MODE:
case android.provider.Settings.Global.PRIVATE_DNS_SPECIFIER:
+ if (callingUid == Process.SYSTEM_UID) {
+ return false;
+ }
restriction = UserManager.DISALLOW_CONFIG_PRIVATE_DNS;
break;
default:
diff --git a/services/core/java/com/android/server/rollback/RollbackPackageHealthObserver.java b/services/core/java/com/android/server/rollback/RollbackPackageHealthObserver.java
index 3c6a54a..3a2b69f 100644
--- a/services/core/java/com/android/server/rollback/RollbackPackageHealthObserver.java
+++ b/services/core/java/com/android/server/rollback/RollbackPackageHealthObserver.java
@@ -16,8 +16,11 @@
package com.android.server.rollback;
+import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
+import android.content.IntentFilter;
+import android.content.pm.PackageInstaller;
import android.content.pm.PackageManager;
import android.content.pm.VersionedPackage;
import android.content.rollback.PackageRollbackInfo;
@@ -25,6 +28,7 @@
import android.content.rollback.RollbackManager;
import android.os.Handler;
import android.os.HandlerThread;
+import android.os.PowerManager;
import android.text.TextUtils;
import android.util.Pair;
import android.util.Slog;
@@ -91,6 +95,7 @@
+ failedPackage.getVersionCode() + "]");
return false;
}
+
RollbackInfo rollback = rollbackPair.first;
// We only log mainline package rollbacks, so check if rollback contains the
// module metadata provider, if it does, the rollback is a mainline rollback
@@ -111,6 +116,12 @@
StatsLog.WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_TYPE__ROLLBACK_SUCCESS,
moduleMetadataPackage.getPackageName(),
moduleMetadataPackage.getVersionCode());
+ if (rollback.isStaged()) {
+ int rollbackId = rollback.getRollbackId();
+ BroadcastReceiver listener =
+ listenForStagedSessionReady(rollbackManager, rollbackId);
+ handleStagedSessionChange(rollbackManager, rollbackId, listener);
+ }
} else {
StatsLog.write(StatsLog.WATCHDOG_ROLLBACK_OCCURRED,
StatsLog.WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_TYPE__ROLLBACK_FAILURE,
@@ -178,4 +189,42 @@
return null;
}
}
+
+ private BroadcastReceiver listenForStagedSessionReady(RollbackManager rollbackManager,
+ int rollbackId) {
+ BroadcastReceiver sessionUpdatedReceiver = new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ handleStagedSessionChange(rollbackManager,
+ rollbackId, this /* BroadcastReceiver */);
+ }
+ };
+ IntentFilter sessionUpdatedFilter =
+ new IntentFilter(PackageInstaller.ACTION_SESSION_UPDATED);
+ mContext.registerReceiver(sessionUpdatedReceiver, sessionUpdatedFilter);
+ return sessionUpdatedReceiver;
+ }
+
+ private void handleStagedSessionChange(RollbackManager rollbackManager, int rollbackId,
+ BroadcastReceiver listener) {
+ PackageInstaller packageInstaller =
+ mContext.getPackageManager().getPackageInstaller();
+ List<RollbackInfo> recentRollbacks =
+ rollbackManager.getRecentlyCommittedRollbacks();
+ for (int i = 0; i < recentRollbacks.size(); i++) {
+ RollbackInfo recentRollback = recentRollbacks.get(i);
+ int sessionId = recentRollback.getCommittedSessionId();
+ if ((rollbackId == recentRollback.getRollbackId())
+ && (sessionId != PackageInstaller.SessionInfo.INVALID_ID)) {
+ PackageInstaller.SessionInfo sessionInfo =
+ packageInstaller.getSessionInfo(sessionId);
+ if (sessionInfo.isSessionReady()) {
+ mContext.unregisterReceiver(listener);
+ mContext.getSystemService(PowerManager.class).reboot("Rollback staged install");
+ } else if (sessionInfo.isSessionFailed()) {
+ mContext.unregisterReceiver(listener);
+ }
+ }
+ }
+ }
}
diff --git a/services/core/java/com/android/server/testharness/TestHarnessModeService.java b/services/core/java/com/android/server/testharness/TestHarnessModeService.java
index 4adce58..ec62ec7 100644
--- a/services/core/java/com/android/server/testharness/TestHarnessModeService.java
+++ b/services/core/java/com/android/server/testharness/TestHarnessModeService.java
@@ -22,6 +22,7 @@
import android.content.Context;
import android.content.Intent;
import android.content.pm.UserInfo;
+import android.debug.AdbManagerInternal;
import android.os.BatteryManager;
import android.os.Binder;
import android.os.IBinder;
@@ -42,6 +43,7 @@
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
+import java.io.File;
import java.io.FileDescriptor;
import java.io.IOException;
import java.io.InputStream;
@@ -49,7 +51,6 @@
import java.io.PrintWriter;
import java.nio.file.Files;
import java.nio.file.Path;
-import java.nio.file.Paths;
import java.nio.file.attribute.PosixFilePermission;
import java.util.Set;
@@ -85,6 +86,7 @@
break;
case PHASE_BOOT_COMPLETED:
disableAutoSync();
+ configureSettings();
break;
}
super.onBootPhase(phase);
@@ -98,31 +100,19 @@
return;
}
mShouldSetUpTestHarnessMode = true;
+ setUpAdb(testHarnessModeData);
+ setDeviceProvisioned();
+ }
+
+ private void setUpAdb(byte[] testHarnessModeData) {
+ ContentResolver cr = getContext().getContentResolver();
+ // Disable the TTL for ADB keys before enabling ADB
+ Settings.Global.putLong(cr, Settings.Global.ADB_ALLOWED_CONNECTION_TIME, 0);
+
PersistentData persistentData = PersistentData.fromBytes(testHarnessModeData);
SystemProperties.set(TEST_HARNESS_MODE_PROPERTY, persistentData.mEnabled ? "1" : "0");
writeAdbKeysFile(persistentData);
- // Clear out the data block so that we don't revert the ADB keys on every boot.
- getPersistentDataBlock().clearTestHarnessModeData();
-
- ContentResolver cr = getContext().getContentResolver();
- if (Settings.Global.getInt(cr, Settings.Global.ADB_ENABLED, 0) == 0) {
- // Enable ADB
- Settings.Global.putInt(cr, Settings.Global.ADB_ENABLED, 1);
- } else {
- // ADB is already enabled, we should restart the service so it picks up the new keys
- android.os.SystemService.restart("adbd");
- }
-
- Settings.Global.putInt(cr, Settings.Global.PACKAGE_VERIFIER_ENABLE, 0);
- Settings.Global.putInt(
- cr,
- Settings.Global.STAY_ON_WHILE_PLUGGED_IN,
- BatteryManager.BATTERY_PLUGGED_ANY);
- Settings.Global.putInt(cr, Settings.Global.OTA_DISABLE_AUTOMATIC_UPDATE, 1);
- Settings.Global.putInt(cr, Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 1);
-
- setDeviceProvisioned();
}
private void disableAutoSync() {
@@ -134,11 +124,36 @@
.setMasterSyncAutomaticallyAsUser(false, primaryUser.getUserHandle().getIdentifier());
}
+ private void configureSettings() {
+ if (!mShouldSetUpTestHarnessMode) {
+ return;
+ }
+ ContentResolver cr = getContext().getContentResolver();
+
+ Settings.Global.putInt(cr, Settings.Global.ADB_ENABLED, 1);
+ Settings.Global.putInt(cr, Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 1);
+ Settings.Global.putInt(cr, Settings.Global.PACKAGE_VERIFIER_ENABLE, 0);
+ Settings.Global.putInt(
+ cr,
+ Settings.Global.STAY_ON_WHILE_PLUGGED_IN,
+ BatteryManager.BATTERY_PLUGGED_ANY);
+ Settings.Global.putInt(cr, Settings.Global.OTA_DISABLE_AUTOMATIC_UPDATE, 1);
+ }
+
private void writeAdbKeysFile(PersistentData persistentData) {
- Path adbKeys = Paths.get("/data/misc/adb/adb_keys");
+ AdbManagerInternal adbManager = LocalServices.getService(AdbManagerInternal.class);
+
+ writeBytesToFile(persistentData.mAdbKeys, adbManager.getAdbKeysFile().toPath());
+ writeBytesToFile(persistentData.mAdbTempKeys, adbManager.getAdbTempKeysFile().toPath());
+
+ // Clear out the data block so that we don't revert the ADB keys on every boot.
+ getPersistentDataBlock().clearTestHarnessModeData();
+ }
+
+ private void writeBytesToFile(byte[] keys, Path adbKeys) {
try {
OutputStream fileOutputStream = Files.newOutputStream(adbKeys);
- fileOutputStream.write(persistentData.mAdbKeys);
+ fileOutputStream.write(keys);
fileOutputStream.close();
Set<PosixFilePermission> permissions = Files.getPosixFilePermissions(adbKeys);
@@ -219,23 +234,22 @@
}
private int handleEnable() {
- Path adbKeys = Paths.get("/data/misc/adb/adb_keys");
- if (!Files.exists(adbKeys)) {
+ AdbManagerInternal adbManager = LocalServices.getService(AdbManagerInternal.class);
+ File adbKeys = adbManager.getAdbKeysFile();
+ File adbTempKeys = adbManager.getAdbTempKeysFile();
+ if (adbKeys == null && adbTempKeys == null) {
// This should only be accessible on eng builds that haven't yet set up ADB keys
getErrPrintWriter()
.println("No ADB keys stored; not enabling test harness mode");
return 1;
}
- try (InputStream inputStream = Files.newInputStream(adbKeys)) {
- long size = Files.size(adbKeys);
- byte[] adbKeysBytes = new byte[(int) size];
- int numBytes = inputStream.read(adbKeysBytes);
- if (numBytes != size) {
- getErrPrintWriter().println("Failed to read all bytes of adb_keys");
- return 1;
- }
- PersistentData persistentData = new PersistentData(true, adbKeysBytes);
+ try {
+ byte[] adbKeysBytes = getBytesFromFile(adbKeys);
+ byte[] adbTempKeysBytes = getBytesFromFile(adbTempKeys);
+
+ PersistentData persistentData =
+ new PersistentData(true, adbKeysBytes, adbTempKeysBytes);
getPersistentDataBlock().setTestHarnessModeData(persistentData.toBytes());
} catch (IOException e) {
Slog.e(TAG, "Failed to store ADB keys.", e);
@@ -252,6 +266,22 @@
return 0;
}
+ private byte[] getBytesFromFile(File file) throws IOException {
+ if (file == null || !file.exists()) {
+ return new byte[0];
+ }
+ Path path = file.toPath();
+ try (InputStream inputStream = Files.newInputStream(path)) {
+ int size = (int) Files.size(path);
+ byte[] bytes = new byte[size];
+ int numBytes = inputStream.read(bytes);
+ if (numBytes != size) {
+ throw new IOException("Failed to read the whole file");
+ }
+ return bytes;
+ }
+ }
+
@Override
public void onHelp() {
PrintWriter pw = getOutPrintWriter();
@@ -290,15 +320,17 @@
final int mVersion;
final boolean mEnabled;
final byte[] mAdbKeys;
+ final byte[] mAdbTempKeys;
- PersistentData(boolean enabled, byte[] adbKeys) {
- this(VERSION_1, enabled, adbKeys);
+ PersistentData(boolean enabled, byte[] adbKeys, byte[] adbTempKeys) {
+ this(VERSION_1, enabled, adbKeys, adbTempKeys);
}
- PersistentData(int version, boolean enabled, byte[] adbKeys) {
+ PersistentData(int version, boolean enabled, byte[] adbKeys, byte[] adbTempKeys) {
this.mVersion = version;
this.mEnabled = enabled;
this.mAdbKeys = adbKeys;
+ this.mAdbTempKeys = adbTempKeys;
}
static PersistentData fromBytes(byte[] bytes) {
@@ -309,7 +341,10 @@
int adbKeysLength = is.readInt();
byte[] adbKeys = new byte[adbKeysLength];
is.readFully(adbKeys);
- return new PersistentData(version, enabled, adbKeys);
+ int adbTempKeysLength = is.readInt();
+ byte[] adbTempKeys = new byte[adbTempKeysLength];
+ is.readFully(adbTempKeys);
+ return new PersistentData(version, enabled, adbKeys, adbTempKeys);
} catch (IOException e) {
throw new RuntimeException(e);
}
@@ -323,6 +358,8 @@
dos.writeBoolean(mEnabled);
dos.writeInt(mAdbKeys.length);
dos.write(mAdbKeys);
+ dos.writeInt(mAdbTempKeys.length);
+ dos.write(mAdbTempKeys);
dos.close();
return os.toByteArray();
} catch (IOException e) {
diff --git a/services/core/java/com/android/server/wm/AppWindowThumbnail.java b/services/core/java/com/android/server/wm/AppWindowThumbnail.java
index 0e14e46..5519729 100644
--- a/services/core/java/com/android/server/wm/AppWindowThumbnail.java
+++ b/services/core/java/com/android/server/wm/AppWindowThumbnail.java
@@ -143,7 +143,7 @@
void destroy() {
mSurfaceAnimator.cancelAnimation();
- mSurfaceControl.remove();
+ getPendingTransaction().remove(mSurfaceControl);
}
/**
diff --git a/services/core/java/com/android/server/wm/AppWindowToken.java b/services/core/java/com/android/server/wm/AppWindowToken.java
index 2cc85e2..bcf6aba 100644
--- a/services/core/java/com/android/server/wm/AppWindowToken.java
+++ b/services/core/java/com/android/server/wm/AppWindowToken.java
@@ -1275,7 +1275,19 @@
void onDisplayChanged(DisplayContent dc) {
DisplayContent prevDc = mDisplayContent;
super.onDisplayChanged(dc);
- if (prevDc != null && prevDc.mFocusedApp == this) {
+ if (prevDc == null) {
+ return;
+ }
+ if (prevDc.mChangingApps.contains(this)) {
+ // This gets called *after* the AppWindowToken has been reparented to the new display.
+ // That reparenting resulted in this window changing modes (eg. FREEFORM -> FULLSCREEN),
+ // so this token is now "frozen" while waiting for the animation to start on prevDc
+ // (which will be cancelled since the window is no-longer a child). However, since this
+ // is no longer a child of prevDc, this won't be notified of the cancelled animation,
+ // so we need to cancel the change transition here.
+ clearChangeLeash(getPendingTransaction(), true /* cancel */);
+ }
+ if (prevDc.mFocusedApp == this) {
prevDc.setFocusedApp(null);
final TaskStack stack = dc.getTopStack();
if (stack != null) {
@@ -1584,7 +1596,10 @@
}
private boolean shouldStartChangeTransition(int prevWinMode, int newWinMode) {
- if (!isVisible() || getDisplayContent().mAppTransition.isTransitionSet()) {
+ if (mWmService.mDisableTransitionAnimation
+ || !isVisible()
+ || getDisplayContent().mAppTransition.isTransitionSet()
+ || getSurfaceControl() == null) {
return false;
}
// Only do an animation into and out-of freeform mode for now. Other mode
@@ -2561,9 +2576,7 @@
return;
} else if (mTransitChangeLeash != null) {
// unparent mTransitChangeLeash for clean-up
- t.hide(mTransitChangeLeash);
- t.reparent(mTransitChangeLeash, null);
- mTransitChangeLeash = null;
+ clearChangeLeash(t, false /* cancel */);
}
if (mAnimatingAppWindowTokenRegistry != null) {
@@ -2659,15 +2672,36 @@
return super.isSelfAnimating();
}
+ /**
+ * @param cancel {@code true} if clearing the leash due to cancelling instead of transferring
+ * to another leash.
+ */
+ private void clearChangeLeash(Transaction t, boolean cancel) {
+ if (mTransitChangeLeash == null) {
+ return;
+ }
+ if (cancel) {
+ clearThumbnail();
+ SurfaceControl sc = getSurfaceControl();
+ SurfaceControl parentSc = getParentSurfaceControl();
+ // Don't reparent if surface is getting destroyed
+ if (parentSc != null && sc != null) {
+ t.reparent(sc, getParentSurfaceControl());
+ }
+ }
+ t.hide(mTransitChangeLeash);
+ t.reparent(mTransitChangeLeash, null);
+ mTransitChangeLeash = null;
+ if (cancel) {
+ onAnimationLeashDestroyed(t);
+ }
+ }
+
@Override
void cancelAnimation() {
cancelAnimationOnly();
clearThumbnail();
- if (mTransitChangeLeash != null) {
- getPendingTransaction().hide(mTransitChangeLeash);
- getPendingTransaction().reparent(mTransitChangeLeash, null);
- mTransitChangeLeash = null;
- }
+ clearChangeLeash(getPendingTransaction(), true /* cancel */);
}
/**
@@ -3003,7 +3037,9 @@
void removeFromPendingTransition() {
if (isWaitingForTransitionStart() && mDisplayContent != null) {
mDisplayContent.mOpeningApps.remove(this);
- mDisplayContent.mChangingApps.remove(this);
+ if (mDisplayContent.mChangingApps.remove(this)) {
+ clearChangeLeash(getPendingTransaction(), true /* cancel */);
+ }
mDisplayContent.mClosingApps.remove(this);
}
}
diff --git a/services/core/jni/com_android_server_input_InputManagerService.cpp b/services/core/jni/com_android_server_input_InputManagerService.cpp
index 33317b5..c18e98b 100644
--- a/services/core/jni/com_android_server_input_InputManagerService.cpp
+++ b/services/core/jni/com_android_server_input_InputManagerService.cpp
@@ -373,6 +373,9 @@
mInputManager->getReader()->dump(dump);
dump += "\n";
+ mInputManager->getClassifier()->dump(dump);
+ dump += "\n";
+
mInputManager->getDispatcher()->dump(dump);
dump += "\n";
}
diff --git a/services/core/jni/com_android_server_security_VerityUtils.cpp b/services/core/jni/com_android_server_security_VerityUtils.cpp
index bf96f9a..6cd9f2c 100644
--- a/services/core/jni/com_android_server_security_VerityUtils.cpp
+++ b/services/core/jni/com_android_server_security_VerityUtils.cpp
@@ -122,7 +122,7 @@
}
~JavaByteArrayHolder() {
- LOG_ALWAYS_FATAL_IF(mElements == nullptr, "Elements are not released");
+ LOG_ALWAYS_FATAL_IF(mElements != nullptr, "Elements are not released");
}
private:
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
index 1155f49..e30acf7 100644
--- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
+++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
@@ -12790,10 +12790,6 @@
}
}
- // TODO(b/22388012): When backup is available for secondary users and profiles, consider
- // whether there are any privacy/security implications of enabling the backup service here
- // if there are other users or profiles unmanaged or managed by a different entity (i.e. not
- // affiliated).
@Override
public void setBackupServiceEnabled(ComponentName admin, boolean enabled) {
if (!mHasFeature) {
diff --git a/services/java/com/android/server/SystemServer.java b/services/java/com/android/server/SystemServer.java
index ab30cda..a6017f2 100644
--- a/services/java/com/android/server/SystemServer.java
+++ b/services/java/com/android/server/SystemServer.java
@@ -64,6 +64,7 @@
import android.util.Slog;
import android.util.TimingsTraceLog;
import android.view.WindowManager;
+import android.view.contentcapture.ContentCaptureManager;
import android.view.inputmethod.InputMethodSystemProperty;
import com.android.internal.R;
@@ -2214,33 +2215,30 @@
}
private void startContentCaptureService(@NonNull Context context) {
- // Check if it was explicitly enabled by DeviceConfig
- final String settings = DeviceConfig.getProperty(DeviceConfig.ContentCapture.NAMESPACE,
- DeviceConfig.ContentCapture.PROPERTY_CONTENTCAPTURE_ENABLED);
- if (settings == null) {
- // Better be safe than sorry...
- Slog.d(TAG, "ContentCaptureService disabled because its not set by OEM");
- return;
- }
- switch (settings) {
- case "always":
- // Should be used only during development
+ // First check if it was explicitly enabled by DeviceConfig
+ boolean explicitlySupported = false;
+ String settings = DeviceConfig.getProperty(DeviceConfig.NAMESPACE_CONTENT_CAPTURE,
+ ContentCaptureManager.DEVICE_CONFIG_PROPERTY_SERVICE_EXPLICITLY_ENABLED);
+ if (settings != null && !settings.equalsIgnoreCase("default")) {
+ explicitlySupported = Boolean.parseBoolean(settings);
+ if (explicitlySupported) {
Slog.d(TAG, "ContentCaptureService explicitly enabled by DeviceConfig");
- break;
- case "default":
- // Default case: check if OEM overlaid the resource that defines the service.
- final String serviceName = context.getString(
- com.android.internal.R.string.config_defaultContentCaptureService);
- if (TextUtils.isEmpty(serviceName)) {
- Slog.d(TAG, "ContentCaptureService disabled because resource is not overlaid");
- return;
- }
- break;
- default:
- // Kill switch for OEMs
- Slog.d(TAG, "ContentCaptureService disabled because its set to: " + settings);
+ } else {
+ Slog.d(TAG, "ContentCaptureService explicitly disabled by DeviceConfig");
return;
+ }
}
+
+ // Then check if OEM overlaid the resource that defines the service.
+ if (!explicitlySupported) {
+ final String serviceName = context
+ .getString(com.android.internal.R.string.config_defaultContentCaptureService);
+ if (TextUtils.isEmpty(serviceName)) {
+ Slog.d(TAG, "ContentCaptureService disabled because resource is not overlaid");
+ return;
+ }
+ }
+
traceBeginAndSlog("StartContentCaptureService");
mSystemServiceManager.startService(CONTENT_CAPTURE_MANAGER_SERVICE_CLASS);
traceEnd();
diff --git a/services/tests/wmtests/src/com/android/server/wm/AppChangeTransitionTests.java b/services/tests/wmtests/src/com/android/server/wm/AppChangeTransitionTests.java
index defe981..a7520dc 100644
--- a/services/tests/wmtests/src/com/android/server/wm/AppChangeTransitionTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/AppChangeTransitionTests.java
@@ -16,24 +16,29 @@
package com.android.server.wm;
+import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD;
import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM;
+import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN;
+import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED;
import static android.view.WindowManager.TRANSIT_TASK_CHANGE_WINDOWING_MODE;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import android.graphics.Rect;
import android.os.IBinder;
+import android.view.Display;
import android.view.IRemoteAnimationFinishedCallback;
import android.view.IRemoteAnimationRunner;
import android.view.RemoteAnimationAdapter;
import android.view.RemoteAnimationDefinition;
import android.view.RemoteAnimationTarget;
-import androidx.test.filters.FlakyTest;
import androidx.test.filters.SmallTest;
-import org.junit.Before;
import org.junit.Test;
/**
@@ -49,14 +54,20 @@
private Task mTask;
private WindowTestUtils.TestAppWindowToken mToken;
- @Before
- public void setUp() throws Exception {
- mStack = createTaskStackOnDisplay(mDisplayContent);
+ public void setUpOnDisplay(DisplayContent dc) {
+ mStack = createTaskStackOnDisplay(WINDOWING_MODE_UNDEFINED, ACTIVITY_TYPE_STANDARD, dc);
mTask = createTaskInStack(mStack, 0 /* userId */);
- mToken = WindowTestUtils.createTestAppWindowToken(mDisplayContent);
+ mToken = WindowTestUtils.createTestAppWindowToken(dc);
mToken.mSkipOnParentChanged = false;
mTask.addChild(mToken, 0);
+
+ // Set a remote animator with snapshot disabled. Snapshots don't work in wmtests.
+ RemoteAnimationDefinition definition = new RemoteAnimationDefinition();
+ RemoteAnimationAdapter adapter =
+ new RemoteAnimationAdapter(new TestRemoteAnimationRunner(), 10, 1, false);
+ definition.addRemoteAnimation(TRANSIT_TASK_CHANGE_WINDOWING_MODE, adapter);
+ dc.registerRemoteAnimations(definition);
}
class TestRemoteAnimationRunner implements IRemoteAnimationRunner {
@@ -85,14 +96,58 @@
@Test
public void testModeChangeRemoteAnimatorNoSnapshot() {
- RemoteAnimationDefinition definition = new RemoteAnimationDefinition();
- RemoteAnimationAdapter adapter =
- new RemoteAnimationAdapter(new TestRemoteAnimationRunner(), 10, 1, false);
- definition.addRemoteAnimation(TRANSIT_TASK_CHANGE_WINDOWING_MODE, adapter);
- mDisplayContent.registerRemoteAnimations(definition);
+ // setup currently defaults to no snapshot.
+ setUpOnDisplay(mDisplayContent);
mTask.setWindowingMode(WINDOWING_MODE_FREEFORM);
assertEquals(1, mDisplayContent.mChangingApps.size());
+
+ // Verify we are in a change transition, but without a snapshot.
+ // Though, the test will actually have crashed by now if a snapshot is attempted.
+ assertNull(mToken.getThumbnail());
+ assertTrue(mToken.isInChangeTransition());
+
+ waitUntilHandlersIdle();
+ mToken.removeImmediately();
+ }
+
+ @Test
+ public void testCancelPendingChangeOnRemove() {
+ // setup currently defaults to no snapshot.
+ setUpOnDisplay(mDisplayContent);
+
+ mTask.setWindowingMode(WINDOWING_MODE_FREEFORM);
+ assertEquals(1, mDisplayContent.mChangingApps.size());
+ assertTrue(mToken.isInChangeTransition());
+
+ // Removing the app-token from the display should clean-up the
+ // the change leash.
+ mDisplayContent.removeAppToken(mToken.token);
+ assertEquals(0, mDisplayContent.mChangingApps.size());
+ assertFalse(mToken.isInChangeTransition());
+
+ waitUntilHandlersIdle();
+ mToken.removeImmediately();
+ }
+
+ @Test
+ public void testNoChangeWhenMoveDisplay() {
+ mDisplayContent.setWindowingMode(WINDOWING_MODE_FULLSCREEN);
+ final DisplayContent dc1 = createNewDisplay(Display.STATE_ON);
+ dc1.setWindowingMode(WINDOWING_MODE_FREEFORM);
+ setUpOnDisplay(dc1);
+
+ assertEquals(WINDOWING_MODE_FREEFORM, mTask.getWindowingMode());
+
+ // Reparenting to a display with different windowing mode may trigger
+ // a change transition internally, but it should be cleaned-up once
+ // the display change is complete.
+ mStack.reparent(mDisplayContent.getDisplayId(), new Rect(), true);
+
+ assertEquals(WINDOWING_MODE_FULLSCREEN, mTask.getWindowingMode());
+
+ // Make sure we're not waiting for a change animation (no leash)
+ assertFalse(mToken.isInChangeTransition());
assertNull(mToken.getThumbnail());
waitUntilHandlersIdle();
diff --git a/telephony/java/android/telephony/AccessNetworkConstants.java b/telephony/java/android/telephony/AccessNetworkConstants.java
index 9c64cf6..75165af 100644
--- a/telephony/java/android/telephony/AccessNetworkConstants.java
+++ b/telephony/java/android/telephony/AccessNetworkConstants.java
@@ -54,8 +54,15 @@
*/
@SystemApi
public static final class TransportType {
+ /**
+ * Invalid transport type.
+ * @hide
+ */
+ public static final int INVALID = -1;
+
/** Wireless Wide Area Networks (i.e. Cellular) */
public static final int WWAN = 1;
+
/** Wireless Local Area Networks (i.e. Wifi) */
public static final int WLAN = 2;
@@ -65,6 +72,7 @@
/** @hide */
public static String toString(int type) {
switch (type) {
+ case INVALID: return "INVALID";
case WWAN: return "WWAN";
case WLAN: return "WLAN";
default: return Integer.toString(type);
diff --git a/tools/stats_log_api_gen/main.cpp b/tools/stats_log_api_gen/main.cpp
index 55440d2..0270c72 100644
--- a/tools/stats_log_api_gen/main.cpp
+++ b/tools/stats_log_api_gen/main.cpp
@@ -688,7 +688,7 @@
build_non_chained_decl_map(atoms, &atom_code_to_non_chained_decl_map);
size_t i = 0;
- // Print constants
+ // Print atom constants
for (set<AtomDecl>::const_iterator atom = atoms.decls.begin();
atom != atoms.decls.end(); atom++) {
string constant = make_constant_name(atom->name);
@@ -714,6 +714,30 @@
fprintf(out, "};\n");
fprintf(out, "\n");
+ // Print constants for the enum values.
+ fprintf(out, "//\n");
+ fprintf(out, "// Constants for enum values\n");
+ fprintf(out, "//\n\n");
+ for (set<AtomDecl>::const_iterator atom = atoms.decls.begin();
+ atom != atoms.decls.end(); atom++) {
+ for (vector<AtomField>::const_iterator field = atom->fields.begin();
+ field != atom->fields.end(); field++) {
+ if (field->javaType == JAVA_TYPE_ENUM) {
+ fprintf(out, "// Values for %s.%s\n", atom->message.c_str(),
+ field->name.c_str());
+ for (map<int, string>::const_iterator value = field->enumValues.begin();
+ value != field->enumValues.end(); value++) {
+ fprintf(out, "const int32_t %s__%s__%s = %d;\n",
+ make_constant_name(atom->message).c_str(),
+ make_constant_name(field->name).c_str(),
+ make_constant_name(value->second).c_str(),
+ value->first);
+ }
+ fprintf(out, "\n");
+ }
+ }
+ }
+
fprintf(out, "struct BytesField {\n");
fprintf(out,
" BytesField(char const* array, size_t len) : arg(array), "