Merge "Add @UnsupportedAppUsage annotations"
diff --git a/Android.bp b/Android.bp
index 33b6209..028e8a4 100644
--- a/Android.bp
+++ b/Android.bp
@@ -1039,7 +1039,7 @@
"ext",
"framework",
"voip-common",
- "android.test.mock",
+ "android.test.mock.impl",
],
local_sourcepaths: frameworks_base_subdirs,
html_dirs: [
@@ -1474,13 +1474,13 @@
"ext",
"framework",
"voip-common",
- "android.test.mock",
+ "android.test.mock.impl",
],
local_sourcepaths: frameworks_base_subdirs,
installable: false,
metalava_enabled: true,
metalava_annotations_enabled: true,
- metalava_previous_api: ":public-api-for-metalava-annotations",
+ metalava_previous_api: ":last-released-public-api",
metalava_merge_annotations_dirs: [
"metalava-manual",
"ojluni-annotated-stubs",
@@ -1497,6 +1497,12 @@
"core/res/AndroidManifest.xml",
],
args: metalava_framework_docs_args,
+ check_api: {
+ current: {
+ api_file: "api/current.txt",
+ removed_api_file: "api/removed.txt",
+ },
+ },
}
droiddoc {
@@ -1511,6 +1517,12 @@
"core/res/AndroidManifest.xml",
],
args: metalava_framework_docs_args + " --show-annotation android.annotation.SystemApi",
+ check_api: {
+ current: {
+ api_file: "api/system-current.txt",
+ removed_api_file: "api/system-removed.txt",
+ },
+ },
}
droiddoc {
@@ -1523,4 +1535,10 @@
"core/res/AndroidManifest.xml",
],
args: metalava_framework_docs_args + " --show-annotation android.annotation.TestApi",
+ check_api: {
+ current: {
+ api_file: "api/test-current.txt",
+ removed_api_file: "api/test-removed.txt",
+ },
+ },
}
diff --git a/api/current.txt b/api/current.txt
index 19a0f31..300ab3a 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -15190,7 +15190,7 @@
package android.graphics.fonts {
- public class Font {
+ public final class Font {
method public android.graphics.fonts.FontVariationAxis[] getAxes();
method public int getTtcIndex();
method public int getWeight();
@@ -15208,12 +15208,12 @@
public static class Font.Builder {
ctor public Font.Builder(java.nio.ByteBuffer);
- ctor public Font.Builder(java.io.File) throws java.io.IOException;
- ctor public Font.Builder(java.io.FileDescriptor) throws java.io.IOException;
- ctor public Font.Builder(java.io.FileDescriptor, long, long) throws java.io.IOException;
- ctor public Font.Builder(android.content.res.AssetManager, java.lang.String) throws java.io.IOException;
- ctor public Font.Builder(android.content.res.Resources, int) throws java.io.IOException;
- method public android.graphics.fonts.Font build();
+ ctor public Font.Builder(java.io.File);
+ ctor public Font.Builder(java.io.FileDescriptor);
+ ctor public Font.Builder(java.io.FileDescriptor, long, long);
+ ctor public Font.Builder(android.content.res.AssetManager, java.lang.String);
+ ctor public Font.Builder(android.content.res.Resources, int);
+ method public android.graphics.fonts.Font build() throws java.io.IOException;
method public android.graphics.fonts.Font.Builder setFontVariationSettings(java.lang.String);
method public android.graphics.fonts.Font.Builder setFontVariationSettings(android.graphics.fonts.FontVariationAxis[]);
method public android.graphics.fonts.Font.Builder setItalic(boolean);
@@ -15221,9 +15221,9 @@
method public android.graphics.fonts.Font.Builder setWeight(int);
}
- public class FontFamily {
+ public final class FontFamily {
method public android.graphics.fonts.Font getFont(int);
- method public int getFontCount();
+ method public int getSize();
}
public static class FontFamily.Builder {
@@ -46512,7 +46512,7 @@
method public final deprecated boolean dispatch(android.view.KeyEvent.Callback);
method public final boolean dispatch(android.view.KeyEvent.Callback, android.view.KeyEvent.DispatcherState, java.lang.Object);
method public final int getAction();
- method public final java.lang.String getCharacters();
+ method public final deprecated java.lang.String getCharacters();
method public static int getDeadChar(int, int);
method public final int getDeviceId();
method public char getDisplayLabel();
@@ -46561,7 +46561,7 @@
method public final void startTracking();
method public void writeToParcel(android.os.Parcel, int);
field public static final int ACTION_DOWN = 0; // 0x0
- field public static final int ACTION_MULTIPLE = 2; // 0x2
+ field public static final deprecated int ACTION_MULTIPLE = 2; // 0x2
field public static final int ACTION_UP = 1; // 0x1
field public static final android.os.Parcelable.Creator<android.view.KeyEvent> CREATOR;
field public static final int FLAG_CANCELED = 32; // 0x20
diff --git a/cmds/statsd/src/atoms.proto b/cmds/statsd/src/atoms.proto
index d7a926f..6065bbf 100644
--- a/cmds/statsd/src/atoms.proto
+++ b/cmds/statsd/src/atoms.proto
@@ -127,6 +127,7 @@
WTFOccurred wtf_occurred = 80;
LowMemReported low_mem_reported = 81;
GenericAtom generic_atom = 82;
+ KeyValuePairsAtom key_value_pairs_atom = 83;
}
// Pulled events will start at field 10000.
@@ -177,6 +178,20 @@
optional string tag = 2;
}
+message KeyValuePair {
+ optional int32 key = 1;
+ oneof value {
+ int64 value_int = 2;
+ string value_str = 3;
+ float value_float = 4;
+ }
+}
+
+message KeyValuePairsAtom {
+ optional int32 uid = 1;
+ repeated KeyValuePair pairs = 2;
+}
+
/*
* *****************************************************************************
* Below are all of the individual atoms that are logged by Android via statsd.
diff --git a/cmds/statsd/src/logd/LogEvent.cpp b/cmds/statsd/src/logd/LogEvent.cpp
index 04d34f3..73e6572 100644
--- a/cmds/statsd/src/logd/LogEvent.cpp
+++ b/cmds/statsd/src/logd/LogEvent.cpp
@@ -18,6 +18,7 @@
#include "logd/LogEvent.h"
#include "stats_log_util.h"
+#include "statslog.h"
namespace android {
namespace os {
@@ -51,6 +52,52 @@
}
}
+LogEvent::LogEvent(int32_t tagId, int64_t wallClockTimestampNs, int64_t elapsedTimestampNs,
+ int32_t uid,
+ const std::map<int32_t, int64_t>& int_map,
+ const std::map<int32_t, std::string>& string_map,
+ const std::map<int32_t, float>& float_map) {
+ mLogdTimestampNs = wallClockTimestampNs;
+ mElapsedTimestampNs = elapsedTimestampNs;
+ mTagId = android::util::KEY_VALUE_PAIRS_ATOM;
+ mLogUid = uid;
+
+ int pos[] = {1, 1, 1};
+
+ mValues.push_back(FieldValue(Field(mTagId, pos, 0 /* depth */), Value(uid)));
+ pos[0]++;
+ for (const auto&itr : int_map) {
+ pos[2] = 1;
+ mValues.push_back(FieldValue(Field(mTagId, pos, 2 /* depth */), Value(itr.first)));
+ pos[2] = 2;
+ mValues.push_back(FieldValue(Field(mTagId, pos, 2 /* depth */), Value(itr.second)));
+ mValues.back().mField.decorateLastPos(2);
+ pos[1]++;
+ }
+
+ for (const auto&itr : string_map) {
+ pos[2] = 1;
+ mValues.push_back(FieldValue(Field(mTagId, pos, 2 /* depth */), Value(itr.first)));
+ pos[2] = 3;
+ mValues.push_back(FieldValue(Field(mTagId, pos, 2 /* depth */), Value(itr.second)));
+ mValues.back().mField.decorateLastPos(2);
+ pos[1]++;
+ }
+
+ for (const auto&itr : float_map) {
+ pos[2] = 1;
+ mValues.push_back(FieldValue(Field(mTagId, pos, 2 /* depth */), Value(itr.first)));
+ pos[2] = 4;
+ mValues.push_back(FieldValue(Field(mTagId, pos, 2 /* depth */), Value(itr.second)));
+ mValues.back().mField.decorateLastPos(2);
+ pos[1]++;
+ }
+ if (!mValues.empty()) {
+ mValues.back().mField.decorateLastPos(1);
+ mValues.at(mValues.size() - 2).mField.decorateLastPos(1);
+ }
+}
+
LogEvent::LogEvent(int32_t tagId, int64_t timestampNs) {
mLogdTimestampNs = timestampNs;
mTagId = tagId;
diff --git a/cmds/statsd/src/logd/LogEvent.h b/cmds/statsd/src/logd/LogEvent.h
index 24d624d..9ed09dd 100644
--- a/cmds/statsd/src/logd/LogEvent.h
+++ b/cmds/statsd/src/logd/LogEvent.h
@@ -69,6 +69,15 @@
// For testing. The timestamp is used as both elapsed real time and logd timestamp.
explicit LogEvent(int32_t tagId, int64_t timestampNs);
+ /**
+ * Constructs a KeyValuePairsAtom LogEvent from value maps.
+ */
+ explicit LogEvent(int32_t tagId, int64_t wallClockTimestampNs, int64_t elapsedTimestampNs,
+ int32_t uid,
+ const std::map<int32_t, int64_t>& int_map,
+ const std::map<int32_t, std::string>& string_map,
+ const std::map<int32_t, float>& float_map);
+
~LogEvent();
/**
diff --git a/cmds/statsd/tests/LogEvent_test.cpp b/cmds/statsd/tests/LogEvent_test.cpp
index 2fcde29..acfa151 100644
--- a/cmds/statsd/tests/LogEvent_test.cpp
+++ b/cmds/statsd/tests/LogEvent_test.cpp
@@ -158,6 +158,96 @@
EXPECT_EQ((float)1.1, item7.mValue.float_value);
}
+TEST(LogEventTest, TestKeyValuePairsAtomParsing) {
+ std::map<int32_t, int64_t> int_map;
+ std::map<int32_t, std::string> string_map;
+ std::map<int32_t, float> float_map;
+
+ int_map[11] = 123L;
+ int_map[22] = 345L;
+
+ string_map[1] = "test2";
+ string_map[2] = "test1";
+
+ float_map[111] = 2.2f;
+ float_map[222] = 1.1f;
+
+ LogEvent event1(83, 2000, 2001, 10001, int_map, string_map, float_map);
+ event1.init();
+
+ EXPECT_EQ(83, event1.GetTagId());
+ EXPECT_EQ((int64_t)2000, event1.GetLogdTimestampNs());
+ EXPECT_EQ((int64_t)2001, event1.GetElapsedTimestampNs());
+
+ const auto& items = event1.getValues();
+ EXPECT_EQ((size_t)13, items.size());
+
+ const FieldValue& item0 = event1.getValues()[0];
+ EXPECT_EQ(0x00010000, item0.mField.getField());
+ EXPECT_EQ(Type::INT, item0.mValue.getType());
+ EXPECT_EQ(10001, item0.mValue.int_value);
+
+ const FieldValue& item1 = event1.getValues()[1];
+ EXPECT_EQ(0x2020101, item1.mField.getField());
+ EXPECT_EQ(Type::INT, item1.mValue.getType());
+ EXPECT_EQ(11, item1.mValue.int_value);
+
+ const FieldValue& item2 = event1.getValues()[2];
+ EXPECT_EQ(0x2020182, item2.mField.getField());
+ EXPECT_EQ(Type::LONG, item2.mValue.getType());
+ EXPECT_EQ(123L, item2.mValue.long_value);
+
+ const FieldValue& item3 = event1.getValues()[3];
+ EXPECT_EQ(0x2020201, item3.mField.getField());
+ EXPECT_EQ(Type::INT, item3.mValue.getType());
+ EXPECT_EQ(22, item3.mValue.int_value);
+
+ const FieldValue& item4 = event1.getValues()[4];
+ EXPECT_EQ(0x2020282, item4.mField.getField());
+ EXPECT_EQ(Type::LONG, item4.mValue.getType());
+ EXPECT_EQ(345L, item4.mValue.long_value);
+
+ const FieldValue& item5 = event1.getValues()[5];
+ EXPECT_EQ(0x2020301, item5.mField.getField());
+ EXPECT_EQ(Type::INT, item5.mValue.getType());
+ EXPECT_EQ(1, item5.mValue.int_value);
+
+ const FieldValue& item6 = event1.getValues()[6];
+ EXPECT_EQ(0x2020383, item6.mField.getField());
+ EXPECT_EQ(Type::STRING, item6.mValue.getType());
+ EXPECT_EQ("test2", item6.mValue.str_value);
+
+ const FieldValue& item7 = event1.getValues()[7];
+ EXPECT_EQ(0x2020401, item7.mField.getField());
+ EXPECT_EQ(Type::INT, item7.mValue.getType());
+ EXPECT_EQ(2, item7.mValue.int_value);
+
+ const FieldValue& item8 = event1.getValues()[8];
+ EXPECT_EQ(0x2020483, item8.mField.getField());
+ EXPECT_EQ(Type::STRING, item8.mValue.getType());
+ EXPECT_EQ("test1", item8.mValue.str_value);
+
+ const FieldValue& item9 = event1.getValues()[9];
+ EXPECT_EQ(0x2020501, item9.mField.getField());
+ EXPECT_EQ(Type::INT, item9.mValue.getType());
+ EXPECT_EQ(111, item9.mValue.int_value);
+
+ const FieldValue& item10 = event1.getValues()[10];
+ EXPECT_EQ(0x2020584, item10.mField.getField());
+ EXPECT_EQ(Type::FLOAT, item10.mValue.getType());
+ EXPECT_EQ(2.2f, item10.mValue.float_value);
+
+ const FieldValue& item11 = event1.getValues()[11];
+ EXPECT_EQ(0x2028601, item11.mField.getField());
+ EXPECT_EQ(Type::INT, item11.mValue.getType());
+ EXPECT_EQ(222, item11.mValue.int_value);
+
+ const FieldValue& item12 = event1.getValues()[12];
+ EXPECT_EQ(0x2028684, item12.mField.getField());
+ EXPECT_EQ(Type::FLOAT, item12.mValue.getType());
+ EXPECT_EQ(1.1f, item12.mValue.float_value);
+}
+
} // namespace statsd
} // namespace os
diff --git a/config/hiddenapi-light-greylist.txt b/config/hiddenapi-light-greylist.txt
index 14568d5..d588441 100644
--- a/config/hiddenapi-light-greylist.txt
+++ b/config/hiddenapi-light-greylist.txt
@@ -1650,348 +1650,8 @@
Landroid/system/OsConstants;->XATTR_REPLACE:I
Landroid/system/OsConstants;->_LINUX_CAPABILITY_VERSION_3:I
Landroid/system/StructTimeval;->fromMillis(J)Landroid/system/StructTimeval;
-Landroid/telephony/CarrierConfigManager;->KEY_CARRIER_DEFAULT_ACTIONS_ON_REDIRECTION_STRING_ARRAY:Ljava/lang/String;
-Landroid/telephony/CarrierConfigManager;->KEY_DISABLE_VOICE_BARRING_NOTIFICATION_BOOL:Ljava/lang/String;
Landroid/telephony/CarrierMessagingServiceManager;-><init>()V
-Landroid/telephony/cdma/CdmaCellLocation;->equalsHandlesNulls(Ljava/lang/Object;Ljava/lang/Object;)Z
-Landroid/telephony/cdma/CdmaCellLocation;->mBaseStationId:I
-Landroid/telephony/cdma/CdmaCellLocation;->mBaseStationLatitude:I
-Landroid/telephony/cdma/CdmaCellLocation;->mBaseStationLongitude:I
-Landroid/telephony/cdma/CdmaCellLocation;->mNetworkId:I
-Landroid/telephony/cdma/CdmaCellLocation;->mSystemId:I
-Landroid/telephony/CellBroadcastMessage;-><init>(Landroid/telephony/SmsCbMessage;)V
-Landroid/telephony/CellBroadcastMessage;->createFromCursor(Landroid/database/Cursor;)Landroid/telephony/CellBroadcastMessage;
-Landroid/telephony/CellBroadcastMessage;->getContentValues()Landroid/content/ContentValues;
-Landroid/telephony/CellBroadcastMessage;->getDeliveryTime()J
-Landroid/telephony/CellBroadcastMessage;->getEtwsWarningInfo()Landroid/telephony/SmsCbEtwsInfo;
-Landroid/telephony/CellBroadcastMessage;->getLanguageCode()Ljava/lang/String;
-Landroid/telephony/CellBroadcastMessage;->getMessageBody()Ljava/lang/String;
-Landroid/telephony/CellBroadcastMessage;->getSerialNumber()I
-Landroid/telephony/CellBroadcastMessage;->getServiceCategory()I
-Landroid/telephony/CellBroadcastMessage;->getSpokenDateString(Landroid/content/Context;)Ljava/lang/String;
-Landroid/telephony/CellBroadcastMessage;->isCmasMessage()Z
-Landroid/telephony/CellBroadcastMessage;->isEmergencyAlertMessage()Z
-Landroid/telephony/CellBroadcastMessage;->isEtwsMessage()Z
-Landroid/telephony/CellBroadcastMessage;->isRead()Z
-Landroid/telephony/CellIdentityCdma;-><init>(IIIII)V
-Landroid/telephony/CellIdentityGsm;-><init>()V
-Landroid/telephony/CellIdentityGsm;->mArfcn:I
-Landroid/telephony/CellIdentityGsm;->mBsic:I
-Landroid/telephony/CellIdentityLte;-><init>()V
-Landroid/telephony/CellIdentityLte;-><init>(IIIII)V
-Landroid/telephony/CellIdentityLte;->mEarfcn:I
-Landroid/telephony/CellIdentityWcdma;->mUarfcn:I
-Landroid/telephony/CellInfo;->getTimeStampType()I
-Landroid/telephony/CellInfo;->timeStampTypeToString(I)Ljava/lang/String;
-Landroid/telephony/CellInfo;->TIMESTAMP_TYPE_ANTENNA:I
-Landroid/telephony/CellInfo;->TIMESTAMP_TYPE_JAVA_RIL:I
-Landroid/telephony/CellInfo;->TIMESTAMP_TYPE_MODEM:I
-Landroid/telephony/CellInfo;->TIMESTAMP_TYPE_OEM_RIL:I
-Landroid/telephony/CellInfo;->TIMESTAMP_TYPE_UNKNOWN:I
-Landroid/telephony/CellInfoCdma;-><init>()V
-Landroid/telephony/CellInfoCdma;-><init>(Landroid/telephony/CellInfoCdma;)V
-Landroid/telephony/CellInfoCdma;->setCellIdentity(Landroid/telephony/CellIdentityCdma;)V
-Landroid/telephony/CellInfoGsm;-><init>()V
-Landroid/telephony/CellInfoLte;-><init>()V
-Landroid/telephony/CellInfoLte;->setCellIdentity(Landroid/telephony/CellIdentityLte;)V
-Landroid/telephony/CellInfoLte;->setCellSignalStrength(Landroid/telephony/CellSignalStrengthLte;)V
-Landroid/telephony/CellLocation;->fillInNotifierBundle(Landroid/os/Bundle;)V
-Landroid/telephony/CellLocation;->isEmpty()Z
-Landroid/telephony/CellLocation;->newFromBundle(Landroid/os/Bundle;)Landroid/telephony/CellLocation;
-Landroid/telephony/CellSignalStrengthGsm;-><init>()V
-Landroid/telephony/CellSignalStrengthGsm;->mBitErrorRate:I
-Landroid/telephony/CellSignalStrengthGsm;->mSignalStrength:I
-Landroid/telephony/CellSignalStrengthGsm;->mTimingAdvance:I
-Landroid/telephony/CellSignalStrengthLte;-><init>()V
-Landroid/telephony/CellSignalStrengthLte;->mCqi:I
-Landroid/telephony/CellSignalStrengthLte;->mRsrp:I
-Landroid/telephony/CellSignalStrengthLte;->mRsrq:I
-Landroid/telephony/CellSignalStrengthLte;->mRssnr:I
-Landroid/telephony/CellSignalStrengthLte;->mSignalStrength:I
-Landroid/telephony/CellSignalStrengthLte;->mTimingAdvance:I
-Landroid/telephony/CellSignalStrengthWcdma;->mBitErrorRate:I
-Landroid/telephony/CellSignalStrengthWcdma;->mSignalStrength:I
-Landroid/telephony/DisconnectCause;->toString(I)Ljava/lang/String;
-Landroid/telephony/euicc/EuiccInfo;->osVersion:Ljava/lang/String;
-Landroid/telephony/gsm/GsmCellLocation;->setPsc(I)V
-Landroid/telephony/ims/ImsSsInfo;-><init>()V
-Landroid/telephony/NeighboringCellInfo;->mCid:I
-Landroid/telephony/NeighboringCellInfo;->mLac:I
-Landroid/telephony/NeighboringCellInfo;->mNetworkType:I
-Landroid/telephony/NeighboringCellInfo;->mPsc:I
-Landroid/telephony/NeighboringCellInfo;->mRssi:I
-Landroid/telephony/PhoneNumberFormattingTextWatcher;->mFormatter:Lcom/android/i18n/phonenumbers/AsYouTypeFormatter;
-Landroid/telephony/PhoneNumberUtils;->cdmaCheckAndProcessPlusCode(Ljava/lang/String;)Ljava/lang/String;
-Landroid/telephony/PhoneNumberUtils;->compare(Ljava/lang/String;Ljava/lang/String;Z)Z
-Landroid/telephony/PhoneNumberUtils;->compareLoosely(Ljava/lang/String;Ljava/lang/String;)Z
-Landroid/telephony/PhoneNumberUtils;->compareStrictly(Ljava/lang/String;Ljava/lang/String;)Z
-Landroid/telephony/PhoneNumberUtils;->compareStrictly(Ljava/lang/String;Ljava/lang/String;Z)Z
-Landroid/telephony/PhoneNumberUtils;->convertPreDial(Ljava/lang/String;)Ljava/lang/String;
-Landroid/telephony/PhoneNumberUtils;->extractNetworkPortionAlt(Ljava/lang/String;)Ljava/lang/String;
-Landroid/telephony/PhoneNumberUtils;->getUsernameFromUriNumber(Ljava/lang/String;)Ljava/lang/String;
-Landroid/telephony/PhoneNumberUtils;->isEmergencyNumber(Ljava/lang/String;Ljava/lang/String;)Z
-Landroid/telephony/PhoneNumberUtils;->isLocalEmergencyNumber(Landroid/content/Context;ILjava/lang/String;)Z
-Landroid/telephony/PhoneNumberUtils;->isNanp(Ljava/lang/String;)Z
-Landroid/telephony/PhoneNumberUtils;->isPotentialLocalEmergencyNumber(Landroid/content/Context;Ljava/lang/String;)Z
-Landroid/telephony/PhoneNumberUtils;->isUriNumber(Ljava/lang/String;)Z
-Landroid/telephony/PhoneNumberUtils;->isVoiceMailNumber(Landroid/content/Context;ILjava/lang/String;)Z
-Landroid/telephony/PhoneNumberUtils;->MIN_MATCH:I
-Landroid/telephony/PhoneNumberUtils;->ttsSpanAsPhoneNumber(Ljava/lang/CharSequence;)Ljava/lang/CharSequence;
-Landroid/telephony/PhoneStateListener;-><init>(Landroid/os/Looper;)V
-Landroid/telephony/PhoneStateListener;->callback:Lcom/android/internal/telephony/IPhoneStateListener;
-Landroid/telephony/PhoneStateListener;->LISTEN_PRECISE_CALL_STATE:I
-Landroid/telephony/PhoneStateListener;->mSubId:Ljava/lang/Integer;
-Landroid/telephony/PhoneStateListener;->onDataConnectionRealTimeInfoChanged(Landroid/telephony/DataConnectionRealTimeInfo;)V
-Landroid/telephony/PhoneStateListener;->onOemHookRawEvent([B)V
-Landroid/telephony/PhoneStateListener;->onOtaspChanged(I)V
-Landroid/telephony/PhoneStateListener;->onPreciseCallStateChanged(Landroid/telephony/PreciseCallState;)V
-Landroid/telephony/PhoneStateListener;->onPreciseDataConnectionStateChanged(Landroid/telephony/PreciseDataConnectionState;)V
-Landroid/telephony/PhoneStateListener;->onVoLteServiceStateChanged(Landroid/telephony/VoLteServiceState;)V
-Landroid/telephony/PreciseCallState;-><init>(IIIII)V
-Landroid/telephony/PreciseCallState;->getDisconnectCause()I
-Landroid/telephony/PreciseCallState;->getPreciseDisconnectCause()I
-Landroid/telephony/PreciseCallState;->getRingingCallState()I
-Landroid/telephony/PreciseDataConnectionState;-><init>(IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/net/LinkProperties;Ljava/lang/String;)V
-Landroid/telephony/PreciseDataConnectionState;->getDataConnectionAPN()Ljava/lang/String;
-Landroid/telephony/PreciseDataConnectionState;->getDataConnectionAPNType()Ljava/lang/String;
-Landroid/telephony/PreciseDataConnectionState;->getDataConnectionChangeReason()Ljava/lang/String;
-Landroid/telephony/PreciseDataConnectionState;->getDataConnectionFailCause()Ljava/lang/String;
-Landroid/telephony/PreciseDataConnectionState;->getDataConnectionLinkProperties()Landroid/net/LinkProperties;
-Landroid/telephony/PreciseDataConnectionState;->getDataConnectionNetworkType()I
-Landroid/telephony/PreciseDataConnectionState;->getDataConnectionState()I
-Landroid/telephony/RadioAccessFamily;->getNetworkTypeFromRaf(I)I
-Landroid/telephony/RadioAccessFamily;->getPhoneId()I
-Landroid/telephony/RadioAccessFamily;->getRadioAccessFamily()I
-Landroid/telephony/Rlog;->d(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
-Landroid/telephony/Rlog;->i(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
-Landroid/telephony/Rlog;->v(Ljava/lang/String;Ljava/lang/String;)I
-Landroid/telephony/Rlog;->w(Ljava/lang/String;Ljava/lang/String;)I
-Landroid/telephony/Rlog;->w(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
-Landroid/telephony/ServiceState;->bearerBitmapHasCdma(I)Z
-Landroid/telephony/ServiceState;->equalsHandlesNulls(Ljava/lang/Object;Ljava/lang/Object;)Z
-Landroid/telephony/ServiceState;->fillInNotifierBundle(Landroid/os/Bundle;)V
-Landroid/telephony/ServiceState;->getCdmaDefaultRoamingIndicator()I
-Landroid/telephony/ServiceState;->getCdmaEriIconIndex()I
-Landroid/telephony/ServiceState;->getCdmaEriIconMode()I
-Landroid/telephony/ServiceState;->getCdmaRoamingIndicator()I
-Landroid/telephony/ServiceState;->getCssIndicator()I
-Landroid/telephony/ServiceState;->getDataNetworkType()I
-Landroid/telephony/ServiceState;->getDataOperatorAlphaShort()Ljava/lang/String;
-Landroid/telephony/ServiceState;->getDataOperatorNumeric()Ljava/lang/String;
-Landroid/telephony/ServiceState;->getDataRoamingType()I
-Landroid/telephony/ServiceState;->getRadioTechnology()I
-Landroid/telephony/ServiceState;->getRilVoiceRadioTechnology()I
-Landroid/telephony/ServiceState;->getVoiceOperatorAlphaLong()Ljava/lang/String;
-Landroid/telephony/ServiceState;->getVoiceOperatorAlphaShort()Ljava/lang/String;
-Landroid/telephony/ServiceState;->getVoiceOperatorNumeric()Ljava/lang/String;
-Landroid/telephony/ServiceState;->getVoiceRoaming()Z
-Landroid/telephony/ServiceState;->getVoiceRoamingType()I
-Landroid/telephony/ServiceState;->mCdmaDefaultRoamingIndicator:I
-Landroid/telephony/ServiceState;->mCdmaEriIconIndex:I
-Landroid/telephony/ServiceState;->mCdmaEriIconMode:I
-Landroid/telephony/ServiceState;->mCdmaRoamingIndicator:I
-Landroid/telephony/ServiceState;->mCssIndicator:Z
-Landroid/telephony/ServiceState;->mIsManualNetworkSelection:Z
-Landroid/telephony/ServiceState;->mIsUsingCarrierAggregation:Z
-Landroid/telephony/ServiceState;->mNetworkId:I
-Landroid/telephony/ServiceState;->mSystemId:I
-Landroid/telephony/ServiceState;->newFromBundle(Landroid/os/Bundle;)Landroid/telephony/ServiceState;
-Landroid/telephony/ServiceState;->RIL_RADIO_TECHNOLOGY_IWLAN:I
-Landroid/telephony/ServiceState;->setCdmaDefaultRoamingIndicator(I)V
-Landroid/telephony/ServiceState;->setCdmaEriIconIndex(I)V
-Landroid/telephony/ServiceState;->setCdmaEriIconMode(I)V
-Landroid/telephony/ServiceState;->setCdmaRoamingIndicator(I)V
-Landroid/telephony/ServiceState;->setCssIndicator(I)V
-Landroid/telephony/ServiceState;->setDataRegState(I)V
-Landroid/telephony/ServiceState;->setDataRoaming(Z)V
-Landroid/telephony/ServiceState;->setDataRoamingFromRegistration(Z)V
-Landroid/telephony/ServiceState;->setDataRoamingType(I)V
-Landroid/telephony/ServiceState;->setEmergencyOnly(Z)V
-Landroid/telephony/ServiceState;->setFromNotifierBundle(Landroid/os/Bundle;)V
-Landroid/telephony/ServiceState;->setOperatorAlphaLong(Ljava/lang/String;)V
-Landroid/telephony/ServiceState;->setVoiceRegState(I)V
-Landroid/telephony/ServiceState;->setVoiceRoaming(Z)V
-Landroid/telephony/ServiceState;->setVoiceRoamingType(I)V
-Landroid/telephony/SignalStrength;-><init>()V
-Landroid/telephony/SignalStrength;-><init>(Landroid/os/Parcel;)V
-Landroid/telephony/SignalStrength;-><init>(Landroid/telephony/SignalStrength;)V
-Landroid/telephony/SignalStrength;-><init>(Z)V
-Landroid/telephony/SignalStrength;->copyFrom(Landroid/telephony/SignalStrength;)V
-Landroid/telephony/SignalStrength;->CREATOR:Landroid/os/Parcelable$Creator;
-Landroid/telephony/SignalStrength;->fillInNotifierBundle(Landroid/os/Bundle;)V
-Landroid/telephony/SignalStrength;->getAsuLevel()I
-Landroid/telephony/SignalStrength;->getCdmaAsuLevel()I
-Landroid/telephony/SignalStrength;->getCdmaLevel()I
-Landroid/telephony/SignalStrength;->getDbm()I
-Landroid/telephony/SignalStrength;->getEvdoAsuLevel()I
-Landroid/telephony/SignalStrength;->getEvdoLevel()I
-Landroid/telephony/SignalStrength;->getGsmAsuLevel()I
-Landroid/telephony/SignalStrength;->getGsmDbm()I
-Landroid/telephony/SignalStrength;->getGsmLevel()I
-Landroid/telephony/SignalStrength;->getLteAsuLevel()I
-Landroid/telephony/SignalStrength;->getLteCqi()I
-Landroid/telephony/SignalStrength;->getLteDbm()I
-Landroid/telephony/SignalStrength;->getLteLevel()I
-Landroid/telephony/SignalStrength;->getLteRsrp()I
-Landroid/telephony/SignalStrength;->getLteRsrq()I
-Landroid/telephony/SignalStrength;->getLteRssnr()I
-Landroid/telephony/SignalStrength;->getLteSignalStrength()I
-Landroid/telephony/SignalStrength;->getTdScdmaAsuLevel()I
-Landroid/telephony/SignalStrength;->getTdScdmaDbm()I
-Landroid/telephony/SignalStrength;->getTdScdmaLevel()I
-Landroid/telephony/SignalStrength;->mCdmaDbm:I
-Landroid/telephony/SignalStrength;->mCdmaEcio:I
-Landroid/telephony/SignalStrength;->mEvdoDbm:I
-Landroid/telephony/SignalStrength;->mEvdoEcio:I
-Landroid/telephony/SignalStrength;->mEvdoSnr:I
-Landroid/telephony/SignalStrength;->mGsmBitErrorRate:I
-Landroid/telephony/SignalStrength;->mGsmSignalStrength:I
-Landroid/telephony/SignalStrength;->mLteCqi:I
-Landroid/telephony/SignalStrength;->mLteRsrp:I
-Landroid/telephony/SignalStrength;->mLteRsrpBoost:I
-Landroid/telephony/SignalStrength;->mLteRsrq:I
-Landroid/telephony/SignalStrength;->mLteRssnr:I
-Landroid/telephony/SignalStrength;->mLteSignalStrength:I
-Landroid/telephony/SignalStrength;->mTdScdmaRscp:I
-Landroid/telephony/SignalStrength;->mWcdmaRscp:I
-Landroid/telephony/SignalStrength;->newFromBundle(Landroid/os/Bundle;)Landroid/telephony/SignalStrength;
-Landroid/telephony/SignalStrength;->NUM_SIGNAL_STRENGTH_BINS:I
-Landroid/telephony/SignalStrength;->setFromNotifierBundle(Landroid/os/Bundle;)V
-Landroid/telephony/SignalStrength;->SIGNAL_STRENGTH_GOOD:I
-Landroid/telephony/SignalStrength;->SIGNAL_STRENGTH_GREAT:I
-Landroid/telephony/SignalStrength;->SIGNAL_STRENGTH_MODERATE:I
-Landroid/telephony/SignalStrength;->SIGNAL_STRENGTH_NONE_OR_UNKNOWN:I
-Landroid/telephony/SignalStrength;->SIGNAL_STRENGTH_POOR:I
-Landroid/telephony/SignalStrength;->validateInput()V
-Landroid/telephony/SmsManager;->copyMessageToIcc([B[BI)Z
-Landroid/telephony/SmsManager;->deleteMessageFromIcc(I)Z
-Landroid/telephony/SmsManager;->disableCellBroadcastRange(III)Z
-Landroid/telephony/SmsManager;->enableCellBroadcastRange(III)Z
-Landroid/telephony/SmsManager;->getAllMessagesFromIcc()Ljava/util/ArrayList;
-Landroid/telephony/SmsManager;->isSMSPromptEnabled()Z
-Landroid/telephony/SmsManager;->mSubId:I
-Landroid/telephony/SmsManager;->sendMultipartTextMessage(Ljava/lang/String;Ljava/lang/String;Ljava/util/ArrayList;Ljava/util/ArrayList;Ljava/util/ArrayList;IZI)V
-Landroid/telephony/SmsManager;->sendTextMessage(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/app/PendingIntent;Landroid/app/PendingIntent;IZI)V
-Landroid/telephony/SmsManager;->sendTextMessageWithoutPersisting(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/app/PendingIntent;Landroid/app/PendingIntent;IZI)V
-Landroid/telephony/SmsManager;->updateMessageOnIcc(II[B)Z
-Landroid/telephony/SmsMessage;->fragmentText(Ljava/lang/String;)Ljava/util/ArrayList;
-Landroid/telephony/SmsMessage;->getSubId()I
-Landroid/telephony/SmsMessage;->mSubId:I
-Landroid/telephony/SmsMessage;->mWrappedSmsMessage:Lcom/android/internal/telephony/SmsMessageBase;
-Landroid/telephony/SmsMessage;->setSubId(I)V
-Landroid/telephony/SmsMessage;->useCdmaFormatForMoSms()Z
-Landroid/telephony/SmsMessage;->useCdmaFormatForMoSms(I)Z
-Landroid/telephony/SubscriptionInfo;->getNameSource()I
-Landroid/telephony/SubscriptionManager;-><init>(Landroid/content/Context;)V
-Landroid/telephony/SubscriptionManager;->CONTENT_URI:Landroid/net/Uri;
-Landroid/telephony/SubscriptionManager;->DEFAULT_SUBSCRIPTION_ID:I
-Landroid/telephony/SubscriptionManager;->getActiveSubscriptionIdList()[I
-Landroid/telephony/SubscriptionManager;->getAllSubscriptionInfoCount()I
-Landroid/telephony/SubscriptionManager;->getAllSubscriptionInfoList()Ljava/util/List;
-Landroid/telephony/SubscriptionManager;->getDefaultDataPhoneId()I
-Landroid/telephony/SubscriptionManager;->getDefaultDataSubscriptionInfo()Landroid/telephony/SubscriptionInfo;
-Landroid/telephony/SubscriptionManager;->getDefaultSmsPhoneId()I
-Landroid/telephony/SubscriptionManager;->getDefaultVoiceSubscriptionInfo()Landroid/telephony/SubscriptionInfo;
-Landroid/telephony/SubscriptionManager;->getPhoneId(I)I
-Landroid/telephony/SubscriptionManager;->getSlotIndex(I)I
-Landroid/telephony/SubscriptionManager;->getSubId(I)[I
-Landroid/telephony/SubscriptionManager;->NAME_SOURCE_USER_INPUT:I
-Landroid/telephony/SubscriptionManager;->setDataRoaming(II)I
-Landroid/telephony/SubscriptionManager;->setDefaultDataSubId(I)V
-Landroid/telephony/SubscriptionManager;->setDefaultSmsSubId(I)V
-Landroid/telephony/SubscriptionManager;->setDisplayNumber(Ljava/lang/String;I)I
-Landroid/telephony/TelephonyManager$MultiSimVariants;->TSTS:Landroid/telephony/TelephonyManager$MultiSimVariants;
-Landroid/telephony/TelephonyManager$MultiSimVariants;->UNKNOWN:Landroid/telephony/TelephonyManager$MultiSimVariants;
Landroid/telephony/TelephonyManager$MultiSimVariants;->values()[Landroid/telephony/TelephonyManager$MultiSimVariants;
-Landroid/telephony/TelephonyManager;-><init>()V
-Landroid/telephony/TelephonyManager;-><init>(Landroid/content/Context;)V
-Landroid/telephony/TelephonyManager;-><init>(Landroid/content/Context;I)V
-Landroid/telephony/TelephonyManager;->ACTION_PRECISE_DATA_CONNECTION_STATE_CHANGED:Ljava/lang/String;
-Landroid/telephony/TelephonyManager;->from(Landroid/content/Context;)Landroid/telephony/TelephonyManager;
-Landroid/telephony/TelephonyManager;->getCallState(I)I
-Landroid/telephony/TelephonyManager;->getCdmaEriIconIndex(I)I
-Landroid/telephony/TelephonyManager;->getCdmaEriIconMode(I)I
-Landroid/telephony/TelephonyManager;->getCdmaEriText(I)Ljava/lang/String;
-Landroid/telephony/TelephonyManager;->getDataNetworkType(I)I
-Landroid/telephony/TelephonyManager;->getDefault()Landroid/telephony/TelephonyManager;
-Landroid/telephony/TelephonyManager;->getDeviceSoftwareVersion(I)Ljava/lang/String;
-Landroid/telephony/TelephonyManager;->getGroupIdLevel1(I)Ljava/lang/String;
-Landroid/telephony/TelephonyManager;->getIccAuthentication(IIILjava/lang/String;)Ljava/lang/String;
-Landroid/telephony/TelephonyManager;->getImsConfig(II)Landroid/telephony/ims/aidl/IImsConfig;
-Landroid/telephony/TelephonyManager;->getImsRegistration(II)Landroid/telephony/ims/aidl/IImsRegistration;
-Landroid/telephony/TelephonyManager;->getIsimImpi()Ljava/lang/String;
-Landroid/telephony/TelephonyManager;->getIsimImpu()[Ljava/lang/String;
-Landroid/telephony/TelephonyManager;->getIsimPcscf()[Ljava/lang/String;
-Landroid/telephony/TelephonyManager;->getITelephony()Lcom/android/internal/telephony/ITelephony;
-Landroid/telephony/TelephonyManager;->getLine1AlphaTag(I)Ljava/lang/String;
-Landroid/telephony/TelephonyManager;->getLine1Number(I)Ljava/lang/String;
-Landroid/telephony/TelephonyManager;->getLteOnCdmaMode()I
-Landroid/telephony/TelephonyManager;->getLteOnCdmaMode(I)I
-Landroid/telephony/TelephonyManager;->getLteOnCdmaModeStatic()I
-Landroid/telephony/TelephonyManager;->getMergedSubscriberIds()[Ljava/lang/String;
-Landroid/telephony/TelephonyManager;->getMsisdn()Ljava/lang/String;
-Landroid/telephony/TelephonyManager;->getMsisdn(I)Ljava/lang/String;
-Landroid/telephony/TelephonyManager;->getMultiSimConfiguration()Landroid/telephony/TelephonyManager$MultiSimVariants;
-Landroid/telephony/TelephonyManager;->getNai(I)Ljava/lang/String;
-Landroid/telephony/TelephonyManager;->getNetworkClass(I)I
-Landroid/telephony/TelephonyManager;->getNetworkCountryIso(I)Ljava/lang/String;
-Landroid/telephony/TelephonyManager;->getNetworkCountryIsoForPhone(I)Ljava/lang/String;
-Landroid/telephony/TelephonyManager;->getNetworkOperator(I)Ljava/lang/String;
-Landroid/telephony/TelephonyManager;->getNetworkOperatorForPhone(I)Ljava/lang/String;
-Landroid/telephony/TelephonyManager;->getNetworkOperatorName(I)Ljava/lang/String;
-Landroid/telephony/TelephonyManager;->getNetworkType(I)I
-Landroid/telephony/TelephonyManager;->getNetworkTypeName(I)Ljava/lang/String;
-Landroid/telephony/TelephonyManager;->getOtaSpNumberSchemaForPhone(ILjava/lang/String;)Ljava/lang/String;
-Landroid/telephony/TelephonyManager;->getPhoneId(I)I
-Landroid/telephony/TelephonyManager;->getPhoneType(I)I
-Landroid/telephony/TelephonyManager;->getPhoneTypeFromProperty(I)I
-Landroid/telephony/TelephonyManager;->getProcCmdLine()Ljava/lang/String;
-Landroid/telephony/TelephonyManager;->getSimCount()I
-Landroid/telephony/TelephonyManager;->getSimCountryIso(I)Ljava/lang/String;
-Landroid/telephony/TelephonyManager;->getSimCountryIsoForPhone(I)Ljava/lang/String;
-Landroid/telephony/TelephonyManager;->getSimOperator(I)Ljava/lang/String;
-Landroid/telephony/TelephonyManager;->getSimOperatorName(I)Ljava/lang/String;
-Landroid/telephony/TelephonyManager;->getSimOperatorNameForPhone(I)Ljava/lang/String;
-Landroid/telephony/TelephonyManager;->getSimOperatorNumeric()Ljava/lang/String;
-Landroid/telephony/TelephonyManager;->getSimOperatorNumeric(I)Ljava/lang/String;
-Landroid/telephony/TelephonyManager;->getSimOperatorNumericForPhone(I)Ljava/lang/String;
-Landroid/telephony/TelephonyManager;->getSimSerialNumber(I)Ljava/lang/String;
-Landroid/telephony/TelephonyManager;->getSlotIndex()I
-Landroid/telephony/TelephonyManager;->getSubId(I)I
-Landroid/telephony/TelephonyManager;->getSubIdForPhoneAccount(Landroid/telecom/PhoneAccount;)I
-Landroid/telephony/TelephonyManager;->getSubscriberId(I)Ljava/lang/String;
-Landroid/telephony/TelephonyManager;->getSubscriberInfo()Lcom/android/internal/telephony/IPhoneSubInfo;
-Landroid/telephony/TelephonyManager;->getTelephonyProperty(ILjava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-Landroid/telephony/TelephonyManager;->getTelephonyProperty(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-Landroid/telephony/TelephonyManager;->getVoiceMailAlphaTag(I)Ljava/lang/String;
-Landroid/telephony/TelephonyManager;->getVoiceMailNumber(I)Ljava/lang/String;
-Landroid/telephony/TelephonyManager;->getVoiceMessageCount(I)I
-Landroid/telephony/TelephonyManager;->hasIccCard(I)Z
-Landroid/telephony/TelephonyManager;->isMultiSimEnabled()Z
-Landroid/telephony/TelephonyManager;->isNetworkRoaming(I)Z
-Landroid/telephony/TelephonyManager;->isVideoTelephonyAvailable()Z
-Landroid/telephony/TelephonyManager;->isVolteAvailable()Z
-Landroid/telephony/TelephonyManager;->isWifiCallingAvailable()Z
-Landroid/telephony/TelephonyManager;->mSubscriptionManager:Landroid/telephony/SubscriptionManager;
-Landroid/telephony/TelephonyManager;->NETWORK_CLASS_2_G:I
-Landroid/telephony/TelephonyManager;->NETWORK_CLASS_3_G:I
-Landroid/telephony/TelephonyManager;->NETWORK_CLASS_4_G:I
-Landroid/telephony/TelephonyManager;->NETWORK_TYPE_LTE_CA:I
-Landroid/telephony/TelephonyManager;->nvReadItem(I)Ljava/lang/String;
-Landroid/telephony/TelephonyManager;->setBasebandVersionForPhone(ILjava/lang/String;)V
-Landroid/telephony/TelephonyManager;->setDataNetworkTypeForPhone(II)V
-Landroid/telephony/TelephonyManager;->setImsRegistrationState(Z)V
-Landroid/telephony/TelephonyManager;->setNetworkOperatorNameForPhone(ILjava/lang/String;)V
-Landroid/telephony/TelephonyManager;->setNetworkOperatorNumericForPhone(ILjava/lang/String;)V
-Landroid/telephony/TelephonyManager;->setNetworkRoamingForPhone(IZ)V
-Landroid/telephony/TelephonyManager;->setPhoneType(II)V
-Landroid/telephony/TelephonyManager;->setRoamingOverride(Ljava/util/List;Ljava/util/List;Ljava/util/List;Ljava/util/List;)Z
-Landroid/telephony/TelephonyManager;->setSimCountryIsoForPhone(ILjava/lang/String;)V
-Landroid/telephony/TelephonyManager;->setSimOperatorNameForPhone(ILjava/lang/String;)V
-Landroid/telephony/TelephonyManager;->setSimOperatorNumericForPhone(ILjava/lang/String;)V
-Landroid/telephony/TelephonyManager;->setSimStateForPhone(ILjava/lang/String;)V
-Landroid/telephony/TelephonyManager;->setTelephonyProperty(ILjava/lang/String;Ljava/lang/String;)V
-Landroid/telephony/VoLteServiceState;-><init>(I)V
Landroid/transition/ChangeBounds;->BOTTOM_RIGHT_ONLY_PROPERTY:Landroid/util/Property;
Landroid/transition/ChangeBounds;->POSITION_PROPERTY:Landroid/util/Property;
Landroid/transition/Scene;->mEnterAction:Ljava/lang/Runnable;
diff --git a/config/hiddenapi-vendor-list.txt b/config/hiddenapi-vendor-list.txt
index 4dc5bd4..efc4ca7 100644
--- a/config/hiddenapi-vendor-list.txt
+++ b/config/hiddenapi-vendor-list.txt
@@ -137,42 +137,10 @@
Landroid/system/Os;->setsockoptTimeval(Ljava/io/FileDescriptor;IILandroid/system/StructTimeval;)V
Landroid/system/PacketSocketAddress;-><init>(I[B)V
Landroid/system/PacketSocketAddress;-><init>(SI)V
-Landroid/telephony/euicc/DownloadableSubscription;->encodedActivationCode:Ljava/lang/String;
-Landroid/telephony/euicc/DownloadableSubscription;->setAccessRules([Landroid/telephony/UiccAccessRule;)V
-Landroid/telephony/euicc/DownloadableSubscription;->setCarrierName(Ljava/lang/String;)V
-Landroid/telephony/ims/compat/feature/ImsFeature;->getFeatureState()I
-Landroid/telephony/ims/compat/feature/ImsFeature;->setFeatureState(I)V
Landroid/telephony/ims/compat/feature/MMTelFeature;-><init>()V
Landroid/telephony/ims/compat/ImsService;-><init>()V
-Landroid/telephony/ims/compat/ImsService;->mImsServiceController:Landroid/os/IBinder;
Landroid/telephony/ims/compat/stub/ImsCallSessionImplBase;-><init>()V
-Landroid/telephony/ims/compat/stub/ImsConfigImplBase;-><init>(Landroid/content/Context;)V
-Landroid/telephony/ims/compat/stub/ImsConfigImplBase;->getIImsConfig()Lcom/android/ims/internal/IImsConfig;
Landroid/telephony/ims/compat/stub/ImsUtListenerImplBase;-><init>()V
-Landroid/telephony/ims/ImsCallForwardInfo;-><init>()V
-Landroid/telephony/ims/ImsCallForwardInfo;->mCondition:I
-Landroid/telephony/ims/ImsCallForwardInfo;->mNumber:Ljava/lang/String;
-Landroid/telephony/ims/ImsCallForwardInfo;->mServiceClass:I
-Landroid/telephony/ims/ImsCallForwardInfo;->mStatus:I
-Landroid/telephony/ims/ImsCallForwardInfo;->mTimeSeconds:I
-Landroid/telephony/ims/ImsCallForwardInfo;->mToA:I
-Landroid/telephony/ims/ImsCallProfile;->mCallExtras:Landroid/os/Bundle;
-Landroid/telephony/ims/ImsCallProfile;->mCallType:I
-Landroid/telephony/ims/ImsCallProfile;->mMediaProfile:Landroid/telephony/ims/ImsStreamMediaProfile;
-Landroid/telephony/ims/ImsCallProfile;->mRestrictCause:I
-Landroid/telephony/ims/ImsCallProfile;->presentationToOIR(I)I
-Landroid/telephony/ims/ImsExternalCallState;-><init>(ILandroid/net/Uri;ZIIZ)V
-Landroid/telephony/ims/ImsReasonInfo;-><init>(II)V
-Landroid/telephony/ims/ImsReasonInfo;->mCode:I
-Landroid/telephony/ims/ImsReasonInfo;->mExtraCode:I
-Landroid/telephony/ims/ImsReasonInfo;->mExtraMessage:Ljava/lang/String;
-Landroid/telephony/ims/ImsSsInfo;->mIcbNum:Ljava/lang/String;
-Landroid/telephony/ims/ImsSsInfo;->mStatus:I
-Landroid/telephony/ims/ImsStreamMediaProfile;-><init>()V
-Landroid/telephony/ims/ImsStreamMediaProfile;->mAudioDirection:I
-Landroid/telephony/ims/ImsStreamMediaProfile;->mAudioQuality:I
-Landroid/telephony/ims/ImsStreamMediaProfile;->mVideoDirection:I
-Landroid/telephony/ims/ImsVideoCallProvider;->getInterface()Lcom/android/ims/internal/IImsVideoCallProvider;
Landroid/telephony/mbms/IMbmsStreamingSessionCallback$Stub;-><init>()V
Landroid/telephony/mbms/IStreamingServiceCallback$Stub;-><init>()V
Landroid/telephony/mbms/vendor/IMbmsStreamingService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/telephony/mbms/vendor/IMbmsStreamingService;
@@ -180,58 +148,6 @@
Landroid/telephony/mbms/vendor/IMbmsStreamingService;->initialize(Landroid/telephony/mbms/IMbmsStreamingSessionCallback;I)I
Landroid/telephony/mbms/vendor/IMbmsStreamingService;->requestUpdateStreamingServices(ILjava/util/List;)I
Landroid/telephony/mbms/vendor/IMbmsStreamingService;->startStreaming(ILjava/lang/String;Landroid/telephony/mbms/IStreamingServiceCallback;)I
-Landroid/telephony/PhoneNumberUtils;->formatNumber(Ljava/lang/String;I)Ljava/lang/String;
-Landroid/telephony/PhoneNumberUtils;->isEmergencyNumber(ILjava/lang/String;)Z
-Landroid/telephony/PhoneNumberUtils;->isPotentialEmergencyNumber(ILjava/lang/String;)Z
-Landroid/telephony/PhoneNumberUtils;->isPotentialLocalEmergencyNumber(Landroid/content/Context;ILjava/lang/String;)Z
-Landroid/telephony/PhoneStateListener;-><init>(Ljava/lang/Integer;)V
-Landroid/telephony/PhoneStateListener;-><init>(Ljava/lang/Integer;Landroid/os/Looper;)V
-Landroid/telephony/PreciseCallState;->getBackgroundCallState()I
-Landroid/telephony/PreciseCallState;->getForegroundCallState()I
-Landroid/telephony/RadioAccessFamily;-><init>(II)V
-Landroid/telephony/RadioAccessFamily;->getRafFromNetworkType(I)I
-Landroid/telephony/Rlog;->d(Ljava/lang/String;Ljava/lang/String;)I
-Landroid/telephony/Rlog;->e(Ljava/lang/String;Ljava/lang/String;)I
-Landroid/telephony/Rlog;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
-Landroid/telephony/Rlog;->i(Ljava/lang/String;Ljava/lang/String;)I
-Landroid/telephony/ServiceState;->bitmaskHasTech(II)Z
-Landroid/telephony/ServiceState;->getDataRegState()I
-Landroid/telephony/ServiceState;->getDataRoaming()Z
-Landroid/telephony/ServiceState;->getRilDataRadioTechnology()I
-Landroid/telephony/ServiceState;->getVoiceNetworkType()I
-Landroid/telephony/ServiceState;->getVoiceRegState()I
-Landroid/telephony/ServiceState;->isCdma(I)Z
-Landroid/telephony/ServiceState;->isEmergencyOnly()Z
-Landroid/telephony/ServiceState;->isGsm(I)Z
-Landroid/telephony/ServiceState;->mergeServiceStates(Landroid/telephony/ServiceState;Landroid/telephony/ServiceState;)Landroid/telephony/ServiceState;
-Landroid/telephony/ServiceState;->rilRadioTechnologyToString(I)Ljava/lang/String;
-Landroid/telephony/SubscriptionInfo;->setDisplayName(Ljava/lang/CharSequence;)V
-Landroid/telephony/SubscriptionInfo;->setIconTint(I)V
-Landroid/telephony/SubscriptionManager;->clearDefaultsForInactiveSubIds()V
-Landroid/telephony/SubscriptionManager;->getDefaultVoicePhoneId()I
-Landroid/telephony/SubscriptionManager;->getResourcesForSubId(Landroid/content/Context;I)Landroid/content/res/Resources;
-Landroid/telephony/SubscriptionManager;->isActiveSubId(I)Z
-Landroid/telephony/SubscriptionManager;->isUsableSubIdValue(I)Z
-Landroid/telephony/SubscriptionManager;->isValidPhoneId(I)Z
-Landroid/telephony/SubscriptionManager;->isValidSlotIndex(I)Z
-Landroid/telephony/SubscriptionManager;->isValidSubscriptionId(I)Z
-Landroid/telephony/SubscriptionManager;->putPhoneIdAndSubIdExtra(Landroid/content/Intent;I)V
-Landroid/telephony/SubscriptionManager;->putPhoneIdAndSubIdExtra(Landroid/content/Intent;II)V
-Landroid/telephony/SubscriptionManager;->setDisplayName(Ljava/lang/String;IJ)I
-Landroid/telephony/SubscriptionManager;->setIconTint(II)I
-Landroid/telephony/TelephonyManager$MultiSimVariants;->DSDA:Landroid/telephony/TelephonyManager$MultiSimVariants;
-Landroid/telephony/TelephonyManager$MultiSimVariants;->DSDS:Landroid/telephony/TelephonyManager$MultiSimVariants;
-Landroid/telephony/TelephonyManager;->getIntAtIndex(Landroid/content/ContentResolver;Ljava/lang/String;I)I
-Landroid/telephony/TelephonyManager;->getIsimDomain()Ljava/lang/String;
-Landroid/telephony/TelephonyManager;->getNetworkTypeName()Ljava/lang/String;
-Landroid/telephony/TelephonyManager;->getPreferredNetworkType(I)I
-Landroid/telephony/TelephonyManager;->getServiceStateForSubscriber(I)Landroid/telephony/ServiceState;
-Landroid/telephony/TelephonyManager;->getVoiceMessageCount()I
-Landroid/telephony/TelephonyManager;->getVoiceNetworkType(I)I
-Landroid/telephony/TelephonyManager;->isImsRegistered()Z
-Landroid/telephony/TelephonyManager;->nvResetConfig(I)Z
-Landroid/telephony/TelephonyManager;->putIntAtIndex(Landroid/content/ContentResolver;Ljava/lang/String;II)Z
-Landroid/telephony/TelephonyManager;->setPreferredNetworkType(II)Z
Landroid/view/AppTransitionAnimationSpec;-><init>(ILandroid/graphics/GraphicBuffer;Landroid/graphics/Rect;)V
Landroid/view/BatchedInputEventReceiver;-><init>(Landroid/view/InputChannel;Landroid/os/Looper;Landroid/view/Choreographer;)V
Landroid/view/Choreographer;->getSfInstance()Landroid/view/Choreographer;
diff --git a/core/java/android/app/Activity.java b/core/java/android/app/Activity.java
index a0cfa8c..8d5b96b 100644
--- a/core/java/android/app/Activity.java
+++ b/core/java/android/app/Activity.java
@@ -6382,6 +6382,10 @@
}
void dumpInner(String prefix, FileDescriptor fd, PrintWriter writer, String[] args) {
+ if (args != null && args.length > 0 && args[0].equals("--autofill")) {
+ dumpAutofillManager(prefix, writer);
+ return;
+ }
writer.print(prefix); writer.print("Local Activity ");
writer.print(Integer.toHexString(System.identityHashCode(this)));
writer.println(" State:");
@@ -6409,16 +6413,20 @@
mHandler.getLooper().dump(new PrintWriterPrinter(writer), prefix);
+ dumpAutofillManager(prefix, writer);
+
+ ResourcesManager.getInstance().dump(prefix, writer);
+ }
+
+ void dumpAutofillManager(String prefix, PrintWriter writer) {
final AutofillManager afm = getAutofillManager();
if (afm != null) {
+ afm.dump(prefix, writer);
writer.print(prefix); writer.print("Autofill Compat Mode: ");
writer.println(isAutofillCompatibilityEnabled());
- afm.dump(prefix, writer);
} else {
writer.print(prefix); writer.println("No AutofillManager");
}
-
- ResourcesManager.getInstance().dump(prefix, writer);
}
/**
diff --git a/core/java/android/app/ActivityOptions.java b/core/java/android/app/ActivityOptions.java
index a056b24..63c61d3 100644
--- a/core/java/android/app/ActivityOptions.java
+++ b/core/java/android/app/ActivityOptions.java
@@ -960,14 +960,15 @@
}
/**
- * Sets the bounds (window size) that the activity should be launched in.
+ * Sets the bounds (window size and position) that the activity should be launched in.
* Rect position should be provided in pixels and in screen coordinates.
- * Set to null explicitly for fullscreen.
+ * Set to {@code null} to explicitly launch fullscreen.
* <p>
- * <strong>NOTE:<strong/> This value is ignored on devices that don't have
+ * <strong>NOTE:</strong> This value is ignored on devices that don't have
* {@link android.content.pm.PackageManager#FEATURE_FREEFORM_WINDOW_MANAGEMENT} or
* {@link android.content.pm.PackageManager#FEATURE_PICTURE_IN_PICTURE} enabled.
- * @param screenSpacePixelRect Launch bounds to use for the activity or null for fullscreen.
+ * @param screenSpacePixelRect launch bounds or {@code null} for fullscreen
+ * @return {@code this} {@link ActivityOptions} instance
*/
public ActivityOptions setLaunchBounds(@Nullable Rect screenSpacePixelRect) {
mLaunchBounds = screenSpacePixelRect != null ? new Rect(screenSpacePixelRect) : null;
diff --git a/core/java/android/app/ResourcesManager.java b/core/java/android/app/ResourcesManager.java
index 68869c65..6d1383a 100644
--- a/core/java/android/app/ResourcesManager.java
+++ b/core/java/android/app/ResourcesManager.java
@@ -125,10 +125,13 @@
}
}
+ private static final boolean ENABLE_APK_ASSETS_CACHE = true;
+
/**
* The ApkAssets we are caching and intend to hold strong references to.
*/
- private final LruCache<ApkKey, ApkAssets> mLoadedApkAssets = new LruCache<>(3);
+ private final LruCache<ApkKey, ApkAssets> mLoadedApkAssets =
+ (ENABLE_APK_ASSETS_CACHE) ? new LruCache<>(3) : null;
/**
* The ApkAssets that are being referenced in the wild that we can reuse, even if they aren't
@@ -316,9 +319,12 @@
private @NonNull ApkAssets loadApkAssets(String path, boolean sharedLib, boolean overlay)
throws IOException {
final ApkKey newKey = new ApkKey(path, sharedLib, overlay);
- ApkAssets apkAssets = mLoadedApkAssets.get(newKey);
- if (apkAssets != null) {
- return apkAssets;
+ ApkAssets apkAssets = null;
+ if (mLoadedApkAssets != null) {
+ apkAssets = mLoadedApkAssets.get(newKey);
+ if (apkAssets != null) {
+ return apkAssets;
+ }
}
// Optimistically check if this ApkAssets exists somewhere else.
@@ -326,7 +332,10 @@
if (apkAssetsRef != null) {
apkAssets = apkAssetsRef.get();
if (apkAssets != null) {
- mLoadedApkAssets.put(newKey, apkAssets);
+ if (mLoadedApkAssets != null) {
+ mLoadedApkAssets.put(newKey, apkAssets);
+ }
+
return apkAssets;
} else {
// Clean up the reference.
@@ -341,7 +350,11 @@
} else {
apkAssets = ApkAssets.loadFromPath(path, false /*system*/, sharedLib);
}
- mLoadedApkAssets.put(newKey, apkAssets);
+
+ if (mLoadedApkAssets != null) {
+ mLoadedApkAssets.put(newKey, apkAssets);
+ }
+
mCachedApkAssets.put(newKey, new WeakReference<>(apkAssets));
return apkAssets;
}
@@ -441,18 +454,22 @@
pw.println("ResourcesManager:");
pw.increaseIndent();
- pw.print("cached apks: total=");
- pw.print(mLoadedApkAssets.size());
- pw.print(" created=");
- pw.print(mLoadedApkAssets.createCount());
- pw.print(" evicted=");
- pw.print(mLoadedApkAssets.evictionCount());
- pw.print(" hit=");
- pw.print(mLoadedApkAssets.hitCount());
- pw.print(" miss=");
- pw.print(mLoadedApkAssets.missCount());
- pw.print(" max=");
- pw.print(mLoadedApkAssets.maxSize());
+ if (mLoadedApkAssets != null) {
+ pw.print("cached apks: total=");
+ pw.print(mLoadedApkAssets.size());
+ pw.print(" created=");
+ pw.print(mLoadedApkAssets.createCount());
+ pw.print(" evicted=");
+ pw.print(mLoadedApkAssets.evictionCount());
+ pw.print(" hit=");
+ pw.print(mLoadedApkAssets.hitCount());
+ pw.print(" miss=");
+ pw.print(mLoadedApkAssets.missCount());
+ pw.print(" max=");
+ pw.print(mLoadedApkAssets.maxSize());
+ } else {
+ pw.print("cached apks: 0 [cache disabled]");
+ }
pw.println();
pw.print("total apks: ");
diff --git a/core/java/android/app/assist/AssistStructure.java b/core/java/android/app/assist/AssistStructure.java
index 15bcbe3..173b766 100644
--- a/core/java/android/app/assist/AssistStructure.java
+++ b/core/java/android/app/assist/AssistStructure.java
@@ -41,18 +41,23 @@
import java.util.List;
/**
- * Assist data automatically created by the platform's implementation of assist and autofill.
+ * <p>This API automatically creates assist data from the platform's
+ * implementation of assist and autofill.
*
* <p>The structure is used for assist purposes when created by
* {@link android.app.Activity#onProvideAssistData}, {@link View#onProvideStructure(ViewStructure)},
* or {@link View#onProvideVirtualStructure(ViewStructure)}.
*
- * <p>The structure is used for autofill purposes when created by
+ * <p>The structure is also used for autofill purposes when created by
* {@link View#onProvideAutofillStructure(ViewStructure, int)},
* or {@link View#onProvideAutofillVirtualStructure(ViewStructure, int)}.
*
- * <p>For performance reasons, some properties of the assist data might be available just for assist
- * or autofill purposes; in those case, the property availability will be document in its javadoc.
+ * <p>For performance reasons, some properties of the assist data might only be available for
+ * assist or autofill purposes. In those cases, a property's availability will be documented
+ * in its javadoc.
+ *
+ * <p>To learn about using Autofill in your app, read the
+ * <a href="/guide/topics/text/autofill">Autofill Framework</a> guides.
*/
public class AssistStructure implements Parcelable {
static final String TAG = "AssistStructure";
diff --git a/core/java/android/content/ClipboardManager.java b/core/java/android/content/ClipboardManager.java
index 3b6c8c1..3fe17840 100644
--- a/core/java/android/content/ClipboardManager.java
+++ b/core/java/android/content/ClipboardManager.java
@@ -95,6 +95,9 @@
* Sets the current primary clip on the clipboard. This is the clip that
* is involved in normal cut and paste operations.
*
+ * <em>If the application is not the default IME or does not have input focus this will have
+ * no effect.</em>
+ *
* @param clip The clipped data item to set.
* @see #getPrimaryClip()
* @see #clearPrimaryClip()
@@ -112,6 +115,9 @@
/**
* Clears any current primary clip on the clipboard.
*
+ * <em>If the application is not the default IME or does not have input focus this will have
+ * no effect.</em>
+ *
* @see #setPrimaryClip(ClipData)
*/
public void clearPrimaryClip() {
@@ -125,6 +131,9 @@
/**
* Returns the current primary clip on the clipboard.
*
+ * <em>If the application is not the default IME or does not have input focus this return
+ * {@code null}.</em>
+ *
* @see #setPrimaryClip(ClipData)
*/
public @Nullable ClipData getPrimaryClip() {
@@ -139,6 +148,9 @@
* Returns a description of the current primary clip on the clipboard
* but not a copy of its data.
*
+ * <em>If the application is not the default IME or does not have input focus this return
+ * {@code null}.</em>
+ *
* @see #setPrimaryClip(ClipData)
*/
public @Nullable ClipDescription getPrimaryClipDescription() {
@@ -151,6 +163,9 @@
/**
* Returns true if there is currently a primary clip on the clipboard.
+ *
+ * <em>If the application is not the default IME or the does not have input focus this will
+ * return {@code false}.</em>
*/
public boolean hasPrimaryClip() {
try {
diff --git a/core/java/android/service/autofill/Dataset.java b/core/java/android/service/autofill/Dataset.java
index 5211767..f8408be 100644
--- a/core/java/android/service/autofill/Dataset.java
+++ b/core/java/android/service/autofill/Dataset.java
@@ -33,8 +33,13 @@
import java.util.regex.Pattern;
/**
- * A dataset object represents a group of fields (key / value pairs) used to autofill parts of a
- * screen.
+ * <p>A <code>Dataset</code> object represents a group of fields (key / value pairs) used
+ * to autofill parts of a screen.
+ *
+ * <p>For more information about the role of datasets in the autofill workflow, read
+ * <a href="/guide/topics/text/autofill-services">Build autofill services</a> and the
+ * <code><a href="/reference/android/service/autofill/AutofillService">AutofillService</a></code>
+ * documentation.
*
* <a name="BasicUsage"></a>
* <h3>Basic usage</h3>
@@ -88,10 +93,6 @@
* <li>All other datasets are hidden.
* </ol>
*
- * <a name="MoreInfo"></a>
- * <h3>More information</h3>
- * <p>See {@link android.service.autofill.AutofillService} for more information and examples about
- * the role of datasets in the autofill workflow.
*/
public final class Dataset implements Parcelable {
diff --git a/core/java/android/service/autofill/FillCallback.java b/core/java/android/service/autofill/FillCallback.java
index 0257891..1695c13 100644
--- a/core/java/android/service/autofill/FillCallback.java
+++ b/core/java/android/service/autofill/FillCallback.java
@@ -21,8 +21,11 @@
import android.os.RemoteException;
/**
- * Handles autofill requests from the {@link AutofillService} into the {@link Activity} being
- * autofilled.
+ * <p><code>FillCallback</code> handles autofill requests from the {@link AutofillService} into
+ * the {@link Activity} being autofilled.
+ *
+ * <p>To learn about using Autofill services in your app, read
+ * <a href="/guide/topics/text/autofill-services">Build autofill services</a>.
*/
public final class FillCallback {
private final IFillCallback mCallback;
diff --git a/core/java/android/text/Layout.java b/core/java/android/text/Layout.java
index ca952da..33c977b 100644
--- a/core/java/android/text/Layout.java
+++ b/core/java/android/text/Layout.java
@@ -50,9 +50,9 @@
public abstract class Layout {
/** @hide */
@IntDef(prefix = { "BREAK_STRATEGY_" }, value = {
- BREAK_STRATEGY_SIMPLE,
- BREAK_STRATEGY_HIGH_QUALITY,
- BREAK_STRATEGY_BALANCED
+ NativeLineBreaker.BREAK_STRATEGY_SIMPLE,
+ NativeLineBreaker.BREAK_STRATEGY_HIGH_QUALITY,
+ NativeLineBreaker.BREAK_STRATEGY_BALANCED
})
@Retention(RetentionPolicy.SOURCE)
public @interface BreakStrategy {}
@@ -63,19 +63,20 @@
* before it (which yields a more consistent user experience when editing), but layout may not
* be the highest quality.
*/
- public static final int BREAK_STRATEGY_SIMPLE = 0;
+ public static final int BREAK_STRATEGY_SIMPLE = NativeLineBreaker.BREAK_STRATEGY_SIMPLE;
/**
* Value for break strategy indicating high quality line breaking, including automatic
* hyphenation and doing whole-paragraph optimization of line breaks.
*/
- public static final int BREAK_STRATEGY_HIGH_QUALITY = 1;
+ public static final int BREAK_STRATEGY_HIGH_QUALITY =
+ NativeLineBreaker.BREAK_STRATEGY_HIGH_QUALITY;
/**
* Value for break strategy indicating balanced line breaking. The breaks are chosen to
* make all lines as close to the same length as possible, including automatic hyphenation.
*/
- public static final int BREAK_STRATEGY_BALANCED = 2;
+ public static final int BREAK_STRATEGY_BALANCED = NativeLineBreaker.BREAK_STRATEGY_BALANCED;
/** @hide */
@IntDef(prefix = { "HYPHENATION_FREQUENCY_" }, value = {
@@ -93,29 +94,32 @@
* layout and there is otherwise no valid break. Soft hyphens are ignored and will not be used
* as suggestions for potential line breaks.
*/
- public static final int HYPHENATION_FREQUENCY_NONE = 0;
+ public static final int HYPHENATION_FREQUENCY_NONE =
+ NativeLineBreaker.HYPHENATION_FREQUENCY_NONE;
/**
* Value for hyphenation frequency indicating a light amount of automatic hyphenation, which
* is a conservative default. Useful for informal cases, such as short sentences or chat
* messages.
*/
- public static final int HYPHENATION_FREQUENCY_NORMAL = 1;
+ public static final int HYPHENATION_FREQUENCY_NORMAL =
+ NativeLineBreaker.HYPHENATION_FREQUENCY_NORMAL;
/**
* Value for hyphenation frequency indicating the full amount of automatic hyphenation, typical
* in typography. Useful for running text and where it's important to put the maximum amount of
* text in a screen with limited space.
*/
- public static final int HYPHENATION_FREQUENCY_FULL = 2;
+ public static final int HYPHENATION_FREQUENCY_FULL =
+ NativeLineBreaker.HYPHENATION_FREQUENCY_FULL;
private static final ParagraphStyle[] NO_PARA_SPANS =
ArrayUtils.emptyArray(ParagraphStyle.class);
/** @hide */
@IntDef(prefix = { "JUSTIFICATION_MODE_" }, value = {
- JUSTIFICATION_MODE_NONE,
- JUSTIFICATION_MODE_INTER_WORD
+ NativeLineBreaker.JUSTIFICATION_MODE_NONE,
+ NativeLineBreaker.JUSTIFICATION_MODE_INTER_WORD
})
@Retention(RetentionPolicy.SOURCE)
public @interface JustificationMode {}
@@ -123,12 +127,13 @@
/**
* Value for justification mode indicating no justification.
*/
- public static final int JUSTIFICATION_MODE_NONE = 0;
+ public static final int JUSTIFICATION_MODE_NONE = NativeLineBreaker.JUSTIFICATION_MODE_NONE;
/**
* Value for justification mode indicating the text is justified by stretching word spacing.
*/
- public static final int JUSTIFICATION_MODE_INTER_WORD = 1;
+ public static final int JUSTIFICATION_MODE_INTER_WORD =
+ NativeLineBreaker.JUSTIFICATION_MODE_INTER_WORD;
/*
* Line spacing multiplier for default line spacing.
diff --git a/core/java/android/text/NativeLineBreaker.java b/core/java/android/text/NativeLineBreaker.java
index a31b336..2bcfa5f 100644
--- a/core/java/android/text/NativeLineBreaker.java
+++ b/core/java/android/text/NativeLineBreaker.java
@@ -17,6 +17,7 @@
package android.text;
import android.annotation.FloatRange;
+import android.annotation.IntDef;
import android.annotation.IntRange;
import android.annotation.NonNull;
import android.annotation.Nullable;
@@ -26,12 +27,233 @@
import libcore.util.NativeAllocationRegistry;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
/**
* A native implementation of the line breaker.
* TODO: Consider to make this class public.
* @hide
*/
public class NativeLineBreaker {
+ @IntDef(prefix = { "BREAK_STRATEGY_" }, value = {
+ BREAK_STRATEGY_SIMPLE,
+ BREAK_STRATEGY_HIGH_QUALITY,
+ BREAK_STRATEGY_BALANCED
+ })
+ @Retention(RetentionPolicy.SOURCE)
+ public @interface BreakStrategy {}
+
+ /**
+ * Value for break strategy indicating simple line breaking. Automatic hyphens are not added
+ * (though soft hyphens are respected), and modifying text generally doesn't affect the layout
+ * before it (which yields a more consistent user experience when editing), but layout may not
+ * be the highest quality.
+ */
+ public static final int BREAK_STRATEGY_SIMPLE = 0;
+
+ /**
+ * Value for break strategy indicating high quality line breaking, including automatic
+ * hyphenation and doing whole-paragraph optimization of line breaks.
+ */
+ public static final int BREAK_STRATEGY_HIGH_QUALITY = 1;
+
+ /**
+ * Value for break strategy indicating balanced line breaking. The breaks are chosen to
+ * make all lines as close to the same length as possible, including automatic hyphenation.
+ */
+ public static final int BREAK_STRATEGY_BALANCED = 2;
+
+ @IntDef(prefix = { "HYPHENATION_FREQUENCY_" }, value = {
+ HYPHENATION_FREQUENCY_NORMAL,
+ HYPHENATION_FREQUENCY_FULL,
+ HYPHENATION_FREQUENCY_NONE
+ })
+ @Retention(RetentionPolicy.SOURCE)
+ public @interface HyphenationFrequency {}
+
+ /**
+ * Value for hyphenation frequency indicating no automatic hyphenation. Useful
+ * for backward compatibility, and for cases where the automatic hyphenation algorithm results
+ * in incorrect hyphenation. Mid-word breaks may still happen when a word is wider than the
+ * layout and there is otherwise no valid break. Soft hyphens are ignored and will not be used
+ * as suggestions for potential line breaks.
+ */
+ public static final int HYPHENATION_FREQUENCY_NONE = 0;
+
+ /**
+ * Value for hyphenation frequency indicating a light amount of automatic hyphenation, which
+ * is a conservative default. Useful for informal cases, such as short sentences or chat
+ * messages.
+ */
+ public static final int HYPHENATION_FREQUENCY_NORMAL = 1;
+
+ /**
+ * Value for hyphenation frequency indicating the full amount of automatic hyphenation, typical
+ * in typography. Useful for running text and where it's important to put the maximum amount of
+ * text in a screen with limited space.
+ */
+ public static final int HYPHENATION_FREQUENCY_FULL = 2;
+
+ @IntDef(prefix = { "JUSTIFICATION_MODE_" }, value = {
+ JUSTIFICATION_MODE_NONE,
+ JUSTIFICATION_MODE_INTER_WORD
+ })
+ @Retention(RetentionPolicy.SOURCE)
+ public @interface JustificationMode {}
+
+ /**
+ * Value for justification mode indicating no justification.
+ */
+ public static final int JUSTIFICATION_MODE_NONE = 0;
+
+ /**
+ * Value for justification mode indicating the text is justified by stretching word spacing.
+ */
+ public static final int JUSTIFICATION_MODE_INTER_WORD = 1;
+
+ /**
+ * A builder class of NativeLineBreaker.
+ */
+ public static class Builder {
+ private @BreakStrategy int mBreakStrategy = BREAK_STRATEGY_SIMPLE;
+ private @HyphenationFrequency int mHyphenationFrequency = HYPHENATION_FREQUENCY_NONE;
+ private @JustificationMode int mJustified = JUSTIFICATION_MODE_NONE;
+ private @Nullable int[] mIndents = null;
+
+ /**
+ * Construct a builder class.
+ */
+ public Builder() {}
+
+ /**
+ * Set break strategy.
+ */
+ public Builder setBreakStrategy(@BreakStrategy int breakStrategy) {
+ mBreakStrategy = breakStrategy;
+ return this;
+ }
+
+ /**
+ * Set hyphenation frequency.
+ */
+ public Builder setHyphenationFrequency(@HyphenationFrequency int hyphenationFrequency) {
+ mHyphenationFrequency = hyphenationFrequency;
+ return this;
+ }
+
+ /**
+ * Set whether the text is justified.
+ */
+ public Builder setJustified(@JustificationMode int justified) {
+ mJustified = justified;
+ return this;
+ }
+
+ /**
+ * Set indents for entire text.
+ *
+ * Sets the total (left + right) indents in pixel per lines.
+ */
+ public Builder setIndents(@Nullable int[] indents) {
+ mIndents = indents;
+ return this;
+ }
+
+ /**
+ * Returns the NativeLineBreaker with given parameters.
+ */
+ NativeLineBreaker build() {
+ return new NativeLineBreaker(mBreakStrategy, mHyphenationFrequency, mJustified,
+ mIndents);
+ }
+ }
+
+ /**
+ * Line breaking constraints for single paragraph.
+ */
+ public static class ParagraphConstraints {
+ private @FloatRange(from = 0.0f) float mWidth = 0;
+ private @FloatRange(from = 0.0f) float mFirstWidth = 0;
+ private @IntRange(from = 0) int mFirstWidthLineCount = 0;
+ private @Nullable int[] mVariableTabStops = null;
+ private @IntRange(from = 0) int mDefaultTabStop = 0;
+
+ public ParagraphConstraints() {}
+
+ /**
+ * Set width for this paragraph.
+ */
+ public void setWidth(@FloatRange(from = 0.0f) float width) {
+ mWidth = width;
+ }
+
+ /**
+ * Set indent for this paragraph.
+ *
+ * @param firstWidth the line width of the starting of the paragraph
+ * @param firstWidthLineCount the number of lines that applies the firstWidth
+ */
+ public void setIndent(@FloatRange(from = 0.0f) float firstWidth,
+ @IntRange(from = 0) int firstWidthLineCount) {
+ mFirstWidth = firstWidth;
+ mFirstWidthLineCount = firstWidthLineCount;
+ }
+
+ /**
+ * Set tab stops for this paragraph.
+ *
+ * @param tabStops the array of pixels of tap stopping position
+ * @param defaultTabStop pixels of the default tab stopping position
+ */
+ public void setTabStops(@Nullable int[] tabStops, @IntRange(from = 0) int defaultTabStop) {
+ mVariableTabStops = tabStops;
+ mDefaultTabStop = defaultTabStop;
+ }
+
+ /**
+ * Return the width for this paragraph in pixels.
+ */
+ public @FloatRange(from = 0.0f) float getWidth() {
+ return mWidth;
+ }
+
+ /**
+ * Return the first line's width for this paragraph in pixel.
+ *
+ * @see #setIndent(float, int)
+ */
+ public @FloatRange(from = 0.0f) float getFirstWidth() {
+ return mFirstWidth;
+ }
+
+ /**
+ * Return the number of lines to apply the first line's width.
+ *
+ * @see #setIndent(float, int)
+ */
+ public @IntRange(from = 0) int getFirstWidthLineCount() {
+ return mFirstWidthLineCount;
+ }
+
+ /**
+ * Returns the array of tab stops in pixels.
+ *
+ * @see #setTabStops(int[], int)
+ */
+ public @Nullable int[] getTabStops() {
+ return mVariableTabStops;
+ }
+
+ /**
+ * Returns the default tab stops in pixels.
+ *
+ * @see #setTabStop(int[], int)
+ */
+ public @IntRange(from = 0) int getDefaultTabStop() {
+ return mDefaultTabStop;
+ }
+ }
/**
* A result object of a line breaking
@@ -43,6 +265,7 @@
public float[] widths = new float[INITIAL_SIZE];
public float[] ascents = new float[INITIAL_SIZE];
public float[] descents = new float[INITIAL_SIZE];
+ // TODO: Introduce Hyphenator for explaining the meaning of flags.
public int[] flags = new int[INITIAL_SIZE];
// breaks, widths, and flags should all have the same length
}
@@ -53,54 +276,44 @@
private final long mNativePtr;
/**
- * A constructor of NativeLineBreaker
+ * Use Builder instead.
*/
- public NativeLineBreaker(@Layout.BreakStrategy int breakStrategy,
- @Layout.HyphenationFrequency int hyphenationFrequency,
- boolean justify, @Nullable int[] indents) {
- mNativePtr = nInit(breakStrategy, hyphenationFrequency, justify, indents);
+ private NativeLineBreaker(@BreakStrategy int breakStrategy,
+ @HyphenationFrequency int hyphenationFrequency, @JustificationMode int justify,
+ @Nullable int[] indents) {
+ mNativePtr = nInit(breakStrategy, hyphenationFrequency,
+ justify == JUSTIFICATION_MODE_INTER_WORD, indents);
sRegistry.registerNativeAllocation(this, mNativePtr);
}
/**
- * Break text into lines
+ * Break paragraph into lines.
*
- * @param chars an array of characters
+ * The result is filled to out param.
+ *
* @param measuredPara a result of the text measurement
- * @param length a length of the target text from the begining
- * @param firstWidth a width of the first width of the line in this paragraph
- * @param firstWidthLineCount a number of lines that has the length of the firstWidth
- * @param restWidth a width of the rest of the lines.
- * @param variableTabStops an array of tab stop widths
- * @param defaultTabStop a width of the tab stop
- * @param indentsOffset an offset of the indents to be used.
- * @param out output buffer
- * @return a number of the lines
+ * @param constraints for a single paragraph
+ * @param lineNumber a line number of this paragraph
+ * @param out object to set line break information for the given paragraph
*/
- @NonNull public int computeLineBreaks(
- @NonNull char[] chars,
+ public void computeLineBreaks(
@NonNull NativeMeasuredParagraph measuredPara,
- @IntRange(from = 0) int length,
- @FloatRange(from = 0.0f) float firstWidth,
- @IntRange(from = 0) int firstWidthLineCount,
- @FloatRange(from = 0.0f) float restWidth,
- @Nullable int[] variableTabStops,
- int defaultTabStop,
- @IntRange(from = 0) int indentsOffset,
+ @NonNull ParagraphConstraints constraints,
+ @IntRange(from = 0) int lineNumber,
@NonNull LineBreaks out) {
- return nComputeLineBreaks(
+ out.breakCount = nComputeLineBreaks(
mNativePtr,
// Inputs
- chars,
+ measuredPara.getChars(),
measuredPara.getNativePtr(),
- length,
- firstWidth,
- firstWidthLineCount,
- restWidth,
- variableTabStops,
- defaultTabStop,
- indentsOffset,
+ measuredPara.getChars().length,
+ constraints.mFirstWidth,
+ constraints.mFirstWidthLineCount,
+ constraints.mWidth,
+ constraints.mVariableTabStops,
+ constraints.mDefaultTabStop,
+ lineNumber,
// Outputs
out,
@@ -114,10 +327,8 @@
}
@FastNative
- private static native long nInit(
- @Layout.BreakStrategy int breakStrategy,
- @Layout.HyphenationFrequency int hyphenationFrequency,
- boolean isJustified,
+ private static native long nInit(@BreakStrategy int breakStrategy,
+ @HyphenationFrequency int hyphenationFrequency, boolean isJustified,
@Nullable int[] indents);
@CriticalNative
diff --git a/core/java/android/text/NativeMeasuredParagraph.java b/core/java/android/text/NativeMeasuredParagraph.java
index d03674f..bfdccca 100644
--- a/core/java/android/text/NativeMeasuredParagraph.java
+++ b/core/java/android/text/NativeMeasuredParagraph.java
@@ -36,10 +36,19 @@
NativeMeasuredParagraph.class.getClassLoader(), nGetReleaseFunc(), 1024);
private long mNativePtr;
+ private @NonNull char[] mChars;
// Use builder instead.
- private NativeMeasuredParagraph(long ptr) {
+ private NativeMeasuredParagraph(long ptr, @NonNull char[] chars) {
mNativePtr = ptr;
+ mChars = chars;
+ }
+
+ /**
+ * Returns a characters of this paragraph.
+ */
+ public char[] getChars() {
+ return mChars;
}
/**
@@ -126,7 +135,7 @@
try {
long ptr = nBuildNativeMeasuredParagraph(mNativePtr, text, computeHyphenation,
computeLayout);
- NativeMeasuredParagraph res = new NativeMeasuredParagraph(ptr);
+ NativeMeasuredParagraph res = new NativeMeasuredParagraph(ptr, text);
sRegistry.registerNativeAllocation(res, ptr);
return res;
} finally {
diff --git a/core/java/android/text/StaticLayout.java b/core/java/android/text/StaticLayout.java
index dc01178..128f860 100644
--- a/core/java/android/text/StaticLayout.java
+++ b/core/java/android/text/StaticLayout.java
@@ -626,11 +626,16 @@
indents = null;
}
- final NativeLineBreaker lineBreaker = new NativeLineBreaker(
- b.mBreakStrategy, b.mHyphenationFrequency,
+ final NativeLineBreaker lineBreaker = new NativeLineBreaker.Builder()
+ .setBreakStrategy(b.mBreakStrategy)
+ .setHyphenationFrequency(b.mHyphenationFrequency)
// TODO: Support more justification mode, e.g. letter spacing, stretching.
- b.mJustificationMode != Layout.JUSTIFICATION_MODE_NONE,
- indents);
+ .setJustified(b.mJustificationMode)
+ .setIndents(indents)
+ .build();
+
+ NativeLineBreaker.ParagraphConstraints constraints =
+ new NativeLineBreaker.ParagraphConstraints();
PrecomputedText.ParagraphInfo[] paragraphInfo = null;
final Spanned spanned = (source instanceof Spanned) ? (Spanned) source : null;
@@ -721,18 +726,14 @@
final char[] chs = measuredPara.getChars();
final int[] spanEndCache = measuredPara.getSpanEndCache().getRawArray();
final int[] fmCache = measuredPara.getFontMetrics().getRawArray();
- int breakCount = lineBreaker.computeLineBreaks(
- measuredPara.getChars(),
- measuredPara.getNativeMeasuredParagraph(),
- paraEnd - paraStart,
- firstWidth,
- firstWidthLineCount,
- restWidth,
- variableTabStops,
- TAB_INCREMENT,
- mLineCount,
- lineBreaks);
+ constraints.setWidth(restWidth);
+ constraints.setIndent(firstWidth, firstWidthLineCount);
+ constraints.setTabStops(variableTabStops, TAB_INCREMENT);
+
+ lineBreaker.computeLineBreaks(measuredPara.getNativeMeasuredParagraph(),
+ constraints, mLineCount, lineBreaks);
+ int breakCount = lineBreaks.breakCount;
final int[] breaks = lineBreaks.breaks;
final float[] lineWidths = lineBreaks.widths;
final float[] ascents = lineBreaks.ascents;
diff --git a/core/java/android/util/FeatureFlagUtils.java b/core/java/android/util/FeatureFlagUtils.java
index 887d96e..0f8ca44 100644
--- a/core/java/android/util/FeatureFlagUtils.java
+++ b/core/java/android/util/FeatureFlagUtils.java
@@ -40,7 +40,7 @@
static {
DEFAULT_FLAGS = new HashMap<>();
DEFAULT_FLAGS.put("settings_battery_display_app_list", "false");
- DEFAULT_FLAGS.put("settings_condition_manager_v2", "false");
+ DEFAULT_FLAGS.put("settings_condition_manager_v2", "true");
DEFAULT_FLAGS.put("settings_bluetooth_while_driving", "false");
DEFAULT_FLAGS.put("settings_audio_switcher", "true");
DEFAULT_FLAGS.put("settings_systemui_theme", "true");
diff --git a/core/java/android/view/KeyEvent.java b/core/java/android/view/KeyEvent.java
index 0115d26..715440c 100644
--- a/core/java/android/view/KeyEvent.java
+++ b/core/java/android/view/KeyEvent.java
@@ -890,6 +890,7 @@
*/
public static final int ACTION_UP = 1;
/**
+ * @deprecated No longer used by the input system.
* {@link #getAction} value: multiple duplicate key events have
* occurred in a row, or a complex string is being delivered. If the
* key code is not {#link {@link #KEYCODE_UNKNOWN} then the
@@ -898,6 +899,7 @@
* Otherwise, if the key code is {@link #KEYCODE_UNKNOWN}, then
* this is a sequence of characters as returned by {@link #getCharacters}.
*/
+ @Deprecated
public static final int ACTION_MULTIPLE = 2;
/**
@@ -2474,7 +2476,10 @@
*
* @return Returns a String of 1 or more characters associated with
* the event.
+ *
+ * @deprecated no longer used by the input system.
*/
+ @Deprecated
public final String getCharacters() {
return mCharacters;
}
@@ -3032,6 +3037,7 @@
mFlags = in.readInt();
mDownTime = in.readLong();
mEventTime = in.readLong();
+ mCharacters = in.readString();
}
@Override
@@ -3049,5 +3055,6 @@
out.writeInt(mFlags);
out.writeLong(mDownTime);
out.writeLong(mEventTime);
+ out.writeString(mCharacters);
}
}
diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java
index f3e2edd..d9057de 100644
--- a/core/java/android/view/View.java
+++ b/core/java/android/view/View.java
@@ -8747,14 +8747,10 @@
info.setContentDescription(getContentDescription());
info.setEnabled(isEnabled());
- info.setClickable(isClickable());
- info.setFocusable(isFocusable());
info.setScreenReaderFocusable(isScreenReaderFocusable());
info.setFocused(isFocused());
info.setAccessibilityFocused(isAccessibilityFocused());
info.setSelected(isSelected());
- info.setLongClickable(isLongClickable());
- info.setContextClickable(isContextClickable());
info.setLiveRegion(getAccessibilityLiveRegion());
if ((mTooltipInfo != null) && (mTooltipInfo.mTooltipText != null)) {
info.setTooltipText(mTooltipInfo.mTooltipText);
diff --git a/core/java/android/view/ViewStructure.java b/core/java/android/view/ViewStructure.java
index 3f7ab2a..38dcdd3 100644
--- a/core/java/android/view/ViewStructure.java
+++ b/core/java/android/view/ViewStructure.java
@@ -33,9 +33,14 @@
import java.util.List;
/**
- * Container for storing additional per-view data generated by {@link View#onProvideStructure
+ * <p><code>ViewStructure</code> is a container for storing additional
+ * per-view data generated by {@link View#onProvideStructure
* View.onProvideStructure} and {@link View#onProvideAutofillStructure
* View.onProvideAutofillStructure}.
+ *
+ * <p>To learn more about using Autofill in your app, read the
+ * <a href="/guide/topics/text/autofill">Autofill Framework</a> guides.
+ *
*/
public abstract class ViewStructure {
diff --git a/core/java/android/view/accessibility/AccessibilityNodeInfo.java b/core/java/android/view/accessibility/AccessibilityNodeInfo.java
index f2429bd..17bb04f 100644
--- a/core/java/android/view/accessibility/AccessibilityNodeInfo.java
+++ b/core/java/android/view/accessibility/AccessibilityNodeInfo.java
@@ -1159,7 +1159,13 @@
}
private boolean hasActionWithId(int actionId) {
- return getActionList().stream().anyMatch(action -> action.getId() == actionId);
+ List<AccessibilityAction> actions = getActionList();
+ for (int i = 0; i < actions.size(); i++) {
+ if (actions.get(i).getId() == actionId) {
+ return true;
+ }
+ }
+ return false;
}
/**
@@ -1761,7 +1767,7 @@
* @return True if the node is focusable.
*/
public boolean isFocusable() {
- return hasActionWithId(ACTION_FOCUS);
+ return hasActionWithId(ACTION_FOCUS) || hasActionWithId(ACTION_CLEAR_FOCUS);
}
/**
diff --git a/core/java/android/view/autofill/AutofillManager.java b/core/java/android/view/autofill/AutofillManager.java
index 2cc175f..2cd4b2b 100644
--- a/core/java/android/view/autofill/AutofillManager.java
+++ b/core/java/android/view/autofill/AutofillManager.java
@@ -81,11 +81,16 @@
import sun.misc.Cleaner;
/**
- * The {@link AutofillManager} provides ways for apps and custom views to integrate with the
- * Autofill Framework lifecycle.
+ * <p>The {@link AutofillManager} class provides ways for apps and custom views to
+ * integrate with the Autofill Framework lifecycle.
+ *
+ * <p>To learn about using Autofill in your app, read
+ * the <a href="/guide/topics/text/autofill">Autofill Framework</a> guides.
+ *
+ * <h3 id="autofill-lifecycle">Autofill lifecycle</h3>
*
* <p>The autofill lifecycle starts with the creation of an autofill context associated with an
- * activity context; the autofill context is created when one of the following methods is called for
+ * activity context. The autofill context is created when one of the following methods is called for
* the first time in an activity context, and the current user has an enabled autofill service:
*
* <ul>
@@ -94,7 +99,7 @@
* <li>{@link #requestAutofill(View)}
* </ul>
*
- * <p>Tipically, the context is automatically created when the first view of the activity is
+ * <p>Typically, the context is automatically created when the first view of the activity is
* focused because {@code View.onFocusChanged()} indirectly calls
* {@link #notifyViewEntered(View)}. App developers can call {@link #requestAutofill(View)} to
* explicitly create it (for example, a custom view developer could offer a contextual menu action
@@ -138,7 +143,9 @@
* shows an autofill save UI if the value of savable views have changed. If the user selects the
* option to Save, the current value of the views is then sent to the autofill service.
*
- * <p>It is safe to call into its methods from any thread.
+ * <h3 id="additional-notes">Additional notes</h3>
+ *
+ * <p>It is safe to call <code>AutofillManager</code> methods from any thread.
*/
@SystemService(Context.AUTOFILL_MANAGER_SERVICE)
@RequiresFeature(PackageManager.FEATURE_AUTOFILL)
@@ -2152,7 +2159,11 @@
pw.print(pfx); pw.print("sessionId: "); pw.println(mSessionId);
pw.print(pfx); pw.print("state: "); pw.println(getStateAsStringLocked());
pw.print(pfx); pw.print("context: "); pw.println(mContext);
- pw.print(pfx); pw.print("client: "); pw.println(getClient());
+ final AutofillClient client = getClient();
+ if (client != null) {
+ pw.print(pfx); pw.print("client: "); pw.print(client);
+ pw.print(" ("); pw.print(client.autofillClientGetActivityToken()); pw.println(')');
+ }
pw.print(pfx); pw.print("enabled: "); pw.println(mEnabled);
pw.print(pfx); pw.print("hasService: "); pw.println(mService != null);
pw.print(pfx); pw.print("hasCallback: "); pw.println(mCallback != null);
@@ -2172,8 +2183,24 @@
pw.print(pfx); pw.print("entered ids: "); pw.println(mEnteredIds);
pw.print(pfx); pw.print("save trigger id: "); pw.println(mSaveTriggerId);
pw.print(pfx); pw.print("save on finish(): "); pw.println(mSaveOnFinish);
- pw.print(pfx); pw.print("compat mode enabled: "); pw.println(
- isCompatibilityModeEnabledLocked());
+ pw.print(pfx); pw.print("compat mode enabled: ");
+ synchronized (mLock) {
+ if (mCompatibilityBridge != null) {
+ final String pfx2 = pfx + " ";
+ pw.println("true");
+ pw.print(pfx2); pw.print("windowId: ");
+ pw.println(mCompatibilityBridge.mFocusedWindowId);
+ pw.print(pfx2); pw.print("nodeId: ");
+ pw.println(mCompatibilityBridge.mFocusedNodeId);
+ pw.print(pfx2); pw.print("virtualId: ");
+ pw.println(AccessibilityNodeInfo
+ .getVirtualDescendantId(mCompatibilityBridge.mFocusedNodeId));
+ pw.print(pfx2); pw.print("focusedBounds: ");
+ pw.println(mCompatibilityBridge.mFocusedBounds);
+ } else {
+ pw.println("false");
+ }
+ }
pw.print(pfx); pw.print("debug: "); pw.print(sDebug);
pw.print(" verbose: "); pw.println(sVerbose);
}
@@ -2311,8 +2338,9 @@
if (sVerbose) {
// NOTE: this is waaay spammy, but that's life.
Log.v(TAG, "onAccessibilityEvent(" + AccessibilityEvent.eventTypeToString(type)
- + "): "
- + AccessibilityNodeInfo.getVirtualDescendantId(event.getSourceNodeId()));
+ + "): virtualId="
+ + AccessibilityNodeInfo.getVirtualDescendantId(event.getSourceNodeId())
+ + ", client=" + getClient());
}
switch (type) {
case AccessibilityEvent.TYPE_VIEW_FOCUSED: {
diff --git a/core/java/android/widget/RelativeLayout.java b/core/java/android/widget/RelativeLayout.java
index bbdf15c..d1de498 100644
--- a/core/java/android/widget/RelativeLayout.java
+++ b/core/java/android/widget/RelativeLayout.java
@@ -1247,7 +1247,10 @@
private int[] mRules = new int[VERB_COUNT];
private int[] mInitialRules = new int[VERB_COUNT];
- private int mLeft, mTop, mRight, mBottom;
+ private int mLeft;
+ private int mTop;
+ private int mRight;
+ private int mBottom;
/**
* Whether this view had any relative rules modified following the most
diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java
index 5cadbe4..3941d6a 100644
--- a/core/java/android/widget/TextView.java
+++ b/core/java/android/widget/TextView.java
@@ -421,7 +421,9 @@
private Editable.Factory mEditableFactory = Editable.Factory.getInstance();
private Spannable.Factory mSpannableFactory = Spannable.Factory.getInstance();
- private float mShadowRadius, mShadowDx, mShadowDy;
+ private float mShadowRadius;
+ private float mShadowDx;
+ private float mShadowDy;
private int mShadowColor;
private boolean mPreDrawRegistered;
@@ -717,8 +719,10 @@
private Scroller mScroller;
private TextPaint mTempTextPaint;
- private BoringLayout.Metrics mBoring, mHintBoring;
- private BoringLayout mSavedLayout, mSavedHintLayout;
+ private BoringLayout.Metrics mBoring;
+ private BoringLayout.Metrics mHintBoring;
+ private BoringLayout mSavedLayout;
+ private BoringLayout mSavedHintLayout;
private TextDirectionHeuristic mTextDir;
diff --git a/core/java/android/widget/Toast.java b/core/java/android/widget/Toast.java
index 7f481e3..f6071d8 100644
--- a/core/java/android/widget/Toast.java
+++ b/core/java/android/widget/Toast.java
@@ -355,7 +355,8 @@
final Handler mHandler;
int mGravity;
- int mX, mY;
+ int mX;
+ int mY;
float mHorizontalMargin;
float mVerticalMargin;
diff --git a/core/java/com/android/internal/widget/MessagingLinearLayout.java b/core/java/com/android/internal/widget/MessagingLinearLayout.java
index 64b1f24..0c8613b 100644
--- a/core/java/com/android/internal/widget/MessagingLinearLayout.java
+++ b/core/java/com/android/internal/widget/MessagingLinearLayout.java
@@ -111,14 +111,16 @@
final int childHeight = child.getMeasuredHeight();
int newHeight = Math.max(totalHeight, totalHeight + childHeight + lp.topMargin +
lp.bottomMargin + spacing);
- first = false;
int measureType = MessagingChild.MEASURED_NORMAL;
if (messagingChild != null) {
measureType = messagingChild.getMeasuredType();
linesRemaining -= messagingChild.getConsumedLines();
}
- boolean isShortened = measureType == MessagingChild.MEASURED_SHORTENED;
- boolean isTooSmall = measureType == MessagingChild.MEASURED_TOO_SMALL;
+
+ // We never measure the first item as too small, we want to at least show something.
+ boolean isTooSmall = measureType == MessagingChild.MEASURED_TOO_SMALL && !first;
+ boolean isShortened = measureType == MessagingChild.MEASURED_SHORTENED
+ || measureType == MessagingChild.MEASURED_TOO_SMALL && first;
if (newHeight <= targetHeight && !isTooSmall) {
totalHeight = newHeight;
measuredWidth = Math.max(measuredWidth,
@@ -131,6 +133,7 @@
} else {
break;
}
+ first = false;
}
setMeasuredDimension(
diff --git a/core/res/res/values-af/strings.xml b/core/res/res/values-af/strings.xml
index c93d266..703ecf7 100644
--- a/core/res/res/values-af/strings.xml
+++ b/core/res/res/values-af/strings.xml
@@ -300,6 +300,18 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"Liggaamsensors"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"toegang te verkry tot sensordata oor jou lewenstekens"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"Gee <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> toegang tot sensordata oor jou lewenstekens?"</string>
+ <!-- no translation found for permgrouplab_aural (965607064083134896) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_aural (4870189506255958055) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_aural (6787926123071735620) -->
+ <skip />
+ <!-- no translation found for permgrouplab_visual (8030190588123857921) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_visual (3415827902566663546) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_visual (6907523945030290376) -->
+ <skip />
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Venster-inhoud ophaal"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Die inhoud ondersoek van \'n venster waarmee jy interaksie het."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Verken deur raak aanskakel"</string>
@@ -494,6 +506,34 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"Laat die program toe om metodes te benut om vingerafdruksjablone vir gebruik by te voeg en uit te vee."</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"gebruik vingerafdrukhardeware"</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"Laat die program toe om vingerafdrukhardeware vir stawing te gebruik"</string>
+ <!-- no translation found for permlab_audioRead (6617225220728465565) -->
+ <skip />
+ <!-- no translation found for permdesc_audioRead (5034032570243484805) -->
+ <skip />
+ <!-- no translation found for permlab_audioWrite (2661772059799779292) -->
+ <skip />
+ <!-- no translation found for permdesc_audioWrite (8888544708166230494) -->
+ <skip />
+ <!-- no translation found for permlab_videoRead (9182618678674737229) -->
+ <skip />
+ <!-- no translation found for permdesc_videoRead (7045676429859396194) -->
+ <skip />
+ <!-- no translation found for permlab_videoWrite (128769316366746446) -->
+ <skip />
+ <!-- no translation found for permdesc_videoWrite (5448565757490640841) -->
+ <skip />
+ <!-- no translation found for permlab_imagesRead (3015078545742665304) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesRead (3144263806038695580) -->
+ <skip />
+ <!-- no translation found for permlab_imagesWrite (3391306186247235510) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesWrite (7073662756617474375) -->
+ <skip />
+ <!-- no translation found for permlab_mediaLocation (8675148183726247864) -->
+ <skip />
+ <!-- no translation found for permdesc_mediaLocation (2237023389178865130) -->
+ <skip />
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Gedeeltelike vingerafdruk is bespeur. Probeer asseblief weer."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Kon nie vingerafdruk verwerk nie. Probeer asseblief weer."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Vingerafdruksensor is vuil. Maak dit skoon en probeer weer."</string>
@@ -1872,8 +1912,18 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"Stoor <xliff:g id="TYPE">%1$s</xliff:g> in <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Stoor <xliff:g id="TYPE_0">%1$s</xliff:g> en <xliff:g id="TYPE_1">%2$s</xliff:g> in <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Stoor <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> en <xliff:g id="TYPE_2">%3$s</xliff:g> in <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string>
+ <!-- no translation found for autofill_update_title (4879673117448810818) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_type (339733442087186755) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) -->
+ <skip />
<string name="autofill_save_yes" msgid="6398026094049005921">"Stoor"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"Nee, dankie"</string>
+ <!-- no translation found for autofill_update_yes (310358413273276958) -->
+ <skip />
<string name="autofill_save_type_password" msgid="5288448918465971568">"wagwoord"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"adres"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"kredietkaart"</string>
diff --git a/core/res/res/values-am/strings.xml b/core/res/res/values-am/strings.xml
index 400f304..5a7e643 100644
--- a/core/res/res/values-am/strings.xml
+++ b/core/res/res/values-am/strings.xml
@@ -300,6 +300,12 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"የሰውነት ዳሳሾች"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"ስለአስፈላጊ ምልክቶችዎ ያሉ የዳሳሽ ውሂብ ይድረሱ"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> የሰውነትዎ መሠረታዊ ምልክቶች የዳሳሽ ውሂብ እንዲደርስ ይፈቀድለት?"</string>
+ <string name="permgrouplab_aural" msgid="965607064083134896">"ሙዚቃ"</string>
+ <string name="permgroupdesc_aural" msgid="4870189506255958055">"ሙዚቃዎን መድረስ"</string>
+ <string name="permgrouprequest_aural" msgid="6787926123071735620">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ቀን ሙዚቃዎን እንዲደርስ ይፈቀድለት?"</string>
+ <string name="permgrouplab_visual" msgid="8030190588123857921">"ፎቶዎች እና ቪዲዮዎች"</string>
+ <string name="permgroupdesc_visual" msgid="3415827902566663546">"የእርስዎን ፎቶዎች እና ቪዲዮዎች መድረስ"</string>
+ <string name="permgrouprequest_visual" msgid="6907523945030290376">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> የእርስዎን ፎቶዎች እና ቪዲዮዎች እንዲደርስ ይፈቀድለት?"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"የመስኮት ይዘት ሰርስረው ያውጡ"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"መስተጋበር የሚፈጥሩት የመስኮት ይዘት ይመርምሩ።"</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"በመንካት ያስሱን ያብሩ"</string>
@@ -494,6 +500,20 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"መተግበሪያው ጥቅም ላይ እንዲውሉ የጣት አሻራ ቅንብር ደንቦችን ለማከል እና ለመሰረዝ የሚያስችሉ ስልቶችን እንዲያስጀምር ያስችለዋል።"</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"የጣት አሻራ ሃርድዌርን ተጠቀም"</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"መተግበሪያው የጣት አሻራ ሃርድዌር ለማረጋገጥ ስራ እንዲጠቀም ያስችለዋል"</string>
+ <string name="permlab_audioRead" msgid="6617225220728465565">"የሙዚቃ ስብስብዎን ማንበብ"</string>
+ <string name="permdesc_audioRead" msgid="5034032570243484805">"መተግበሪያው የሙዚቃ ስብስብዎን እንዲያነብብ ያስችለዋል።"</string>
+ <string name="permlab_audioWrite" msgid="2661772059799779292">"የሙዚቃ ስብስብዎን መቀየር"</string>
+ <string name="permdesc_audioWrite" msgid="8888544708166230494">"መተግበሪያው የሙዚቃ ስብስብዎን እንዲቀይረው ያስችለዋል።"</string>
+ <string name="permlab_videoRead" msgid="9182618678674737229">"የቪዲዮ ስብስብዎን ማንበብ"</string>
+ <string name="permdesc_videoRead" msgid="7045676429859396194">"መተግበሪያው የቪዲዮ ስብስብዎን እንዲያነብብ ያስችለዋል።"</string>
+ <string name="permlab_videoWrite" msgid="128769316366746446">"የቪዲዮ ስብስብዎን መቀየር"</string>
+ <string name="permdesc_videoWrite" msgid="5448565757490640841">"መተግበሪያው የፎቶ ስብስብዎን እንዲቀይረው ያስችለዋል።"</string>
+ <string name="permlab_imagesRead" msgid="3015078545742665304">"የፎቶ ስብስብዎን ማንበብ"</string>
+ <string name="permdesc_imagesRead" msgid="3144263806038695580">"መተግበሪያው የፎቶ ስብስብዎን እንዲያነብብ ያስችለዋል።"</string>
+ <string name="permlab_imagesWrite" msgid="3391306186247235510">"የፎቶ ስብስብዎን መቀየር"</string>
+ <string name="permdesc_imagesWrite" msgid="7073662756617474375">"መተግበሪያው የፎቶ ስብስብዎን እንዲቀይረው ያስችለዋል።"</string>
+ <string name="permlab_mediaLocation" msgid="8675148183726247864">"አካባቢዎችን ከሚዲያ ስብስብዎ ማንበብ"</string>
+ <string name="permdesc_mediaLocation" msgid="2237023389178865130">"መተግበሪያው አካባቢዎችን ከሚዲያ ስብስብዎ እንዲያነብብ ያስችለዋል።"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"ከፊል የጣት አሻራ ተገኝቷል። እባክዎ እንደገና ይሞክሩ።"</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"ጣት አሻራን መስራት አልተቻለም። እባክዎ እንደገና ይሞክሩ።"</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"የጣት አሻራ ዳሳሽ ቆሽሿል። እባክዎ ያጽዱት እና እንደገና ይሞክሩ።"</string>
@@ -1872,8 +1892,13 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"<xliff:g id="TYPE">%1$s</xliff:g> ወደ <b><xliff:g id="LABEL">%2$s</xliff:g></b> ይቀመጥ?"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"<xliff:g id="TYPE_0">%1$s</xliff:g> እና <xliff:g id="TYPE_1">%2$s</xliff:g> ወደ <b><xliff:g id="LABEL">%3$s</xliff:g></b> ይቀመጡ?"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"<xliff:g id="TYPE_0">%1$s</xliff:g>፣ <xliff:g id="TYPE_1">%2$s</xliff:g> እና <xliff:g id="TYPE_2">%3$s</xliff:g> ወደ <b><xliff:g id="LABEL">%4$s</xliff:g></b> ይቀመጡ?"</string>
+ <string name="autofill_update_title" msgid="4879673117448810818">"ወደ <b><xliff:g id="LABEL">%1$s</xliff:g></b> ይዘመን?"</string>
+ <string name="autofill_update_title_with_type" msgid="339733442087186755">"<xliff:g id="TYPE">%1$s</xliff:g> ወደ <b><xliff:g id="LABEL">%2$s</xliff:g></b> ይዘመን?"</string>
+ <string name="autofill_update_title_with_2types" msgid="6321714204167424745">"<xliff:g id="TYPE_0">%1$s</xliff:g> እና <xliff:g id="TYPE_1">%2$s</xliff:g> ወደ <b><xliff:g id="LABEL">%3$s</xliff:g></b> ይዘመኑ?"</string>
+ <string name="autofill_update_title_with_3types" msgid="5866735124066629287">"<xliff:g id="TYPE_0">%1$s</xliff:g>፣ <xliff:g id="TYPE_1">%2$s</xliff:g> እና <xliff:g id="TYPE_2">%3$s</xliff:g> ወደ <b><xliff:g id="LABEL">%4$s</xliff:g></b> ይዘመኑ?"</string>
<string name="autofill_save_yes" msgid="6398026094049005921">"አስቀምጥ"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"አይ፣ አመሰግናለሁ"</string>
+ <string name="autofill_update_yes" msgid="310358413273276958">"አዘምን"</string>
<string name="autofill_save_type_password" msgid="5288448918465971568">"የይለፍ ቃል"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"አድራሻ"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"ክሬዲት ካርድ"</string>
diff --git a/core/res/res/values-ar/strings.xml b/core/res/res/values-ar/strings.xml
index 6d5ee11..d46f758 100644
--- a/core/res/res/values-ar/strings.xml
+++ b/core/res/res/values-ar/strings.xml
@@ -312,6 +312,12 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"أجهزة استشعار الجسم"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"الوصول إلى بيانات المستشعر حول علاماتك الحيوية"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"هل تريد السماح لتطبيق <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> بالدخول إلى بيانات المستشعر حول علاماتك الحيوية؟"</string>
+ <string name="permgrouplab_aural" msgid="965607064083134896">"الموسيقى"</string>
+ <string name="permgroupdesc_aural" msgid="4870189506255958055">"الوصول إلى الموسيقى"</string>
+ <string name="permgrouprequest_aural" msgid="6787926123071735620">"هل تريد السماح لتطبيق <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> بالوصول إلى الموسيقى؟"</string>
+ <string name="permgrouplab_visual" msgid="8030190588123857921">"الصور والفيديوهات"</string>
+ <string name="permgroupdesc_visual" msgid="3415827902566663546">"الوصول إلى صورك وفيديوهاتك"</string>
+ <string name="permgrouprequest_visual" msgid="6907523945030290376">"هل تريد السماح لتطبيق <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> بالوصول إلى صورك وفيديوهاتك؟"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"استرداد محتوى النافذة"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"فحص محتوى نافذة يتم التفاعل معها"</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"تشغيل الاستكشاف باللمس"</string>
@@ -506,6 +512,20 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"للسماح للتطبيق باستدعاء طرق لإضافة نماذج من بصمات الأصابع وحذفها."</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"لاستخدام أجهزة بصمة الإصبع"</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"للسماح للتطبيق باستخدام أجهزة بصمة الإصبع للمصادقة"</string>
+ <string name="permlab_audioRead" msgid="6617225220728465565">"قراءة مجموعتك الموسيقية"</string>
+ <string name="permdesc_audioRead" msgid="5034032570243484805">"للسماح للتطبيق بقراءة مجموعتك الموسيقية."</string>
+ <string name="permlab_audioWrite" msgid="2661772059799779292">"تعديل مجموعتك الموسيقية"</string>
+ <string name="permdesc_audioWrite" msgid="8888544708166230494">"للسماح للتطبيق بتعديل مجموعتك الموسيقية."</string>
+ <string name="permlab_videoRead" msgid="9182618678674737229">"قراءة مجموعة الفيديو التابعة لك"</string>
+ <string name="permdesc_videoRead" msgid="7045676429859396194">"للسماح للتطبيق بقراءة مجموعة الفيديوهات التابعة لك."</string>
+ <string name="permlab_videoWrite" msgid="128769316366746446">"تعديل مجموعة الفيديو التابعة لك"</string>
+ <string name="permdesc_videoWrite" msgid="5448565757490640841">"يسمح للتطبيق بتعديل مجموعة الفيديوهات التابعة لك."</string>
+ <string name="permlab_imagesRead" msgid="3015078545742665304">"قراءة مجموعة صورك"</string>
+ <string name="permdesc_imagesRead" msgid="3144263806038695580">"للسماح للتطبيق بقراءة مجموعة صورك."</string>
+ <string name="permlab_imagesWrite" msgid="3391306186247235510">"تعديل مجموعة صورك"</string>
+ <string name="permdesc_imagesWrite" msgid="7073662756617474375">"للسماح للتطبيق بتعديل مجموعة صورك."</string>
+ <string name="permlab_mediaLocation" msgid="8675148183726247864">"قراءة المواقع من مجموعة الوسائط التابعة لك"</string>
+ <string name="permdesc_mediaLocation" msgid="2237023389178865130">"للسماح للتطبيق بقراءة المواقع من مجموعة الوسائط التابعة لك."</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"تم اكتشاف بصمة الإصبع بشكل جزئي؛ يرجى إعادة المحاولة."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"تعذرت معالجة بصمة الإصبع. يُرجى إعادة المحاولة."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"جهاز استشعار بصمات الأصابع متسخ، يرجى تنظيفه وإعادة المحاولة."</string>
@@ -2012,8 +2032,13 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"هل تريد حفظ <xliff:g id="TYPE">%1$s</xliff:g> في <b><xliff:g id="LABEL">%2$s</xliff:g></b>؟"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"هل تريد حفظ <xliff:g id="TYPE_0">%1$s</xliff:g> و<xliff:g id="TYPE_1">%2$s</xliff:g> في <b><xliff:g id="LABEL">%3$s</xliff:g></b>؟"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"هل تريد حفظ <xliff:g id="TYPE_0">%1$s</xliff:g> و<xliff:g id="TYPE_1">%2$s</xliff:g> و<xliff:g id="TYPE_2">%3$s</xliff:g> في <b><xliff:g id="LABEL">%4$s</xliff:g></b>؟"</string>
+ <string name="autofill_update_title" msgid="4879673117448810818">"هل تريد التعديل إلى <b><xliff:g id="LABEL">%1$s</xliff:g></b>؟"</string>
+ <string name="autofill_update_title_with_type" msgid="339733442087186755">"هل تريد تعديل <xliff:g id="TYPE">%1$s</xliff:g> إلى <b><xliff:g id="LABEL">%2$s</xliff:g></b>؟"</string>
+ <string name="autofill_update_title_with_2types" msgid="6321714204167424745">"هل تريد تعديل <xliff:g id="TYPE_0">%1$s</xliff:g> و<xliff:g id="TYPE_1">%2$s</xliff:g> إلى <b><xliff:g id="LABEL">%3$s</xliff:g></b>؟"</string>
+ <string name="autofill_update_title_with_3types" msgid="5866735124066629287">"هل تريد تعديل <xliff:g id="TYPE_0">%1$s</xliff:g> و<xliff:g id="TYPE_1">%2$s</xliff:g> و<xliff:g id="TYPE_2">%3$s</xliff:g> إلى <b><xliff:g id="LABEL">%4$s</xliff:g></b>؟"</string>
<string name="autofill_save_yes" msgid="6398026094049005921">"حفظ"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"لا، شكرًا"</string>
+ <string name="autofill_update_yes" msgid="310358413273276958">"تعديل"</string>
<string name="autofill_save_type_password" msgid="5288448918465971568">"كلمة مرور"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"عنوان"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"بطاقة ائتمان"</string>
diff --git a/core/res/res/values-as/strings.xml b/core/res/res/values-as/strings.xml
index 2f9e444..0e8aa00 100644
--- a/core/res/res/values-as/strings.xml
+++ b/core/res/res/values-as/strings.xml
@@ -300,6 +300,18 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"শৰীৰৰ ছেন্সৰসমূহ"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"আপোনাৰ দেহৰ গুৰুত্বপূৰ্ণ অংগসমূহৰ অৱস্থাৰ বিষয়ে ছেন্সৰৰ ডেটা লাভ কৰিব পাৰে"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b>ক আপোনাৰ দেহৰ গুৰুত্বপূৰ্ণ অংগসমূহৰ অৱস্থাৰ বিষয়ে ছেন্সৰৰ ডেটা লাভ কৰিবলৈ অনুমতি দিবনে?"</string>
+ <!-- no translation found for permgrouplab_aural (965607064083134896) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_aural (4870189506255958055) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_aural (6787926123071735620) -->
+ <skip />
+ <!-- no translation found for permgrouplab_visual (8030190588123857921) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_visual (3415827902566663546) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_visual (6907523945030290376) -->
+ <skip />
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"ৱিণ্ড\' সমল বিচাৰি উলিয়াওক"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"আপুনি যোগাযোগ কৰি থকা ৱিণ্ড\'খনৰ সমল পৰীক্ষা কৰক।"</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"স্পৰ্শৰদ্বাৰা অন্বেষণ কৰাৰ সুবিধা অন কৰক"</string>
@@ -494,6 +506,34 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"ফিংগাৰপ্ৰিণ্ট টেম্প্লেটসমূহ যোগ কৰা বা মচাৰ পদ্ধতিসমূহ কামত লগাবলৈ নিৰ্দেশ দিবলৈ এপটোক অনুমতি দিয়ে।"</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"ফিংগাৰপ্ৰিণ্ট হাৰ্ডৱেৰ ব্যৱহাৰ কৰিব পাৰে"</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"প্ৰমাণীকৰণৰ বাবে ফিংগাৰপ্ৰিণ্ট হাৰ্ডৱেৰ ব্য়ৱহাৰ কৰিবলৈ এপটোক অনুমতি দিয়ে"</string>
+ <!-- no translation found for permlab_audioRead (6617225220728465565) -->
+ <skip />
+ <!-- no translation found for permdesc_audioRead (5034032570243484805) -->
+ <skip />
+ <!-- no translation found for permlab_audioWrite (2661772059799779292) -->
+ <skip />
+ <!-- no translation found for permdesc_audioWrite (8888544708166230494) -->
+ <skip />
+ <!-- no translation found for permlab_videoRead (9182618678674737229) -->
+ <skip />
+ <!-- no translation found for permdesc_videoRead (7045676429859396194) -->
+ <skip />
+ <!-- no translation found for permlab_videoWrite (128769316366746446) -->
+ <skip />
+ <!-- no translation found for permdesc_videoWrite (5448565757490640841) -->
+ <skip />
+ <!-- no translation found for permlab_imagesRead (3015078545742665304) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesRead (3144263806038695580) -->
+ <skip />
+ <!-- no translation found for permlab_imagesWrite (3391306186247235510) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesWrite (7073662756617474375) -->
+ <skip />
+ <!-- no translation found for permlab_mediaLocation (8675148183726247864) -->
+ <skip />
+ <!-- no translation found for permdesc_mediaLocation (2237023389178865130) -->
+ <skip />
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"ফিংগাৰপ্ৰিণ্ট আংশিকভাৱে চিনাক্ত কৰা হৈছে। অনুগ্ৰহ কৰি আকৌ চেষ্টা কৰক৷"</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"ফিগাৰপ্ৰিণ্টৰ প্ৰক্ৰিয়া সম্পাদন কৰিবপৰা নগ\'ল। অনুগ্ৰহ কৰি আকৌ চেষ্টা কৰক৷"</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"ফিংগাৰপ্ৰিণ্ট ছেন্সৰটো লেতেৰা হৈ আছে। অনুগ্ৰহ কৰি পৰিষ্কাৰ কৰি আকৌ চেষ্টা কৰক।"</string>
@@ -1873,8 +1913,18 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"<xliff:g id="TYPE">%1$s</xliff:g>ক <b><xliff:g id="LABEL">%2$s</xliff:g></b>ত ছেভ কৰিবনে?"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"<xliff:g id="TYPE_0">%1$s</xliff:g> আৰু <xliff:g id="TYPE_1">%2$s</xliff:g>ক <b><xliff:g id="LABEL">%3$s</xliff:g></b>ত ছেভ কৰিবনে?"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"<xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g>, আৰু <xliff:g id="TYPE_2">%3$s</xliff:g>ক <b><xliff:g id="LABEL">%4$s</xliff:g></b>ত ছেভ কৰিবনে?"</string>
+ <!-- no translation found for autofill_update_title (4879673117448810818) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_type (339733442087186755) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) -->
+ <skip />
<string name="autofill_save_yes" msgid="6398026094049005921">"ছেভ কৰক"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"নালাগে, ধন্যবাদ"</string>
+ <!-- no translation found for autofill_update_yes (310358413273276958) -->
+ <skip />
<string name="autofill_save_type_password" msgid="5288448918465971568">"পাছৱৰ্ড"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"ঠিকনা"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"ক্ৰেডিট কাৰ্ড"</string>
diff --git a/core/res/res/values-az/strings.xml b/core/res/res/values-az/strings.xml
index 7ddd88c2..6464c61 100644
--- a/core/res/res/values-az/strings.xml
+++ b/core/res/res/values-az/strings.xml
@@ -300,6 +300,12 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"Bədən Sensorları"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"Həyati əlamətlər haqqında sensor dataya daxil olun"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> tətbiqinə həyati əlamətlər haqqında sensor dataya daxil olmaq icazəsi verilsin?"</string>
+ <string name="permgrouplab_aural" msgid="965607064083134896">"Musiqi"</string>
+ <string name="permgroupdesc_aural" msgid="4870189506255958055">"musiqiyə daxil olun"</string>
+ <string name="permgrouprequest_aural" msgid="6787926123071735620">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> tətbiqinin musiqiyə daxil olmağına icazə verilsin?"</string>
+ <string name="permgrouplab_visual" msgid="8030190588123857921">"Foto və Videolar"</string>
+ <string name="permgroupdesc_visual" msgid="3415827902566663546">"foto və videolara daxil olun"</string>
+ <string name="permgrouprequest_visual" msgid="6907523945030290376">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> tətbiqinin foto və videolarınıza daxil olmağına icazə verilsin?"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Pəncərənin məzmununu əldə edin"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Əlaqədə olduğunuz pəncərənin məzmununu nəzərdən keçirin."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Toxunaraq Kəşf et funksiyasını yandırın"</string>
@@ -494,6 +500,20 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"Proqrama istifadə üçün barmaq izi şablonlarını əlavə etmək və silmək üçün üsullara müraciət etməyə imkan verir."</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"barmaq izi avadanlığından istifadə edin"</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"Proqrama əsilliyi yoxlama üçün barmaq izi avadanlığından istifadə etməyə imkan verir"</string>
+ <string name="permlab_audioRead" msgid="6617225220728465565">"musiqi kolleksiyanızı oxuyun"</string>
+ <string name="permdesc_audioRead" msgid="5034032570243484805">"Tətbiqin musiqi kolleksiyanızı oxumasına icazə verir."</string>
+ <string name="permlab_audioWrite" msgid="2661772059799779292">"musiqi kolleksiyanıza düzəliş edin"</string>
+ <string name="permdesc_audioWrite" msgid="8888544708166230494">"Tətbiqin musiqi kolleksiyanıza düzəliş etməsinə icazə verir."</string>
+ <string name="permlab_videoRead" msgid="9182618678674737229">"video kolleksiyanızı oxuyun"</string>
+ <string name="permdesc_videoRead" msgid="7045676429859396194">"Tətbiqin video kolleksiyanızı oxumasına icazə verin."</string>
+ <string name="permlab_videoWrite" msgid="128769316366746446">"video kolleksiyanıza düzəliş edin"</string>
+ <string name="permdesc_videoWrite" msgid="5448565757490640841">"Tətbiqin video kolleksiyanıza düzəliş etməsinə icazə verin."</string>
+ <string name="permlab_imagesRead" msgid="3015078545742665304">"foto kolleksiyanızı oxuyun"</string>
+ <string name="permdesc_imagesRead" msgid="3144263806038695580">"Tətbiqin foto kolleksiyanızı oxumasına icazə verir."</string>
+ <string name="permlab_imagesWrite" msgid="3391306186247235510">"foto kolleksiyanıza düzəliş edin"</string>
+ <string name="permdesc_imagesWrite" msgid="7073662756617474375">"Tətbiqin foto kolleksiyanıza düzəliş etməsinə icazə verir."</string>
+ <string name="permlab_mediaLocation" msgid="8675148183726247864">"media kolleksiyanızdan məkanları oxuyun"</string>
+ <string name="permdesc_mediaLocation" msgid="2237023389178865130">"Tətbiqin media kolleksiyanızdan məkanları oxumasına icazə verin."</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Barmaq qismən müəyyən olundu. Lütfən, yenidən cəhd edin."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Barmaq izi tanınmadı. Lütfən, yenidən cəhd edin."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Barmaq izi sensoru çirklidir. Lütfən, təmizləyin və yenidən cəhd edin."</string>
@@ -1872,8 +1892,13 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"<xliff:g id="TYPE">%1$s</xliff:g> <b><xliff:g id="LABEL">%2$s</xliff:g><b> etiketində yadda saxlansın?"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"<xliff:g id="TYPE_0">%1$s</xliff:g> və <xliff:g id="TYPE_1">%2$s</xliff:g> <b><xliff:g id="LABEL">%3$s</xliff:g></b> etiketində yadda saxlansın?"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"<xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> və <xliff:g id="TYPE_2">%3$s</xliff:g> <b><xliff:g id="LABEL">%4$s</xliff:g></b> etiketində yadda saxlansın?"</string>
+ <string name="autofill_update_title" msgid="4879673117448810818">"<b><xliff:g id="LABEL">%1$s</xliff:g></b> etiketində yenilənsin?"</string>
+ <string name="autofill_update_title_with_type" msgid="339733442087186755">"<xliff:g id="TYPE">%1$s</xliff:g> <b><xliff:g id="LABEL">%2$s</xliff:g><b> etiketində yenilənsin?"</string>
+ <string name="autofill_update_title_with_2types" msgid="6321714204167424745">"<xliff:g id="TYPE_0">%1$s</xliff:g> və <xliff:g id="TYPE_1">%2$s</xliff:g> <b><xliff:g id="LABEL">%3$s</xliff:g></b> etiketində yenilənsin?"</string>
+ <string name="autofill_update_title_with_3types" msgid="5866735124066629287">"<xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> və <xliff:g id="TYPE_2">%3$s</xliff:g> <b><xliff:g id="LABEL">%4$s</xliff:g></b> etiketində yenilənsin?"</string>
<string name="autofill_save_yes" msgid="6398026094049005921">"Yadda saxlayın"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"Xeyr, çox sağ olun"</string>
+ <string name="autofill_update_yes" msgid="310358413273276958">"Yeniləyin"</string>
<string name="autofill_save_type_password" msgid="5288448918465971568">"parol"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"ünvan"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"kredit kartı"</string>
diff --git a/core/res/res/values-b+sr+Latn/strings.xml b/core/res/res/values-b+sr+Latn/strings.xml
index 6338e69..dcb7e21 100644
--- a/core/res/res/values-b+sr+Latn/strings.xml
+++ b/core/res/res/values-b+sr+Latn/strings.xml
@@ -303,6 +303,18 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"Senzori za telo"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"pristupa podacima senzora o vitalnim funkcijama"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"Želite li da omogućite da <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>pristupa podacima senzora o vitalnim funkcijama?"</string>
+ <!-- no translation found for permgrouplab_aural (965607064083134896) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_aural (4870189506255958055) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_aural (6787926123071735620) -->
+ <skip />
+ <!-- no translation found for permgrouplab_visual (8030190588123857921) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_visual (3415827902566663546) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_visual (6907523945030290376) -->
+ <skip />
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"da preuzima sadržaj prozora"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Proverava sadržaj prozora sa kojim ostvarujete interakciju."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"da uključi Istraživanja dodirom"</string>
@@ -497,6 +509,34 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"Dozvoljava aplikaciji da aktivira metode za dodavanje i brisanje šablona otisaka prstiju koji će se koristiti."</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"koristi hardver za otiske prstiju"</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"Dozvoljava aplikaciji da koristi hardver za otiske prstiju radi potvrde autentičnosti"</string>
+ <!-- no translation found for permlab_audioRead (6617225220728465565) -->
+ <skip />
+ <!-- no translation found for permdesc_audioRead (5034032570243484805) -->
+ <skip />
+ <!-- no translation found for permlab_audioWrite (2661772059799779292) -->
+ <skip />
+ <!-- no translation found for permdesc_audioWrite (8888544708166230494) -->
+ <skip />
+ <!-- no translation found for permlab_videoRead (9182618678674737229) -->
+ <skip />
+ <!-- no translation found for permdesc_videoRead (7045676429859396194) -->
+ <skip />
+ <!-- no translation found for permlab_videoWrite (128769316366746446) -->
+ <skip />
+ <!-- no translation found for permdesc_videoWrite (5448565757490640841) -->
+ <skip />
+ <!-- no translation found for permlab_imagesRead (3015078545742665304) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesRead (3144263806038695580) -->
+ <skip />
+ <!-- no translation found for permlab_imagesWrite (3391306186247235510) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesWrite (7073662756617474375) -->
+ <skip />
+ <!-- no translation found for permlab_mediaLocation (8675148183726247864) -->
+ <skip />
+ <!-- no translation found for permdesc_mediaLocation (2237023389178865130) -->
+ <skip />
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Otkriven je delimični otisak prsta. Probajte ponovo."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Nije uspela obrada otiska prsta. Probajte ponovo."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Senzor za otiske prstiju je prljav. Očistite ga i pokušajte ponovo."</string>
@@ -1907,8 +1947,18 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"Želite li da sačuvate stavku <xliff:g id="TYPE">%1$s</xliff:g> u: <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Želite li da sačuvate stavke <xliff:g id="TYPE_0">%1$s</xliff:g> i <xliff:g id="TYPE_1">%2$s</xliff:g> u: <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Želite li da sačuvate stavke <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> i <xliff:g id="TYPE_2">%3$s</xliff:g> u: <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string>
+ <!-- no translation found for autofill_update_title (4879673117448810818) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_type (339733442087186755) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) -->
+ <skip />
<string name="autofill_save_yes" msgid="6398026094049005921">"Sačuvaj"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"Ne, hvala"</string>
+ <!-- no translation found for autofill_update_yes (310358413273276958) -->
+ <skip />
<string name="autofill_save_type_password" msgid="5288448918465971568">"lozinka"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"adresa"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"kreditna kartica"</string>
diff --git a/core/res/res/values-be/strings.xml b/core/res/res/values-be/strings.xml
index c93fa51..9041156 100644
--- a/core/res/res/values-be/strings.xml
+++ b/core/res/res/values-be/strings.xml
@@ -306,6 +306,18 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"Датчыкі цела"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"атрымліваць з датчыка даныя асноўных фізіялагічных паказчыкаў"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"Дазволіць праграме <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> доступ да даных з датчыкаў пра вашы асноўныя фізіялагічныя паказчыкі?"</string>
+ <!-- no translation found for permgrouplab_aural (965607064083134896) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_aural (4870189506255958055) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_aural (6787926123071735620) -->
+ <skip />
+ <!-- no translation found for permgrouplab_visual (8030190588123857921) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_visual (3415827902566663546) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_visual (6907523945030290376) -->
+ <skip />
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Атрымліваць змесціва вакна"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Аналізаваць змесціва актыўнага вакна."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Уключаць Азнаямленне дотыкам"</string>
@@ -500,6 +512,34 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"Дазваляе праграме выкарыстоўваць спосабы дадання і выдалення шаблонаў адбіткаў пальцаў для выкарыстання."</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"выкарыстоўваць апаратныя сродкі для адбіткаў пальцаў"</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"Дазваляе праграме выкарыстоўваць апаратныя сродкі распазнання адбіткаў пальцаў для аўтэнтыфікацыі"</string>
+ <!-- no translation found for permlab_audioRead (6617225220728465565) -->
+ <skip />
+ <!-- no translation found for permdesc_audioRead (5034032570243484805) -->
+ <skip />
+ <!-- no translation found for permlab_audioWrite (2661772059799779292) -->
+ <skip />
+ <!-- no translation found for permdesc_audioWrite (8888544708166230494) -->
+ <skip />
+ <!-- no translation found for permlab_videoRead (9182618678674737229) -->
+ <skip />
+ <!-- no translation found for permdesc_videoRead (7045676429859396194) -->
+ <skip />
+ <!-- no translation found for permlab_videoWrite (128769316366746446) -->
+ <skip />
+ <!-- no translation found for permdesc_videoWrite (5448565757490640841) -->
+ <skip />
+ <!-- no translation found for permlab_imagesRead (3015078545742665304) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesRead (3144263806038695580) -->
+ <skip />
+ <!-- no translation found for permlab_imagesWrite (3391306186247235510) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesWrite (7073662756617474375) -->
+ <skip />
+ <!-- no translation found for permlab_mediaLocation (8675148183726247864) -->
+ <skip />
+ <!-- no translation found for permdesc_mediaLocation (2237023389178865130) -->
+ <skip />
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Выяўлена частка адбіткаў пальцаў. Паспрабуйце яшчэ раз."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Не атрымалася апрацаваць адбітак пальца. Паспрабуйце яшчэ раз."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Датчык адбіткаў пальцаў брудны. Ачысціце яго і паспрабуйце яшчэ раз."</string>
@@ -1942,8 +1982,18 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"Захаваць <xliff:g id="TYPE">%1$s</xliff:g> у <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Захаваць <xliff:g id="TYPE_0">%1$s</xliff:g> і <xliff:g id="TYPE_1">%2$s</xliff:g> у <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Захаваць <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> і <xliff:g id="TYPE_2">%3$s</xliff:g> у <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string>
+ <!-- no translation found for autofill_update_title (4879673117448810818) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_type (339733442087186755) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) -->
+ <skip />
<string name="autofill_save_yes" msgid="6398026094049005921">"Захаваць"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"Не, дзякуй"</string>
+ <!-- no translation found for autofill_update_yes (310358413273276958) -->
+ <skip />
<string name="autofill_save_type_password" msgid="5288448918465971568">"пароль"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"адрас"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"крэдытная картка"</string>
diff --git a/core/res/res/values-bg/strings.xml b/core/res/res/values-bg/strings.xml
index d05d78c..80c6ceb 100644
--- a/core/res/res/values-bg/strings.xml
+++ b/core/res/res/values-bg/strings.xml
@@ -300,6 +300,18 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"Телесни сензори"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"достъп до сензорните данни за жизнените ви показатели"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"Да се разреши ли на <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> да осъществява достъп до данните от сензорите за жизнените ви показатели?"</string>
+ <!-- no translation found for permgrouplab_aural (965607064083134896) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_aural (4870189506255958055) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_aural (6787926123071735620) -->
+ <skip />
+ <!-- no translation found for permgrouplab_visual (8030190588123857921) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_visual (3415827902566663546) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_visual (6907523945030290376) -->
+ <skip />
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Извличане на съдържанието от прозореца"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Инспектиране на съдържанието на прозорец, с който взаимодействате."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Включване на изследването чрез докосване"</string>
@@ -494,6 +506,34 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"Разрешава на приложението да извиква начини за добавяне и изтриване на шаблони за отпечатъци, които да се използват."</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"използване на хардуера за отпечатъци"</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"Разрешава на приложението да използва хардуера за отпечатъци с цел удостоверяване"</string>
+ <!-- no translation found for permlab_audioRead (6617225220728465565) -->
+ <skip />
+ <!-- no translation found for permdesc_audioRead (5034032570243484805) -->
+ <skip />
+ <!-- no translation found for permlab_audioWrite (2661772059799779292) -->
+ <skip />
+ <!-- no translation found for permdesc_audioWrite (8888544708166230494) -->
+ <skip />
+ <!-- no translation found for permlab_videoRead (9182618678674737229) -->
+ <skip />
+ <!-- no translation found for permdesc_videoRead (7045676429859396194) -->
+ <skip />
+ <!-- no translation found for permlab_videoWrite (128769316366746446) -->
+ <skip />
+ <!-- no translation found for permdesc_videoWrite (5448565757490640841) -->
+ <skip />
+ <!-- no translation found for permlab_imagesRead (3015078545742665304) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesRead (3144263806038695580) -->
+ <skip />
+ <!-- no translation found for permlab_imagesWrite (3391306186247235510) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesWrite (7073662756617474375) -->
+ <skip />
+ <!-- no translation found for permlab_mediaLocation (8675148183726247864) -->
+ <skip />
+ <!-- no translation found for permdesc_mediaLocation (2237023389178865130) -->
+ <skip />
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Открит е частичен отпечатък. Моля, опитайте отново."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Отпечатъкът не можа да се обработи. Моля, опитайте отново."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Сензорът за отпечатъци е мръсен. Моля, почистете го и опитайте отново."</string>
@@ -1872,8 +1912,18 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"<xliff:g id="TYPE">%1$s</xliff:g> да се запази ли в/ъв <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"<xliff:g id="TYPE_0">%1$s</xliff:g> и <xliff:g id="TYPE_1">%2$s</xliff:g> да се запазят ли в/ъв <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"<xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> и <xliff:g id="TYPE_2">%3$s</xliff:g> да се запазят ли в/ъв <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string>
+ <!-- no translation found for autofill_update_title (4879673117448810818) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_type (339733442087186755) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) -->
+ <skip />
<string name="autofill_save_yes" msgid="6398026094049005921">"Запазване"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"Не, благодаря"</string>
+ <!-- no translation found for autofill_update_yes (310358413273276958) -->
+ <skip />
<string name="autofill_save_type_password" msgid="5288448918465971568">"Паролата"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"Адресът"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"Кредитната карта"</string>
diff --git a/core/res/res/values-bn/strings.xml b/core/res/res/values-bn/strings.xml
index 61232e0..026a759 100644
--- a/core/res/res/values-bn/strings.xml
+++ b/core/res/res/values-bn/strings.xml
@@ -300,6 +300,18 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"বডি সেন্সরগুলি"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"আপনার অত্যাবশ্যক লক্ষণগুলির সম্পর্কে সেন্সর ডেটা অ্যাক্সেস করে"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b>-কে সেন্সর থেকে আপনার ভাইটাল সাইনের ডেটা অ্যাক্সেস করতে দেবেন?"</string>
+ <!-- no translation found for permgrouplab_aural (965607064083134896) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_aural (4870189506255958055) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_aural (6787926123071735620) -->
+ <skip />
+ <!-- no translation found for permgrouplab_visual (8030190588123857921) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_visual (3415827902566663546) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_visual (6907523945030290376) -->
+ <skip />
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"উইন্ডোর কন্টেন্ট পুনরুদ্ধার করে"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"আপনি ইন্টারঅ্যাক্ট করছেন এমন একটি উইন্ডোর সামগ্রীকে সযত্নে নিরীক্ষণ করে৷"</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"স্পর্শের মাধ্যমে অন্বেষণ করা চালু করুন"</string>
@@ -494,6 +506,34 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"ব্যবহার করার জন্য আঙ্গুলের ছাপের টেম্প্লেটগুলি যোগ করা এবং মোছার পদ্ধতিগুলি গ্রহন করতে অ্যাপ্লিকেশানটিতে অমুমতি দেয়৷"</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"আঙ্গুলের ছাপ নেওয়ার হার্ডওয়্যার ব্যবহার করুন"</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"অনুমোদনের জন্য আঙ্গুলের ছাপ নেওয়ার হার্ডওয়্যার ব্যবহার করতে অ্যাপ্লিকেশানটিতে অনুমতি দেয়"</string>
+ <!-- no translation found for permlab_audioRead (6617225220728465565) -->
+ <skip />
+ <!-- no translation found for permdesc_audioRead (5034032570243484805) -->
+ <skip />
+ <!-- no translation found for permlab_audioWrite (2661772059799779292) -->
+ <skip />
+ <!-- no translation found for permdesc_audioWrite (8888544708166230494) -->
+ <skip />
+ <!-- no translation found for permlab_videoRead (9182618678674737229) -->
+ <skip />
+ <!-- no translation found for permdesc_videoRead (7045676429859396194) -->
+ <skip />
+ <!-- no translation found for permlab_videoWrite (128769316366746446) -->
+ <skip />
+ <!-- no translation found for permdesc_videoWrite (5448565757490640841) -->
+ <skip />
+ <!-- no translation found for permlab_imagesRead (3015078545742665304) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesRead (3144263806038695580) -->
+ <skip />
+ <!-- no translation found for permlab_imagesWrite (3391306186247235510) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesWrite (7073662756617474375) -->
+ <skip />
+ <!-- no translation found for permlab_mediaLocation (8675148183726247864) -->
+ <skip />
+ <!-- no translation found for permdesc_mediaLocation (2237023389178865130) -->
+ <skip />
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"আঙ্গুলের ছাপ আংশিক শনাক্ত করা হয়েছে৷ অনুগ্রহ করে আবার চেষ্টা করুন৷"</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"আঙ্গুলের ছাপ প্রক্রিয়া করা যায়নি৷ অনুগ্রহ করে আবার চেষ্টা করুন৷"</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"আঙ্গুলের ছাপ নেওয়ার সেন্সরটি অপরিস্কার৷ অনুগ্রহ করে পরিষ্কার করে আবার চেষ্টা করুন৷"</string>
@@ -1873,8 +1913,18 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"<xliff:g id="TYPE">%1$s</xliff:g> কে <b><xliff:g id="LABEL">%2$s</xliff:g></b>এ সংরক্ষণ করবেন?"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"<xliff:g id="TYPE_0">%1$s</xliff:g> এবং <xliff:g id="TYPE_1">%2$s</xliff:g> কে <b><xliff:g id="LABEL">%3$s</xliff:g></b> এ সংরক্ষণ করবেন?"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"<xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g>, এবং <xliff:g id="TYPE_2">%3$s</xliff:g> কে <b><xliff:g id="LABEL">%4$s</xliff:g></b> এ সংরক্ষণ করবেন?"</string>
+ <!-- no translation found for autofill_update_title (4879673117448810818) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_type (339733442087186755) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) -->
+ <skip />
<string name="autofill_save_yes" msgid="6398026094049005921">"সেভ করুন"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"না থাক"</string>
+ <!-- no translation found for autofill_update_yes (310358413273276958) -->
+ <skip />
<string name="autofill_save_type_password" msgid="5288448918465971568">"পাসওয়ার্ড"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"ঠিকানা"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"ক্রেডিট কার্ড"</string>
diff --git a/core/res/res/values-bs/strings.xml b/core/res/res/values-bs/strings.xml
index ccf8aa6..049b383 100644
--- a/core/res/res/values-bs/strings.xml
+++ b/core/res/res/values-bs/strings.xml
@@ -303,6 +303,18 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"Tjelesni senzori"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"pristupa podacima senzora o vašim vitalnim funkcijama"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"Dozvoliti aplikaciji <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> pristup senzornim podacima o vašim vitalnim znacima?"</string>
+ <!-- no translation found for permgrouplab_aural (965607064083134896) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_aural (4870189506255958055) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_aural (6787926123071735620) -->
+ <skip />
+ <!-- no translation found for permgrouplab_visual (8030190588123857921) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_visual (3415827902566663546) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_visual (6907523945030290376) -->
+ <skip />
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Preuzima sadržaj prozora"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Pregleda sadržaj prozora koji trenutno koristite."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Uključi opciju Istraživanje dodirom"</string>
@@ -497,6 +509,34 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"Omogućava aplikaciji da koristi metode za dodavanje i brisanje šablona otisaka prstiju za upotrebu."</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"korištenje hardvera za otiske prstiju"</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"Omogućava aplikaciji da za provjeru vjerodostojnosti koristi hardver za otiske prstiju"</string>
+ <!-- no translation found for permlab_audioRead (6617225220728465565) -->
+ <skip />
+ <!-- no translation found for permdesc_audioRead (5034032570243484805) -->
+ <skip />
+ <!-- no translation found for permlab_audioWrite (2661772059799779292) -->
+ <skip />
+ <!-- no translation found for permdesc_audioWrite (8888544708166230494) -->
+ <skip />
+ <!-- no translation found for permlab_videoRead (9182618678674737229) -->
+ <skip />
+ <!-- no translation found for permdesc_videoRead (7045676429859396194) -->
+ <skip />
+ <!-- no translation found for permlab_videoWrite (128769316366746446) -->
+ <skip />
+ <!-- no translation found for permdesc_videoWrite (5448565757490640841) -->
+ <skip />
+ <!-- no translation found for permlab_imagesRead (3015078545742665304) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesRead (3144263806038695580) -->
+ <skip />
+ <!-- no translation found for permlab_imagesWrite (3391306186247235510) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesWrite (7073662756617474375) -->
+ <skip />
+ <!-- no translation found for permlab_mediaLocation (8675148183726247864) -->
+ <skip />
+ <!-- no translation found for permdesc_mediaLocation (2237023389178865130) -->
+ <skip />
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Otkriven je djelomičan otisak prsta. Pokušajte ponovo."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Nije uspjela obrada otiska prsta. Pokušajte ponovo."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Senzor za otisak prsta je prljav. Očistite ga i pokušajte ponovo."</string>
@@ -1909,8 +1949,18 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"Želite li da se <xliff:g id="TYPE">%1$s</xliff:g> sačuva u <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Želite li da se <xliff:g id="TYPE_0">%1$s</xliff:g> i <xliff:g id="TYPE_1">%2$s</xliff:g> sačuvaju u <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Želite li da se <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g>, i <xliff:g id="TYPE_2">%3$s</xliff:g> sačuvaju <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string>
+ <!-- no translation found for autofill_update_title (4879673117448810818) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_type (339733442087186755) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) -->
+ <skip />
<string name="autofill_save_yes" msgid="6398026094049005921">"Sačuvaj"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"Ne, hvala"</string>
+ <!-- no translation found for autofill_update_yes (310358413273276958) -->
+ <skip />
<string name="autofill_save_type_password" msgid="5288448918465971568">"lozinka"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"adresa"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"kreditna kartica"</string>
diff --git a/core/res/res/values-ca/strings.xml b/core/res/res/values-ca/strings.xml
index da816a1..c75fc74 100644
--- a/core/res/res/values-ca/strings.xml
+++ b/core/res/res/values-ca/strings.xml
@@ -300,6 +300,18 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"Sensors corporals"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"accedir a les dades del sensor sobre els signes vitals"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"Vols permetre que <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> accedeixi a les dades del sensor de constants vitals?"</string>
+ <!-- no translation found for permgrouplab_aural (965607064083134896) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_aural (4870189506255958055) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_aural (6787926123071735620) -->
+ <skip />
+ <!-- no translation found for permgrouplab_visual (8030190588123857921) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_visual (3415827902566663546) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_visual (6907523945030290376) -->
+ <skip />
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Recuperar el contingut de la finestra"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Inspecciona el contingut d\'una finestra amb què estàs interaccionant."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Activar Exploració tàctil"</string>
@@ -494,6 +506,34 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"Permet que l\'aplicació invoqui mètodes per afegir i suprimir plantilles d\'empremtes digitals que es puguin fer servir."</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"Utilitzar el maquinari d\'empremtes digitals"</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"Permet que l\'aplicació faci servir maquinari d\'empremtes digitals per a l\'autenticació"</string>
+ <!-- no translation found for permlab_audioRead (6617225220728465565) -->
+ <skip />
+ <!-- no translation found for permdesc_audioRead (5034032570243484805) -->
+ <skip />
+ <!-- no translation found for permlab_audioWrite (2661772059799779292) -->
+ <skip />
+ <!-- no translation found for permdesc_audioWrite (8888544708166230494) -->
+ <skip />
+ <!-- no translation found for permlab_videoRead (9182618678674737229) -->
+ <skip />
+ <!-- no translation found for permdesc_videoRead (7045676429859396194) -->
+ <skip />
+ <!-- no translation found for permlab_videoWrite (128769316366746446) -->
+ <skip />
+ <!-- no translation found for permdesc_videoWrite (5448565757490640841) -->
+ <skip />
+ <!-- no translation found for permlab_imagesRead (3015078545742665304) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesRead (3144263806038695580) -->
+ <skip />
+ <!-- no translation found for permlab_imagesWrite (3391306186247235510) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesWrite (7073662756617474375) -->
+ <skip />
+ <!-- no translation found for permlab_mediaLocation (8675148183726247864) -->
+ <skip />
+ <!-- no translation found for permdesc_mediaLocation (2237023389178865130) -->
+ <skip />
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"S\'ha detectat una empremta digital parcial. Torna-ho a provar."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"No s\'ha pogut processar l\'empremta digital. Torna-ho a provar."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"El sensor d\'empremtes digitals està brut. Neteja\'l i torna-ho a provar."</string>
@@ -1872,8 +1912,18 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"Vols desar <xliff:g id="TYPE">%1$s</xliff:g> a <xliff:g id="LABEL">%2$s</xliff:g>?"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Vols desar <xliff:g id="TYPE_0">%1$s</xliff:g> i <xliff:g id="TYPE_1">%2$s</xliff:g> a <xliff:g id="LABEL">%3$s</xliff:g>?"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Vols desar <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> i <xliff:g id="TYPE_2">%3$s</xliff:g> a <xliff:g id="LABEL">%4$s</xliff:g>?"</string>
+ <!-- no translation found for autofill_update_title (4879673117448810818) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_type (339733442087186755) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) -->
+ <skip />
<string name="autofill_save_yes" msgid="6398026094049005921">"Desa"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"No, gràcies"</string>
+ <!-- no translation found for autofill_update_yes (310358413273276958) -->
+ <skip />
<string name="autofill_save_type_password" msgid="5288448918465971568">"contrasenya"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"adreça"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"targeta de crèdit"</string>
diff --git a/core/res/res/values-cs/strings.xml b/core/res/res/values-cs/strings.xml
index 40b5e29..7d9c3c5 100644
--- a/core/res/res/values-cs/strings.xml
+++ b/core/res/res/values-cs/strings.xml
@@ -306,6 +306,18 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"Tělesné senzory"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"přístup k datům ze snímačů vašich životních funkcí"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"Povolit aplikaci <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> přístup k údajům ze snímačů vašich životních funkcí?"</string>
+ <!-- no translation found for permgrouplab_aural (965607064083134896) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_aural (4870189506255958055) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_aural (6787926123071735620) -->
+ <skip />
+ <!-- no translation found for permgrouplab_visual (8030190588123857921) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_visual (3415827902566663546) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_visual (6907523945030290376) -->
+ <skip />
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Načítat obsah oken"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Může prozkoumávat obsah oken, se kterými pracujete."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Zapnout funkci Prozkoumání dotykem"</string>
@@ -500,6 +512,34 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"Umožňuje aplikaci volat metody k přidání a smazání šablon otisků prstů, které budou použity."</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"použití hardwaru na čtení otisků prstů"</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"Umožňuje aplikaci použít k ověření hardware na čtení otisků prstů"</string>
+ <!-- no translation found for permlab_audioRead (6617225220728465565) -->
+ <skip />
+ <!-- no translation found for permdesc_audioRead (5034032570243484805) -->
+ <skip />
+ <!-- no translation found for permlab_audioWrite (2661772059799779292) -->
+ <skip />
+ <!-- no translation found for permdesc_audioWrite (8888544708166230494) -->
+ <skip />
+ <!-- no translation found for permlab_videoRead (9182618678674737229) -->
+ <skip />
+ <!-- no translation found for permdesc_videoRead (7045676429859396194) -->
+ <skip />
+ <!-- no translation found for permlab_videoWrite (128769316366746446) -->
+ <skip />
+ <!-- no translation found for permdesc_videoWrite (5448565757490640841) -->
+ <skip />
+ <!-- no translation found for permlab_imagesRead (3015078545742665304) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesRead (3144263806038695580) -->
+ <skip />
+ <!-- no translation found for permlab_imagesWrite (3391306186247235510) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesWrite (7073662756617474375) -->
+ <skip />
+ <!-- no translation found for permlab_mediaLocation (8675148183726247864) -->
+ <skip />
+ <!-- no translation found for permdesc_mediaLocation (2237023389178865130) -->
+ <skip />
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Byla zjištěna jen část otisku prstu. Zkuste to znovu."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Zpracování otisku prstu se nezdařilo. Zkuste to znovu."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Senzor otisků prstů je znečištěn. Vyčistěte jej a zkuste to znovu."</string>
@@ -1942,8 +1982,18 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"Uložit položku <xliff:g id="TYPE">%1$s</xliff:g> do služby <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Uložit položky <xliff:g id="TYPE_0">%1$s</xliff:g> a <xliff:g id="TYPE_1">%2$s</xliff:g> do služby <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Uložit položky <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> a <xliff:g id="TYPE_2">%3$s</xliff:g> do služby <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string>
+ <!-- no translation found for autofill_update_title (4879673117448810818) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_type (339733442087186755) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) -->
+ <skip />
<string name="autofill_save_yes" msgid="6398026094049005921">"Uložit"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"Ne, děkuji"</string>
+ <!-- no translation found for autofill_update_yes (310358413273276958) -->
+ <skip />
<string name="autofill_save_type_password" msgid="5288448918465971568">"heslo"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"adresa"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"platební karta"</string>
diff --git a/core/res/res/values-da/strings.xml b/core/res/res/values-da/strings.xml
index 947754f..909cd10 100644
--- a/core/res/res/values-da/strings.xml
+++ b/core/res/res/values-da/strings.xml
@@ -300,6 +300,18 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"Kropssensorer"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"få adgang til sensordata om dine livstegn"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"Vil du give <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> adgang til sensordata om dine livstegn?"</string>
+ <!-- no translation found for permgrouplab_aural (965607064083134896) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_aural (4870189506255958055) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_aural (6787926123071735620) -->
+ <skip />
+ <!-- no translation found for permgrouplab_visual (8030190588123857921) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_visual (3415827902566663546) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_visual (6907523945030290376) -->
+ <skip />
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Hente indholdet i vinduet"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Undersøge indholdet i et vindue, du interagerer med."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Aktivere Udforsk ved berøring"</string>
@@ -494,6 +506,34 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"Tillader, at appen kan køre metoder til at tilføje og slette fingeraftryksskabeloner"</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"bruge fingeraftrykhardware"</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"Tillader, at appen kan bruge fingeraftrykhardware til godkendelse"</string>
+ <!-- no translation found for permlab_audioRead (6617225220728465565) -->
+ <skip />
+ <!-- no translation found for permdesc_audioRead (5034032570243484805) -->
+ <skip />
+ <!-- no translation found for permlab_audioWrite (2661772059799779292) -->
+ <skip />
+ <!-- no translation found for permdesc_audioWrite (8888544708166230494) -->
+ <skip />
+ <!-- no translation found for permlab_videoRead (9182618678674737229) -->
+ <skip />
+ <!-- no translation found for permdesc_videoRead (7045676429859396194) -->
+ <skip />
+ <!-- no translation found for permlab_videoWrite (128769316366746446) -->
+ <skip />
+ <!-- no translation found for permdesc_videoWrite (5448565757490640841) -->
+ <skip />
+ <!-- no translation found for permlab_imagesRead (3015078545742665304) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesRead (3144263806038695580) -->
+ <skip />
+ <!-- no translation found for permlab_imagesWrite (3391306186247235510) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesWrite (7073662756617474375) -->
+ <skip />
+ <!-- no translation found for permlab_mediaLocation (8675148183726247864) -->
+ <skip />
+ <!-- no translation found for permdesc_mediaLocation (2237023389178865130) -->
+ <skip />
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Der blev registreret et delvist fingeraftryk. Prøv igen."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Fingeraftrykket kunne ikke behandles. Prøv igen."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Sensoren til registrering af fingeraftryk er beskidt. Tør den af, og prøv igen."</string>
@@ -1872,8 +1912,18 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"Vil du gemme <xliff:g id="TYPE">%1$s</xliff:g> i <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Vil du gemme <xliff:g id="TYPE_0">%1$s</xliff:g> og <xliff:g id="TYPE_1">%2$s</xliff:g> i <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Vil du gemme <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> og <xliff:g id="TYPE_2">%3$s</xliff:g> i <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string>
+ <!-- no translation found for autofill_update_title (4879673117448810818) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_type (339733442087186755) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) -->
+ <skip />
<string name="autofill_save_yes" msgid="6398026094049005921">"Gem"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"Nej tak"</string>
+ <!-- no translation found for autofill_update_yes (310358413273276958) -->
+ <skip />
<string name="autofill_save_type_password" msgid="5288448918465971568">"adgangskode"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"adresse"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"kreditkort"</string>
diff --git a/core/res/res/values-de/strings.xml b/core/res/res/values-de/strings.xml
index 8dc0ba4..e843488 100644
--- a/core/res/res/values-de/strings.xml
+++ b/core/res/res/values-de/strings.xml
@@ -300,6 +300,18 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"Körpersensoren"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"auf Sensordaten zu deinen Vitaldaten zugreifen"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> erlauben, auf Sensordaten zu deinen Vitalfunktionen zuzugreifen?"</string>
+ <!-- no translation found for permgrouplab_aural (965607064083134896) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_aural (4870189506255958055) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_aural (6787926123071735620) -->
+ <skip />
+ <!-- no translation found for permgrouplab_visual (8030190588123857921) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_visual (3415827902566663546) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_visual (6907523945030290376) -->
+ <skip />
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Fensterinhalte abrufen"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Die Inhalte eines Fensters, mit dem du interagierst, werden abgerufen."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"\"Tippen & Entdecken\" aktivieren"</string>
@@ -494,6 +506,34 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"Erlaubt der App, Methoden zum Hinzufügen und Löschen zu verwendender Fingerabdruckvorlagen aufzurufen"</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"Fingerabdruckhardware verwenden"</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"Erlaubt der App, Fingerabdruckhardware zur Authentifizierung zu verwenden"</string>
+ <!-- no translation found for permlab_audioRead (6617225220728465565) -->
+ <skip />
+ <!-- no translation found for permdesc_audioRead (5034032570243484805) -->
+ <skip />
+ <!-- no translation found for permlab_audioWrite (2661772059799779292) -->
+ <skip />
+ <!-- no translation found for permdesc_audioWrite (8888544708166230494) -->
+ <skip />
+ <!-- no translation found for permlab_videoRead (9182618678674737229) -->
+ <skip />
+ <!-- no translation found for permdesc_videoRead (7045676429859396194) -->
+ <skip />
+ <!-- no translation found for permlab_videoWrite (128769316366746446) -->
+ <skip />
+ <!-- no translation found for permdesc_videoWrite (5448565757490640841) -->
+ <skip />
+ <!-- no translation found for permlab_imagesRead (3015078545742665304) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesRead (3144263806038695580) -->
+ <skip />
+ <!-- no translation found for permlab_imagesWrite (3391306186247235510) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesWrite (7073662756617474375) -->
+ <skip />
+ <!-- no translation found for permlab_mediaLocation (8675148183726247864) -->
+ <skip />
+ <!-- no translation found for permdesc_mediaLocation (2237023389178865130) -->
+ <skip />
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Fingerabdruck teilweise erkannt. Versuche es erneut."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Fingerabdruck konnte nicht verarbeitet werden. Versuche es erneut."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Fingerabdrucksensor ist verschmutzt. Reinige ihn und versuche es erneut."</string>
@@ -1872,8 +1912,18 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"<xliff:g id="TYPE">%1$s</xliff:g> in <b><xliff:g id="LABEL">%2$s</xliff:g></b> speichern?"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"<xliff:g id="TYPE_0">%1$s</xliff:g> und <xliff:g id="TYPE_1">%2$s</xliff:g> in <b><xliff:g id="LABEL">%3$s</xliff:g></b> speichern?"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"<xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> und <xliff:g id="TYPE_2">%3$s</xliff:g> in <b><xliff:g id="LABEL">%4$s</xliff:g></b> speichern?"</string>
+ <!-- no translation found for autofill_update_title (4879673117448810818) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_type (339733442087186755) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) -->
+ <skip />
<string name="autofill_save_yes" msgid="6398026094049005921">"Speichern"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"Nein danke"</string>
+ <!-- no translation found for autofill_update_yes (310358413273276958) -->
+ <skip />
<string name="autofill_save_type_password" msgid="5288448918465971568">"Passwort"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"Adresse"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"Kreditkarte"</string>
diff --git a/core/res/res/values-el/strings.xml b/core/res/res/values-el/strings.xml
index c6acc9e..ef8b072 100644
--- a/core/res/res/values-el/strings.xml
+++ b/core/res/res/values-el/strings.xml
@@ -300,6 +300,18 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"Αισθητήρες σώματος"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"πρόσβαση στα δεδομένα αισθητήρα σχετικά με τις ζωτικές ενδείξεις σας"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"Να επιτρέπεται στην εφαρμογή <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> να έχει πρόσβαση στα δεδομένα αισθητήρα σχετικά με τις ζωτικές ενδείξεις σας;"</string>
+ <!-- no translation found for permgrouplab_aural (965607064083134896) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_aural (4870189506255958055) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_aural (6787926123071735620) -->
+ <skip />
+ <!-- no translation found for permgrouplab_visual (8030190588123857921) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_visual (3415827902566663546) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_visual (6907523945030290376) -->
+ <skip />
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Ανάκτηση του περιεχομένου του παραθύρου"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Έλεγχος του περιεχομένου ενός παραθύρου με το οποίο αλληλεπιδράτε."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Ενεργοποίηση της \"Εξερεύνησης με άγγιγμα\""</string>
@@ -320,7 +332,7 @@
<string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Επιτρέπει στην εφαρμογή να αναπτύξει ή να συμπτύξει τη γραμμή κατάστασης."</string>
<string name="permlab_install_shortcut" msgid="4279070216371564234">"εγκαθιστά συντομεύσεις"</string>
<string name="permdesc_install_shortcut" msgid="8341295916286736996">"Επιτρέπει σε μια εφαρμογή την προσθήκη συντομεύσεων στην Αρχική οθόνη χωρίς την παρέμβαση του χρήστη."</string>
- <string name="permlab_uninstall_shortcut" msgid="4729634524044003699">"καταργεί την εγκατάσταση συντομεύσεων"</string>
+ <string name="permlab_uninstall_shortcut" msgid="4729634524044003699">"απεγκατάσταση συντομεύσεων"</string>
<string name="permdesc_uninstall_shortcut" msgid="6745743474265057975">"Επιτρέπει στην εφαρμογή την κατάργηση συντομεύσεων από την Αρχική οθόνη χωρίς την παρέμβαση του χρήστη."</string>
<string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"αναδρομολογεί τις εξερχόμενες κλήσεις"</string>
<string name="permdesc_processOutgoingCalls" msgid="5156385005547315876">"Επιτρέπει στην εφαρμογή να βλέπει τον αριθμό που καλέσατε κατά τη διάρκεια μιας εξερχόμενης κλήσης με επιλογή ανακατεύθυνσης της κλήσης σε έναν διαφορετικό αριθμό ή διακοπής της κλήσης."</string>
@@ -494,6 +506,34 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"Επιτρέπει στην εφαρμογή να επικαλείται μεθόδους για την προσθήκη και τη διαγραφή προτύπων μοναδικού χαρακτηριστικού για χρήση."</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"χρησιμοποιεί τον εξοπλισμό δακτυλικού αποτυπώματος"</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"Επιτρέπει στην εφαρμογή να χρησιμοποιεί εξοπλισμό μοναδικού χαρακτηριστικού για έλεγχο ταυτότητας"</string>
+ <!-- no translation found for permlab_audioRead (6617225220728465565) -->
+ <skip />
+ <!-- no translation found for permdesc_audioRead (5034032570243484805) -->
+ <skip />
+ <!-- no translation found for permlab_audioWrite (2661772059799779292) -->
+ <skip />
+ <!-- no translation found for permdesc_audioWrite (8888544708166230494) -->
+ <skip />
+ <!-- no translation found for permlab_videoRead (9182618678674737229) -->
+ <skip />
+ <!-- no translation found for permdesc_videoRead (7045676429859396194) -->
+ <skip />
+ <!-- no translation found for permlab_videoWrite (128769316366746446) -->
+ <skip />
+ <!-- no translation found for permdesc_videoWrite (5448565757490640841) -->
+ <skip />
+ <!-- no translation found for permlab_imagesRead (3015078545742665304) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesRead (3144263806038695580) -->
+ <skip />
+ <!-- no translation found for permlab_imagesWrite (3391306186247235510) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesWrite (7073662756617474375) -->
+ <skip />
+ <!-- no translation found for permlab_mediaLocation (8675148183726247864) -->
+ <skip />
+ <!-- no translation found for permdesc_mediaLocation (2237023389178865130) -->
+ <skip />
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Εντοπίστηκε μερικό μοναδικό χαρακτηριστικό. Δοκιμάστε ξανά."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Δεν ήταν δυνατή η επεξεργασία του μοναδικού χαρακτηριστικού. Δοκιμάστε ξανά."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Ο αισθητήρας μοναδικού χαρακτηριστικού δεν είναι καθαρός. Καθαρίστε τον και δοκιμάστε ξανά."</string>
@@ -1872,8 +1912,18 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"Αποθήκευση <xliff:g id="TYPE">%1$s</xliff:g> σε <b><xliff:g id="LABEL">%2$s</xliff:g></b>;"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Αποθήκευση <xliff:g id="TYPE_0">%1$s</xliff:g> και <xliff:g id="TYPE_1">%2$s</xliff:g> σε <b><xliff:g id="LABEL">%3$s</xliff:g></b>;"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Αποθήκευση <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> και <xliff:g id="TYPE_2">%3$s</xliff:g> σε <b><xliff:g id="LABEL">%4$s</xliff:g></b>;"</string>
+ <!-- no translation found for autofill_update_title (4879673117448810818) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_type (339733442087186755) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) -->
+ <skip />
<string name="autofill_save_yes" msgid="6398026094049005921">"Αποθήκευση"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"Όχι, ευχαριστώ"</string>
+ <!-- no translation found for autofill_update_yes (310358413273276958) -->
+ <skip />
<string name="autofill_save_type_password" msgid="5288448918465971568">"κωδικός πρόσβασης"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"διεύθυνση"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"πιστωτική κάρτα"</string>
diff --git a/core/res/res/values-en-rAU/strings.xml b/core/res/res/values-en-rAU/strings.xml
index f70ba3b..19d0916 100644
--- a/core/res/res/values-en-rAU/strings.xml
+++ b/core/res/res/values-en-rAU/strings.xml
@@ -300,6 +300,12 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"Body sensors"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"access sensor data about your vital signs"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"Allow <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> to access sensor data about your vital signs?"</string>
+ <string name="permgrouplab_aural" msgid="965607064083134896">"Music"</string>
+ <string name="permgroupdesc_aural" msgid="4870189506255958055">"access your music"</string>
+ <string name="permgrouprequest_aural" msgid="6787926123071735620">"Allow <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> to access your music?"</string>
+ <string name="permgrouplab_visual" msgid="8030190588123857921">"Photos & Videos"</string>
+ <string name="permgroupdesc_visual" msgid="3415827902566663546">"access your photos & videos"</string>
+ <string name="permgrouprequest_visual" msgid="6907523945030290376">"Allow <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> to access your photos & videos?"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Retrieve window content"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Inspect the content of a window that you\'re interacting with."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Turn on Explore by Touch"</string>
@@ -494,6 +500,20 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"Allows the app to invoke methods to add and delete fingerprint templates for use."</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"Use fingerprint hardware"</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"Allows the app to use fingerprint hardware for authentication"</string>
+ <string name="permlab_audioRead" msgid="6617225220728465565">"read your music collection"</string>
+ <string name="permdesc_audioRead" msgid="5034032570243484805">"Allows the app to read your music collection."</string>
+ <string name="permlab_audioWrite" msgid="2661772059799779292">"modify your music collection"</string>
+ <string name="permdesc_audioWrite" msgid="8888544708166230494">"Allows the app to modify your music collection."</string>
+ <string name="permlab_videoRead" msgid="9182618678674737229">"read your video collection"</string>
+ <string name="permdesc_videoRead" msgid="7045676429859396194">"Allows the app to read your video collection."</string>
+ <string name="permlab_videoWrite" msgid="128769316366746446">"modify your video collection"</string>
+ <string name="permdesc_videoWrite" msgid="5448565757490640841">"Allows the app to modify your video collection."</string>
+ <string name="permlab_imagesRead" msgid="3015078545742665304">"read your photo collection"</string>
+ <string name="permdesc_imagesRead" msgid="3144263806038695580">"Allows the app to read your photo collection."</string>
+ <string name="permlab_imagesWrite" msgid="3391306186247235510">"modify your photo collection"</string>
+ <string name="permdesc_imagesWrite" msgid="7073662756617474375">"Allows the app to modify your photo collection."</string>
+ <string name="permlab_mediaLocation" msgid="8675148183726247864">"read locations from your media collection"</string>
+ <string name="permdesc_mediaLocation" msgid="2237023389178865130">"Allows the app to read locations from your media collection."</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Partial fingerprint detected. Please try again."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Couldn\'t process fingerprint. Please try again."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Fingerprint sensor is dirty. Please clean and try again."</string>
@@ -1872,8 +1892,13 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"Save <xliff:g id="TYPE">%1$s</xliff:g> to <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Save <xliff:g id="TYPE_0">%1$s</xliff:g> and <xliff:g id="TYPE_1">%2$s</xliff:g> to <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Save <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g>, and <xliff:g id="TYPE_2">%3$s</xliff:g> to <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string>
+ <string name="autofill_update_title" msgid="4879673117448810818">"Update to <b><xliff:g id="LABEL">%1$s</xliff:g></b>?"</string>
+ <string name="autofill_update_title_with_type" msgid="339733442087186755">"Update <xliff:g id="TYPE">%1$s</xliff:g> to <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string>
+ <string name="autofill_update_title_with_2types" msgid="6321714204167424745">"Update <xliff:g id="TYPE_0">%1$s</xliff:g> and <xliff:g id="TYPE_1">%2$s</xliff:g> to <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string>
+ <string name="autofill_update_title_with_3types" msgid="5866735124066629287">"Update <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> and <xliff:g id="TYPE_2">%3$s</xliff:g> to <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string>
<string name="autofill_save_yes" msgid="6398026094049005921">"Save"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"No, thanks"</string>
+ <string name="autofill_update_yes" msgid="310358413273276958">"Update"</string>
<string name="autofill_save_type_password" msgid="5288448918465971568">"password"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"address"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"credit card"</string>
diff --git a/core/res/res/values-en-rCA/strings.xml b/core/res/res/values-en-rCA/strings.xml
index 1ab78f1..1e2e081 100644
--- a/core/res/res/values-en-rCA/strings.xml
+++ b/core/res/res/values-en-rCA/strings.xml
@@ -300,6 +300,12 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"Body sensors"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"access sensor data about your vital signs"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"Allow <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> to access sensor data about your vital signs?"</string>
+ <string name="permgrouplab_aural" msgid="965607064083134896">"Music"</string>
+ <string name="permgroupdesc_aural" msgid="4870189506255958055">"access your music"</string>
+ <string name="permgrouprequest_aural" msgid="6787926123071735620">"Allow <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> to access your music?"</string>
+ <string name="permgrouplab_visual" msgid="8030190588123857921">"Photos & Videos"</string>
+ <string name="permgroupdesc_visual" msgid="3415827902566663546">"access your photos & videos"</string>
+ <string name="permgrouprequest_visual" msgid="6907523945030290376">"Allow <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> to access your photos & videos?"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Retrieve window content"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Inspect the content of a window that you\'re interacting with."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Turn on Explore by Touch"</string>
@@ -494,6 +500,20 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"Allows the app to invoke methods to add and delete fingerprint templates for use."</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"Use fingerprint hardware"</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"Allows the app to use fingerprint hardware for authentication"</string>
+ <string name="permlab_audioRead" msgid="6617225220728465565">"read your music collection"</string>
+ <string name="permdesc_audioRead" msgid="5034032570243484805">"Allows the app to read your music collection."</string>
+ <string name="permlab_audioWrite" msgid="2661772059799779292">"modify your music collection"</string>
+ <string name="permdesc_audioWrite" msgid="8888544708166230494">"Allows the app to modify your music collection."</string>
+ <string name="permlab_videoRead" msgid="9182618678674737229">"read your video collection"</string>
+ <string name="permdesc_videoRead" msgid="7045676429859396194">"Allows the app to read your video collection."</string>
+ <string name="permlab_videoWrite" msgid="128769316366746446">"modify your video collection"</string>
+ <string name="permdesc_videoWrite" msgid="5448565757490640841">"Allows the app to modify your video collection."</string>
+ <string name="permlab_imagesRead" msgid="3015078545742665304">"read your photo collection"</string>
+ <string name="permdesc_imagesRead" msgid="3144263806038695580">"Allows the app to read your photo collection."</string>
+ <string name="permlab_imagesWrite" msgid="3391306186247235510">"modify your photo collection"</string>
+ <string name="permdesc_imagesWrite" msgid="7073662756617474375">"Allows the app to modify your photo collection."</string>
+ <string name="permlab_mediaLocation" msgid="8675148183726247864">"read locations from your media collection"</string>
+ <string name="permdesc_mediaLocation" msgid="2237023389178865130">"Allows the app to read locations from your media collection."</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Partial fingerprint detected. Please try again."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Couldn\'t process fingerprint. Please try again."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Fingerprint sensor is dirty. Please clean and try again."</string>
@@ -1872,8 +1892,13 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"Save <xliff:g id="TYPE">%1$s</xliff:g> to <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Save <xliff:g id="TYPE_0">%1$s</xliff:g> and <xliff:g id="TYPE_1">%2$s</xliff:g> to <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Save <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g>, and <xliff:g id="TYPE_2">%3$s</xliff:g> to <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string>
+ <string name="autofill_update_title" msgid="4879673117448810818">"Update to <b><xliff:g id="LABEL">%1$s</xliff:g></b>?"</string>
+ <string name="autofill_update_title_with_type" msgid="339733442087186755">"Update <xliff:g id="TYPE">%1$s</xliff:g> to <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string>
+ <string name="autofill_update_title_with_2types" msgid="6321714204167424745">"Update <xliff:g id="TYPE_0">%1$s</xliff:g> and <xliff:g id="TYPE_1">%2$s</xliff:g> to <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string>
+ <string name="autofill_update_title_with_3types" msgid="5866735124066629287">"Update <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> and <xliff:g id="TYPE_2">%3$s</xliff:g> to <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string>
<string name="autofill_save_yes" msgid="6398026094049005921">"Save"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"No, thanks"</string>
+ <string name="autofill_update_yes" msgid="310358413273276958">"Update"</string>
<string name="autofill_save_type_password" msgid="5288448918465971568">"password"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"address"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"credit card"</string>
diff --git a/core/res/res/values-en-rGB/strings.xml b/core/res/res/values-en-rGB/strings.xml
index f70ba3b..19d0916 100644
--- a/core/res/res/values-en-rGB/strings.xml
+++ b/core/res/res/values-en-rGB/strings.xml
@@ -300,6 +300,12 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"Body sensors"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"access sensor data about your vital signs"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"Allow <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> to access sensor data about your vital signs?"</string>
+ <string name="permgrouplab_aural" msgid="965607064083134896">"Music"</string>
+ <string name="permgroupdesc_aural" msgid="4870189506255958055">"access your music"</string>
+ <string name="permgrouprequest_aural" msgid="6787926123071735620">"Allow <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> to access your music?"</string>
+ <string name="permgrouplab_visual" msgid="8030190588123857921">"Photos & Videos"</string>
+ <string name="permgroupdesc_visual" msgid="3415827902566663546">"access your photos & videos"</string>
+ <string name="permgrouprequest_visual" msgid="6907523945030290376">"Allow <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> to access your photos & videos?"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Retrieve window content"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Inspect the content of a window that you\'re interacting with."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Turn on Explore by Touch"</string>
@@ -494,6 +500,20 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"Allows the app to invoke methods to add and delete fingerprint templates for use."</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"Use fingerprint hardware"</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"Allows the app to use fingerprint hardware for authentication"</string>
+ <string name="permlab_audioRead" msgid="6617225220728465565">"read your music collection"</string>
+ <string name="permdesc_audioRead" msgid="5034032570243484805">"Allows the app to read your music collection."</string>
+ <string name="permlab_audioWrite" msgid="2661772059799779292">"modify your music collection"</string>
+ <string name="permdesc_audioWrite" msgid="8888544708166230494">"Allows the app to modify your music collection."</string>
+ <string name="permlab_videoRead" msgid="9182618678674737229">"read your video collection"</string>
+ <string name="permdesc_videoRead" msgid="7045676429859396194">"Allows the app to read your video collection."</string>
+ <string name="permlab_videoWrite" msgid="128769316366746446">"modify your video collection"</string>
+ <string name="permdesc_videoWrite" msgid="5448565757490640841">"Allows the app to modify your video collection."</string>
+ <string name="permlab_imagesRead" msgid="3015078545742665304">"read your photo collection"</string>
+ <string name="permdesc_imagesRead" msgid="3144263806038695580">"Allows the app to read your photo collection."</string>
+ <string name="permlab_imagesWrite" msgid="3391306186247235510">"modify your photo collection"</string>
+ <string name="permdesc_imagesWrite" msgid="7073662756617474375">"Allows the app to modify your photo collection."</string>
+ <string name="permlab_mediaLocation" msgid="8675148183726247864">"read locations from your media collection"</string>
+ <string name="permdesc_mediaLocation" msgid="2237023389178865130">"Allows the app to read locations from your media collection."</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Partial fingerprint detected. Please try again."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Couldn\'t process fingerprint. Please try again."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Fingerprint sensor is dirty. Please clean and try again."</string>
@@ -1872,8 +1892,13 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"Save <xliff:g id="TYPE">%1$s</xliff:g> to <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Save <xliff:g id="TYPE_0">%1$s</xliff:g> and <xliff:g id="TYPE_1">%2$s</xliff:g> to <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Save <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g>, and <xliff:g id="TYPE_2">%3$s</xliff:g> to <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string>
+ <string name="autofill_update_title" msgid="4879673117448810818">"Update to <b><xliff:g id="LABEL">%1$s</xliff:g></b>?"</string>
+ <string name="autofill_update_title_with_type" msgid="339733442087186755">"Update <xliff:g id="TYPE">%1$s</xliff:g> to <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string>
+ <string name="autofill_update_title_with_2types" msgid="6321714204167424745">"Update <xliff:g id="TYPE_0">%1$s</xliff:g> and <xliff:g id="TYPE_1">%2$s</xliff:g> to <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string>
+ <string name="autofill_update_title_with_3types" msgid="5866735124066629287">"Update <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> and <xliff:g id="TYPE_2">%3$s</xliff:g> to <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string>
<string name="autofill_save_yes" msgid="6398026094049005921">"Save"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"No, thanks"</string>
+ <string name="autofill_update_yes" msgid="310358413273276958">"Update"</string>
<string name="autofill_save_type_password" msgid="5288448918465971568">"password"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"address"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"credit card"</string>
diff --git a/core/res/res/values-en-rIN/strings.xml b/core/res/res/values-en-rIN/strings.xml
index f70ba3b..19d0916 100644
--- a/core/res/res/values-en-rIN/strings.xml
+++ b/core/res/res/values-en-rIN/strings.xml
@@ -300,6 +300,12 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"Body sensors"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"access sensor data about your vital signs"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"Allow <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> to access sensor data about your vital signs?"</string>
+ <string name="permgrouplab_aural" msgid="965607064083134896">"Music"</string>
+ <string name="permgroupdesc_aural" msgid="4870189506255958055">"access your music"</string>
+ <string name="permgrouprequest_aural" msgid="6787926123071735620">"Allow <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> to access your music?"</string>
+ <string name="permgrouplab_visual" msgid="8030190588123857921">"Photos & Videos"</string>
+ <string name="permgroupdesc_visual" msgid="3415827902566663546">"access your photos & videos"</string>
+ <string name="permgrouprequest_visual" msgid="6907523945030290376">"Allow <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> to access your photos & videos?"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Retrieve window content"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Inspect the content of a window that you\'re interacting with."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Turn on Explore by Touch"</string>
@@ -494,6 +500,20 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"Allows the app to invoke methods to add and delete fingerprint templates for use."</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"Use fingerprint hardware"</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"Allows the app to use fingerprint hardware for authentication"</string>
+ <string name="permlab_audioRead" msgid="6617225220728465565">"read your music collection"</string>
+ <string name="permdesc_audioRead" msgid="5034032570243484805">"Allows the app to read your music collection."</string>
+ <string name="permlab_audioWrite" msgid="2661772059799779292">"modify your music collection"</string>
+ <string name="permdesc_audioWrite" msgid="8888544708166230494">"Allows the app to modify your music collection."</string>
+ <string name="permlab_videoRead" msgid="9182618678674737229">"read your video collection"</string>
+ <string name="permdesc_videoRead" msgid="7045676429859396194">"Allows the app to read your video collection."</string>
+ <string name="permlab_videoWrite" msgid="128769316366746446">"modify your video collection"</string>
+ <string name="permdesc_videoWrite" msgid="5448565757490640841">"Allows the app to modify your video collection."</string>
+ <string name="permlab_imagesRead" msgid="3015078545742665304">"read your photo collection"</string>
+ <string name="permdesc_imagesRead" msgid="3144263806038695580">"Allows the app to read your photo collection."</string>
+ <string name="permlab_imagesWrite" msgid="3391306186247235510">"modify your photo collection"</string>
+ <string name="permdesc_imagesWrite" msgid="7073662756617474375">"Allows the app to modify your photo collection."</string>
+ <string name="permlab_mediaLocation" msgid="8675148183726247864">"read locations from your media collection"</string>
+ <string name="permdesc_mediaLocation" msgid="2237023389178865130">"Allows the app to read locations from your media collection."</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Partial fingerprint detected. Please try again."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Couldn\'t process fingerprint. Please try again."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Fingerprint sensor is dirty. Please clean and try again."</string>
@@ -1872,8 +1892,13 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"Save <xliff:g id="TYPE">%1$s</xliff:g> to <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Save <xliff:g id="TYPE_0">%1$s</xliff:g> and <xliff:g id="TYPE_1">%2$s</xliff:g> to <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Save <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g>, and <xliff:g id="TYPE_2">%3$s</xliff:g> to <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string>
+ <string name="autofill_update_title" msgid="4879673117448810818">"Update to <b><xliff:g id="LABEL">%1$s</xliff:g></b>?"</string>
+ <string name="autofill_update_title_with_type" msgid="339733442087186755">"Update <xliff:g id="TYPE">%1$s</xliff:g> to <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string>
+ <string name="autofill_update_title_with_2types" msgid="6321714204167424745">"Update <xliff:g id="TYPE_0">%1$s</xliff:g> and <xliff:g id="TYPE_1">%2$s</xliff:g> to <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string>
+ <string name="autofill_update_title_with_3types" msgid="5866735124066629287">"Update <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> and <xliff:g id="TYPE_2">%3$s</xliff:g> to <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string>
<string name="autofill_save_yes" msgid="6398026094049005921">"Save"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"No, thanks"</string>
+ <string name="autofill_update_yes" msgid="310358413273276958">"Update"</string>
<string name="autofill_save_type_password" msgid="5288448918465971568">"password"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"address"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"credit card"</string>
diff --git a/core/res/res/values-en-rXC/strings.xml b/core/res/res/values-en-rXC/strings.xml
index a4c8615..68bc261 100644
--- a/core/res/res/values-en-rXC/strings.xml
+++ b/core/res/res/values-en-rXC/strings.xml
@@ -300,6 +300,12 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"Body Sensors"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"access sensor data about your vital signs"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"Allow <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> to access sensor data about your vital signs?"</string>
+ <string name="permgrouplab_aural" msgid="965607064083134896">"Music"</string>
+ <string name="permgroupdesc_aural" msgid="4870189506255958055">"access your music"</string>
+ <string name="permgrouprequest_aural" msgid="6787926123071735620">"Allow <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> to access your music?"</string>
+ <string name="permgrouplab_visual" msgid="8030190588123857921">"Photos & Videos"</string>
+ <string name="permgroupdesc_visual" msgid="3415827902566663546">"access your photos & videos"</string>
+ <string name="permgrouprequest_visual" msgid="6907523945030290376">"Allow <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> to access your photos & videos?"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Retrieve window content"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Inspect the content of a window you\'re interacting with."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Turn on Explore by Touch"</string>
@@ -494,6 +500,20 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"Allows the app to invoke methods to add and delete fingerprint templates for use."</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"use fingerprint hardware"</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"Allows the app to use fingerprint hardware for authentication"</string>
+ <string name="permlab_audioRead" msgid="6617225220728465565">"read your music collection"</string>
+ <string name="permdesc_audioRead" msgid="5034032570243484805">"Allows the app to read your music collection."</string>
+ <string name="permlab_audioWrite" msgid="2661772059799779292">"modify your music collection"</string>
+ <string name="permdesc_audioWrite" msgid="8888544708166230494">"Allows the app to modify your music collection."</string>
+ <string name="permlab_videoRead" msgid="9182618678674737229">"read your video collection"</string>
+ <string name="permdesc_videoRead" msgid="7045676429859396194">"Allows the app to read your video collection."</string>
+ <string name="permlab_videoWrite" msgid="128769316366746446">"modify your video collection"</string>
+ <string name="permdesc_videoWrite" msgid="5448565757490640841">"Allows the app to modify your video collection."</string>
+ <string name="permlab_imagesRead" msgid="3015078545742665304">"read your photo collection"</string>
+ <string name="permdesc_imagesRead" msgid="3144263806038695580">"Allows the app to read your photo collection."</string>
+ <string name="permlab_imagesWrite" msgid="3391306186247235510">"modify your photo collection"</string>
+ <string name="permdesc_imagesWrite" msgid="7073662756617474375">"Allows the app to modify your photo collection."</string>
+ <string name="permlab_mediaLocation" msgid="8675148183726247864">"read locations from your media collection"</string>
+ <string name="permdesc_mediaLocation" msgid="2237023389178865130">"Allows the app to read locations from your media collection."</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Partial fingerprint detected. Please try again."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Couldn\'t process fingerprint. Please try again."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Fingerprint sensor is dirty. Please clean and try again."</string>
@@ -1872,8 +1892,13 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"Save <xliff:g id="TYPE">%1$s</xliff:g> to <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Save <xliff:g id="TYPE_0">%1$s</xliff:g> and <xliff:g id="TYPE_1">%2$s</xliff:g> to <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Save <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g>, and <xliff:g id="TYPE_2">%3$s</xliff:g> to <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string>
+ <string name="autofill_update_title" msgid="4879673117448810818">"Update to <b><xliff:g id="LABEL">%1$s</xliff:g></b>?"</string>
+ <string name="autofill_update_title_with_type" msgid="339733442087186755">"Update <xliff:g id="TYPE">%1$s</xliff:g> to <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string>
+ <string name="autofill_update_title_with_2types" msgid="6321714204167424745">"Update <xliff:g id="TYPE_0">%1$s</xliff:g> and <xliff:g id="TYPE_1">%2$s</xliff:g> to <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string>
+ <string name="autofill_update_title_with_3types" msgid="5866735124066629287">"Update <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g>, and <xliff:g id="TYPE_2">%3$s</xliff:g> to <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string>
<string name="autofill_save_yes" msgid="6398026094049005921">"Save"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"No thanks"</string>
+ <string name="autofill_update_yes" msgid="310358413273276958">"Update"</string>
<string name="autofill_save_type_password" msgid="5288448918465971568">"password"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"address"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"credit card"</string>
diff --git a/core/res/res/values-es-rUS/strings.xml b/core/res/res/values-es-rUS/strings.xml
index 2b7c4bf..9969af3 100644
--- a/core/res/res/values-es-rUS/strings.xml
+++ b/core/res/res/values-es-rUS/strings.xml
@@ -300,6 +300,12 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"Sensores corporales"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"acceder a los datos del sensor acerca de tus signos vitales"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"¿Permitir que <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> acceda a los datos del sensor de tus signos vitales?"</string>
+ <string name="permgrouplab_aural" msgid="965607064083134896">"Música"</string>
+ <string name="permgroupdesc_aural" msgid="4870189506255958055">"acceder a tu música"</string>
+ <string name="permgrouprequest_aural" msgid="6787926123071735620">"¿Quieres permitir que <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> acceda a tu música?"</string>
+ <string name="permgrouplab_visual" msgid="8030190588123857921">"Fotos y videos"</string>
+ <string name="permgroupdesc_visual" msgid="3415827902566663546">"acceder a tus fotos y videos"</string>
+ <string name="permgrouprequest_visual" msgid="6907523945030290376">"¿Quieres permitir que <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> acceda a tus fotos y videos?"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Recuperar el contenido de las ventanas"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Inspecciona el contenido de la ventana con la que estés interactuando."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Activar la Exploración táctil"</string>
@@ -494,6 +500,20 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"Permite que la aplicación emplee métodos para agregar y eliminar plantillas de huellas digitales para su uso."</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"Utilizar hardware de huellas digitales"</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"Permite que la aplicación utilice el hardware de huellas digitales para realizar la autenticación."</string>
+ <string name="permlab_audioRead" msgid="6617225220728465565">"leer tu colección de música"</string>
+ <string name="permdesc_audioRead" msgid="5034032570243484805">"Permite que la app lea tu colección de música."</string>
+ <string name="permlab_audioWrite" msgid="2661772059799779292">"modificar tu colección de música"</string>
+ <string name="permdesc_audioWrite" msgid="8888544708166230494">"Permite que la app modifique tu colección de música."</string>
+ <string name="permlab_videoRead" msgid="9182618678674737229">"leer tu colección de videos"</string>
+ <string name="permdesc_videoRead" msgid="7045676429859396194">"Permite que la app lea tu colección de videos."</string>
+ <string name="permlab_videoWrite" msgid="128769316366746446">"modificar tu colección de videos"</string>
+ <string name="permdesc_videoWrite" msgid="5448565757490640841">"Permite que la app modifique tu colección de videos."</string>
+ <string name="permlab_imagesRead" msgid="3015078545742665304">"leer tu colección de fotos"</string>
+ <string name="permdesc_imagesRead" msgid="3144263806038695580">"Permite que la app lea tu colección de fotos."</string>
+ <string name="permlab_imagesWrite" msgid="3391306186247235510">"modificar tu colección de fotos"</string>
+ <string name="permdesc_imagesWrite" msgid="7073662756617474375">"Permite que la app modifique tu colección de fotos."</string>
+ <string name="permlab_mediaLocation" msgid="8675148183726247864">"leer ubicaciones de tu colección de contenido multimedia"</string>
+ <string name="permdesc_mediaLocation" msgid="2237023389178865130">"Permite que la app lea las ubicaciones de tu colección de contenido multimedia."</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"La huella digital se detectó parcialmente. Vuelve a intentarlo."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"No se pudo procesar la huella digital. Vuelve a intentarlo."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"El sensor de huellas digitales está sucio. Limpia el sensor y vuelve a intentarlo."</string>
@@ -1872,8 +1892,13 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"¿Quieres guardar tu <xliff:g id="TYPE">%1$s</xliff:g> en <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"¿Quieres guardar tu <xliff:g id="TYPE_0">%1$s</xliff:g> y <xliff:g id="TYPE_1">%2$s</xliff:g> en <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"¿Quieres guardar tu <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> y <xliff:g id="TYPE_2">%3$s</xliff:g> en <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string>
+ <string name="autofill_update_title" msgid="4879673117448810818">"¿Quieres actualizar los datos en <b><xliff:g id="LABEL">%1$s</xliff:g></b>?"</string>
+ <string name="autofill_update_title_with_type" msgid="339733442087186755">"¿Quieres actualizar tu <xliff:g id="TYPE">%1$s</xliff:g> en <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string>
+ <string name="autofill_update_title_with_2types" msgid="6321714204167424745">"¿Quieres actualizar tu <xliff:g id="TYPE_0">%1$s</xliff:g> y <xliff:g id="TYPE_1">%2$s</xliff:g> en <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string>
+ <string name="autofill_update_title_with_3types" msgid="5866735124066629287">"¿Quieres actualizar tu <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g>, y <xliff:g id="TYPE_2">%3$s</xliff:g> en <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string>
<string name="autofill_save_yes" msgid="6398026094049005921">"Guardar"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"No, gracias"</string>
+ <string name="autofill_update_yes" msgid="310358413273276958">"Actualizar"</string>
<string name="autofill_save_type_password" msgid="5288448918465971568">"contraseña"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"dirección"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"tarjeta de crédito"</string>
diff --git a/core/res/res/values-es/strings.xml b/core/res/res/values-es/strings.xml
index 36d0eb7..55e0526 100644
--- a/core/res/res/values-es/strings.xml
+++ b/core/res/res/values-es/strings.xml
@@ -300,6 +300,18 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"Sensores corporales"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"acceder a datos de sensores de tus constantes vitales"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"¿Quieres permitir que <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> acceda a los datos del sensor sobre tus constantes vitales?"</string>
+ <!-- no translation found for permgrouplab_aural (965607064083134896) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_aural (4870189506255958055) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_aural (6787926123071735620) -->
+ <skip />
+ <!-- no translation found for permgrouplab_visual (8030190588123857921) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_visual (3415827902566663546) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_visual (6907523945030290376) -->
+ <skip />
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Comprobar el contenido de la ventana"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Inspecciona el contenido de una ventana con la que estés interactuando."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Activar la exploración táctil"</string>
@@ -494,6 +506,34 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"Permite que la aplicación invoque métodos para añadir y eliminar plantillas de huellas digitales y utilizarlas."</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"utilizar hardware de huellas digitales"</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"Permite que la aplicación utilice el hardware de huellas digitales para realizar la autenticación"</string>
+ <!-- no translation found for permlab_audioRead (6617225220728465565) -->
+ <skip />
+ <!-- no translation found for permdesc_audioRead (5034032570243484805) -->
+ <skip />
+ <!-- no translation found for permlab_audioWrite (2661772059799779292) -->
+ <skip />
+ <!-- no translation found for permdesc_audioWrite (8888544708166230494) -->
+ <skip />
+ <!-- no translation found for permlab_videoRead (9182618678674737229) -->
+ <skip />
+ <!-- no translation found for permdesc_videoRead (7045676429859396194) -->
+ <skip />
+ <!-- no translation found for permlab_videoWrite (128769316366746446) -->
+ <skip />
+ <!-- no translation found for permdesc_videoWrite (5448565757490640841) -->
+ <skip />
+ <!-- no translation found for permlab_imagesRead (3015078545742665304) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesRead (3144263806038695580) -->
+ <skip />
+ <!-- no translation found for permlab_imagesWrite (3391306186247235510) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesWrite (7073662756617474375) -->
+ <skip />
+ <!-- no translation found for permlab_mediaLocation (8675148183726247864) -->
+ <skip />
+ <!-- no translation found for permdesc_mediaLocation (2237023389178865130) -->
+ <skip />
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Se ha detectado una huella digital parcial. Vuelve a intentarlo."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"No se ha podido procesar la huella digital. Vuelve a intentarlo."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"El sensor de huellas digitales está sucio. Límpialo y vuelve a intentarlo."</string>
@@ -1872,8 +1912,18 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"¿Guardar <xliff:g id="TYPE">%1$s</xliff:g> en <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"¿Guardar <xliff:g id="TYPE_0">%1$s</xliff:g> y <xliff:g id="TYPE_1">%2$s</xliff:g> en <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"¿Guardar <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> y <xliff:g id="TYPE_2">%3$s</xliff:g> en <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string>
+ <!-- no translation found for autofill_update_title (4879673117448810818) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_type (339733442087186755) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) -->
+ <skip />
<string name="autofill_save_yes" msgid="6398026094049005921">"Guardar"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"No, gracias"</string>
+ <!-- no translation found for autofill_update_yes (310358413273276958) -->
+ <skip />
<string name="autofill_save_type_password" msgid="5288448918465971568">"contraseña"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"dirección"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"tarjeta de crédito"</string>
diff --git a/core/res/res/values-et/strings.xml b/core/res/res/values-et/strings.xml
index 1e73bf1..758bf44 100644
--- a/core/res/res/values-et/strings.xml
+++ b/core/res/res/values-et/strings.xml
@@ -300,6 +300,18 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"Kehaandurid"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"juurdepääs anduri andmetele teie eluliste näitajate kohta"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"Kas lubada rakendusele <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> juurdepääs anduri andmetele teie eluliste näitajate kohta?"</string>
+ <!-- no translation found for permgrouplab_aural (965607064083134896) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_aural (4870189506255958055) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_aural (6787926123071735620) -->
+ <skip />
+ <!-- no translation found for permgrouplab_visual (8030190588123857921) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_visual (3415827902566663546) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_visual (6907523945030290376) -->
+ <skip />
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Akna sisu toomine"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Kasutatava akna sisu kontrollimine."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Puudutusega sirvimise sisselülitamine"</string>
@@ -494,6 +506,34 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"Võimaldab rakendusel tühistada meetodid kasutatavate sõrmejäljemallide lisamiseks ja kustutamiseks."</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"sõrmejälje riistvara kasutamine"</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"Võimaldab rakendusel autentimiseks kasutada sõrmejälje riistvara"</string>
+ <!-- no translation found for permlab_audioRead (6617225220728465565) -->
+ <skip />
+ <!-- no translation found for permdesc_audioRead (5034032570243484805) -->
+ <skip />
+ <!-- no translation found for permlab_audioWrite (2661772059799779292) -->
+ <skip />
+ <!-- no translation found for permdesc_audioWrite (8888544708166230494) -->
+ <skip />
+ <!-- no translation found for permlab_videoRead (9182618678674737229) -->
+ <skip />
+ <!-- no translation found for permdesc_videoRead (7045676429859396194) -->
+ <skip />
+ <!-- no translation found for permlab_videoWrite (128769316366746446) -->
+ <skip />
+ <!-- no translation found for permdesc_videoWrite (5448565757490640841) -->
+ <skip />
+ <!-- no translation found for permlab_imagesRead (3015078545742665304) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesRead (3144263806038695580) -->
+ <skip />
+ <!-- no translation found for permlab_imagesWrite (3391306186247235510) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesWrite (7073662756617474375) -->
+ <skip />
+ <!-- no translation found for permlab_mediaLocation (8675148183726247864) -->
+ <skip />
+ <!-- no translation found for permdesc_mediaLocation (2237023389178865130) -->
+ <skip />
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Tuvastati osaline sõrmejälg. Proovige uuesti."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Sõrmejälge ei õnnestunud töödelda. Proovige uuesti."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Sõrmejäljeandur on must. Puhastage see ja proovige uuesti."</string>
@@ -1872,8 +1912,18 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"Kas salvestada üksus <xliff:g id="TYPE">%1$s</xliff:g> teenusesse <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Kas salvestada üksused <xliff:g id="TYPE_0">%1$s</xliff:g> ja <xliff:g id="TYPE_1">%2$s</xliff:g> teenusesse <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Kas salvestada üksused <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> ja <xliff:g id="TYPE_2">%3$s</xliff:g> teenusesse <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string>
+ <!-- no translation found for autofill_update_title (4879673117448810818) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_type (339733442087186755) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) -->
+ <skip />
<string name="autofill_save_yes" msgid="6398026094049005921">"Salvesta"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"Tänan, ei"</string>
+ <!-- no translation found for autofill_update_yes (310358413273276958) -->
+ <skip />
<string name="autofill_save_type_password" msgid="5288448918465971568">"parool"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"aadress"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"krediitkaart"</string>
diff --git a/core/res/res/values-eu/strings.xml b/core/res/res/values-eu/strings.xml
index aa6edaa..567ca18 100644
--- a/core/res/res/values-eu/strings.xml
+++ b/core/res/res/values-eu/strings.xml
@@ -59,7 +59,7 @@
<string name="ClipMmi" msgid="6952821216480289285">"Sarrerako deien identifikazio-zerbitzua"</string>
<string name="ClirMmi" msgid="7784673673446833091">"Irteerako deien identifikazio-zerbitzua"</string>
<string name="ColpMmi" msgid="3065121483740183974">"Konektatutako linearen IDa"</string>
- <string name="ColrMmi" msgid="4996540314421889589">"Konektatutako linearen ID murrizketa"</string>
+ <string name="ColrMmi" msgid="4996540314421889589">"Konektatutako linearen ID murriztapena"</string>
<string name="CfMmi" msgid="5123218989141573515">"Dei-desbideratzea"</string>
<string name="CwMmi" msgid="9129678056795016867">"Deia zain"</string>
<string name="BaMmi" msgid="455193067926770581">"Deien debekuak"</string>
@@ -300,6 +300,18 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"Gorputz-sentsoreak"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"atzitu bizi-konstanteei buruzko sentsorearen datuak"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"Bizi-konstanteei buruzko sentsorearen datuak atzitzea baimendu nahi diozu <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> aplikazioari?"</string>
+ <!-- no translation found for permgrouplab_aural (965607064083134896) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_aural (4870189506255958055) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_aural (6787926123071735620) -->
+ <skip />
+ <!-- no translation found for permgrouplab_visual (8030190588123857921) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_visual (3415827902566663546) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_visual (6907523945030290376) -->
+ <skip />
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Eskuratu leihoko edukia"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Arakatu irekita daukazun leihoko edukia."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Aktibatu \"Arakatu ukituta\""</string>
@@ -494,6 +506,34 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"Erreferentzia-gako digitalen txantiloiak gehitzeko eta ezabatzeko metodoei dei egitea baimentzen die aplikazioei."</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"erabili erreferentzia-gako digitalen hardwarea"</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"Autentifikatzeko erreferentzia-gako digitalen hardwarea erabiltzea baimentzen die aplikazioei."</string>
+ <!-- no translation found for permlab_audioRead (6617225220728465565) -->
+ <skip />
+ <!-- no translation found for permdesc_audioRead (5034032570243484805) -->
+ <skip />
+ <!-- no translation found for permlab_audioWrite (2661772059799779292) -->
+ <skip />
+ <!-- no translation found for permdesc_audioWrite (8888544708166230494) -->
+ <skip />
+ <!-- no translation found for permlab_videoRead (9182618678674737229) -->
+ <skip />
+ <!-- no translation found for permdesc_videoRead (7045676429859396194) -->
+ <skip />
+ <!-- no translation found for permlab_videoWrite (128769316366746446) -->
+ <skip />
+ <!-- no translation found for permdesc_videoWrite (5448565757490640841) -->
+ <skip />
+ <!-- no translation found for permlab_imagesRead (3015078545742665304) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesRead (3144263806038695580) -->
+ <skip />
+ <!-- no translation found for permlab_imagesWrite (3391306186247235510) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesWrite (7073662756617474375) -->
+ <skip />
+ <!-- no translation found for permlab_mediaLocation (8675148183726247864) -->
+ <skip />
+ <!-- no translation found for permdesc_mediaLocation (2237023389178865130) -->
+ <skip />
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Hatz-marka digitala ez da osorik hauteman. Saiatu berriro."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Ezin izan da prozesatu hatz-marka. Saiatu berriro."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Hatz-marka digitalen sentsorea zikina dago. Garbi ezazu, eta saiatu berriro."</string>
@@ -1873,8 +1913,18 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"<xliff:g id="TYPE">%1$s</xliff:g> <b><xliff:g id="LABEL">%2$s</xliff:g></b> zerbitzuan gorde nahi duzu?"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"<xliff:g id="TYPE_0">%1$s</xliff:g> eta <xliff:g id="TYPE_1">%2$s</xliff:g> <b><xliff:g id="LABEL">%3$s</xliff:g></b> zerbitzuan gorde nahi dituzu?"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"<xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> eta <xliff:g id="TYPE_2">%3$s</xliff:g> <b><xliff:g id="LABEL">%4$s</xliff:g></b> zerbitzuan gorde nahi dituzu?"</string>
+ <!-- no translation found for autofill_update_title (4879673117448810818) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_type (339733442087186755) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) -->
+ <skip />
<string name="autofill_save_yes" msgid="6398026094049005921">"Gorde"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"Ez, eskerrik asko"</string>
+ <!-- no translation found for autofill_update_yes (310358413273276958) -->
+ <skip />
<string name="autofill_save_type_password" msgid="5288448918465971568">"pasahitza"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"helbidea"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"kreditu-txartela"</string>
diff --git a/core/res/res/values-fa/strings.xml b/core/res/res/values-fa/strings.xml
index d8067f0..b64937c 100644
--- a/core/res/res/values-fa/strings.xml
+++ b/core/res/res/values-fa/strings.xml
@@ -300,6 +300,12 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"حسگرهای بدن"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"دسترسی به دادههای حسگر در رابطه با علائم حیاتی شما"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"به <b><xliff:g id="APP_NAME">%1$s</xliff:g><b> اجازه داده شود به دادههای حسگر مربوط به علائم حیاتی شما دسترسی پیدا کند؟"</string>
+ <string name="permgrouplab_aural" msgid="965607064083134896">"موسیقی"</string>
+ <string name="permgroupdesc_aural" msgid="4870189506255958055">"دسترسی به موسیقی شما"</string>
+ <string name="permgrouprequest_aural" msgid="6787926123071735620">"به <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> اجازه داده شود به موسیقی شما دسترسی پیدا کند؟"</string>
+ <string name="permgrouplab_visual" msgid="8030190588123857921">"عکس و ویدیو"</string>
+ <string name="permgroupdesc_visual" msgid="3415827902566663546">"دسترسی به عکسها و ویدیوهایتان"</string>
+ <string name="permgrouprequest_visual" msgid="6907523945030290376">"به <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> اجازه داده شود به عکسها و ویدیوهای شما دسترسی پیدا کند؟"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"محتوای پنجره را بازیابی کند"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"محتوای پنجرهای را که درحال تعامل با آن هستید بررسی میکند."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"فعالسازی کاوش لمسی"</string>
@@ -494,6 +500,20 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"به برنامه امکان میدهد روشهایی را برای افزودن و حذف الگوهای اثر انگشت جهت استفاده، فعال کند."</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"استفاده از سختافزار اثر انگشت"</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"به برنامه امکان میدهد از سختافزار اثر انگشت برای احراز هویت استفاده کند"</string>
+ <string name="permlab_audioRead" msgid="6617225220728465565">"خواندن مجموعه موسیقی شما"</string>
+ <string name="permdesc_audioRead" msgid="5034032570243484805">"به برنامه اجازه میدهد مجموعه موسیقیتان را بخواند."</string>
+ <string name="permlab_audioWrite" msgid="2661772059799779292">"تغییر مجموعه موسیقی شما"</string>
+ <string name="permdesc_audioWrite" msgid="8888544708166230494">"به برنامه اجازه میدهد مجموعه موسیقیتان را تغییر دهد."</string>
+ <string name="permlab_videoRead" msgid="9182618678674737229">"خواندن مجموعه ویدیوی شما"</string>
+ <string name="permdesc_videoRead" msgid="7045676429859396194">"به برنامه اجازه میدهد مجموعه ویدیویتان را بخواند."</string>
+ <string name="permlab_videoWrite" msgid="128769316366746446">"تغییر مجموعه ویدیوی شما"</string>
+ <string name="permdesc_videoWrite" msgid="5448565757490640841">"به برنامه اجازه میدهد مجموعه ویدیویتان را تغییر دهد."</string>
+ <string name="permlab_imagesRead" msgid="3015078545742665304">"خواندن مجموعه عکس شما"</string>
+ <string name="permdesc_imagesRead" msgid="3144263806038695580">"به برنامه اجازه میدهد مجموعه عکستان را بخواند."</string>
+ <string name="permlab_imagesWrite" msgid="3391306186247235510">"تغییر مجموعه عکس شما"</string>
+ <string name="permdesc_imagesWrite" msgid="7073662756617474375">"به برنامه اجازه میدهد مجموعه عکستان را تغییر دهد."</string>
+ <string name="permlab_mediaLocation" msgid="8675148183726247864">"خواندن مکانها از مجموعه رسانه شما"</string>
+ <string name="permdesc_mediaLocation" msgid="2237023389178865130">"به برنامه اجازه میدهد مکانها را از مجموعه رسانهتان بخواند."</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"بخشی از اثر انگشت شناسایی شد. لطفاً دوباره امتحان کنید."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"اثرانگشت پردازش نشد. لطفاً دوباره امتحان کنید."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"حسگر اثر انگشت کثیف است. لطفاً آن را تمیز کنید و دوباره امتحان نمایید."</string>
@@ -1410,7 +1430,7 @@
<string name="disable_tether_notification_message" msgid="2913366428516852495">"برای جزئیات، با سرپرستتان تماس بگیرید"</string>
<string name="back_button_label" msgid="2300470004503343439">"برگشت"</string>
<string name="next_button_label" msgid="1080555104677992408">"بعدی"</string>
- <string name="skip_button_label" msgid="1275362299471631819">"پرش"</string>
+ <string name="skip_button_label" msgid="1275362299471631819">"رد شدن"</string>
<string name="no_matches" msgid="8129421908915840737">"مورد منطبقی موجود نیست"</string>
<string name="find_on_page" msgid="1946799233822820384">"یافتن در صفحه"</string>
<plurals name="matches_found" formatted="false" msgid="1210884353962081884">
@@ -1872,8 +1892,13 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"<xliff:g id="TYPE">%1$s</xliff:g> در <b><xliff:g id="LABEL">%2$s</xliff:g></b> ذخیره شود؟"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"<xliff:g id="TYPE_0">%1$s</xliff:g> و <xliff:g id="TYPE_1">%2$s</xliff:g> در <b><xliff:g id="LABEL">%3$s</xliff:g></b> ذخیره شوند؟"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"<xliff:g id="TYPE_0">%1$s</xliff:g>، <xliff:g id="TYPE_1">%2$s</xliff:g> و <xliff:g id="TYPE_2">%3$s</xliff:g> در <b><xliff:g id="LABEL">%4$s</xliff:g></b> ذخیره شوند؟"</string>
+ <string name="autofill_update_title" msgid="4879673117448810818">"به <b><xliff:g id="LABEL">%1$s</xliff:g></b> بهروزرسانی شود؟"</string>
+ <string name="autofill_update_title_with_type" msgid="339733442087186755">"<xliff:g id="TYPE">%1$s</xliff:g> به <b><xliff:g id="LABEL">%2$s</xliff:g></b> بهروزرسانی شود؟"</string>
+ <string name="autofill_update_title_with_2types" msgid="6321714204167424745">"<xliff:g id="TYPE_0">%1$s</xliff:g> و <xliff:g id="TYPE_1">%2$s</xliff:g> به <b><xliff:g id="LABEL">%3$s</xliff:g></b> بهروزرسانی شود؟"</string>
+ <string name="autofill_update_title_with_3types" msgid="5866735124066629287">"<xliff:g id="TYPE_0">%1$s</xliff:g>، <xliff:g id="TYPE_1">%2$s</xliff:g>، و <xliff:g id="TYPE_2">%3$s</xliff:g> به <b><xliff:g id="LABEL">%4$s</xliff:g></b> بهروزرسانی شود؟"</string>
<string name="autofill_save_yes" msgid="6398026094049005921">"ذخیره"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"نه سپاسگزارم"</string>
+ <string name="autofill_update_yes" msgid="310358413273276958">"بهروزرسانی"</string>
<string name="autofill_save_type_password" msgid="5288448918465971568">"گذرواژه"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"نشانی"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"کارت اعتباری"</string>
diff --git a/core/res/res/values-fi/strings.xml b/core/res/res/values-fi/strings.xml
index 36a656b0..e13a01f 100644
--- a/core/res/res/values-fi/strings.xml
+++ b/core/res/res/values-fi/strings.xml
@@ -300,6 +300,12 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"Kehon anturit"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"käyttää anturitietoja elintoiminnoistasi"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"Saako <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> käyttää anturitietoja elintoiminnoistasi?"</string>
+ <string name="permgrouplab_aural" msgid="965607064083134896">"Musiikki"</string>
+ <string name="permgroupdesc_aural" msgid="4870189506255958055">"käyttää musiikkiasi"</string>
+ <string name="permgrouprequest_aural" msgid="6787926123071735620">"Saako <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> käyttää musiikkiasi?"</string>
+ <string name="permgrouplab_visual" msgid="8030190588123857921">"Kuvat ja videot"</string>
+ <string name="permgroupdesc_visual" msgid="3415827902566663546">"käyttää kuvia ja videoita"</string>
+ <string name="permgrouprequest_visual" msgid="6907523945030290376">"Saako <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> käyttää kuviasi ja videoitasi?"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Noutaa ikkunan sisältöä"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Tarkistaa käyttämäsi ikkunan sisältö."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Ottaa kosketuksella tutkimisen käyttöön"</string>
@@ -494,6 +500,20 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"Sallii sovelluksen käyttää menetelmiä, joilla voidaan lisätä tai poistaa sormenjälkimalleja."</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"sormenjälkilaitteiston käyttö"</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"Sallii sovelluksen käyttää sormenjälkilaitteistoa todennukseen."</string>
+ <string name="permlab_audioRead" msgid="6617225220728465565">"lukea musiikkikokoelmaasi"</string>
+ <string name="permdesc_audioRead" msgid="5034032570243484805">"Antaa sovelluksen lukea musiikkikokoelmaasi."</string>
+ <string name="permlab_audioWrite" msgid="2661772059799779292">"muokata musiikkikokoelmaasi"</string>
+ <string name="permdesc_audioWrite" msgid="8888544708166230494">"Antaa sovelluksen muokata musiikkikokoelmaasi."</string>
+ <string name="permlab_videoRead" msgid="9182618678674737229">"lukea videokokoelmaasi"</string>
+ <string name="permdesc_videoRead" msgid="7045676429859396194">"Antaa sovelluksen lukea videokokoelmaasi."</string>
+ <string name="permlab_videoWrite" msgid="128769316366746446">"muokata videokokoelmaasi"</string>
+ <string name="permdesc_videoWrite" msgid="5448565757490640841">"Antaa sovelluksen muokata videokokoelmaasi."</string>
+ <string name="permlab_imagesRead" msgid="3015078545742665304">"lukea kuvakokoelmaasi"</string>
+ <string name="permdesc_imagesRead" msgid="3144263806038695580">"Antaa sovelluksen lukea kuvakokoelmaasi."</string>
+ <string name="permlab_imagesWrite" msgid="3391306186247235510">"muokata kuvakokoelmaasi"</string>
+ <string name="permdesc_imagesWrite" msgid="7073662756617474375">"Antaa sovelluksen muokata kuvakokoelmaasi."</string>
+ <string name="permlab_mediaLocation" msgid="8675148183726247864">"lukea mediakokoelmasi sijainteja"</string>
+ <string name="permdesc_mediaLocation" msgid="2237023389178865130">"Antaa sovelluksen lukea mediakokoelmasi sijainteja."</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Sormenjälki havaittiin vain osittain. Yritä uudelleen."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Sormenjäljen käsittely epäonnistui. Yritä uudelleen."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Sormenjälkitunnistin on likainen. Puhdista tunnistin ja yritä uudelleen."</string>
@@ -1872,8 +1892,13 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"Tallennetaanko <xliff:g id="TYPE">%1$s</xliff:g> palveluun <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Tallennetaanko <xliff:g id="TYPE_0">%1$s</xliff:g> ja <xliff:g id="TYPE_1">%2$s</xliff:g> palveluun <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Tallennetaanko <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> ja <xliff:g id="TYPE_2">%3$s</xliff:g> palveluun <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string>
+ <string name="autofill_update_title" msgid="4879673117448810818">"Muutetaanko tämä palvelussa <b><xliff:g id="LABEL">%1$s</xliff:g></b>?"</string>
+ <string name="autofill_update_title_with_type" msgid="339733442087186755">"Muutetaanko <xliff:g id="TYPE">%1$s</xliff:g>, jonka <b><xliff:g id="LABEL">%2$s</xliff:g></b> on tallentanut?"</string>
+ <string name="autofill_update_title_with_2types" msgid="6321714204167424745">"Muutetaanko <xliff:g id="TYPE_0">%1$s</xliff:g> ja <xliff:g id="TYPE_1">%2$s</xliff:g>, jotka <b><xliff:g id="LABEL">%3$s</xliff:g></b> on tallentanut?"</string>
+ <string name="autofill_update_title_with_3types" msgid="5866735124066629287">"Muutetaanko <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> ja <xliff:g id="TYPE_2">%3$s</xliff:g>, jotka <b><xliff:g id="LABEL">%4$s</xliff:g></b> on tallentanut?"</string>
<string name="autofill_save_yes" msgid="6398026094049005921">"Tallenna"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"Ei kiitos"</string>
+ <string name="autofill_update_yes" msgid="310358413273276958">"Muuta"</string>
<string name="autofill_save_type_password" msgid="5288448918465971568">"salasana"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"osoite"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"luottokortti"</string>
diff --git a/core/res/res/values-fr-rCA/strings.xml b/core/res/res/values-fr-rCA/strings.xml
index eaa2ba0..fda01a0 100644
--- a/core/res/res/values-fr-rCA/strings.xml
+++ b/core/res/res/values-fr-rCA/strings.xml
@@ -300,6 +300,12 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"Capteurs corporels"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"accéder aux données des capteurs sur vos signes vitaux"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"Autoriser « <xliff:g id="APP_NAME">%1$s</xliff:g> » à accéder aux données des capteurs pour vos signes vitaux?"</string>
+ <string name="permgrouplab_aural" msgid="965607064083134896">"Musique"</string>
+ <string name="permgroupdesc_aural" msgid="4870189506255958055">"accéder à votre musique"</string>
+ <string name="permgrouprequest_aural" msgid="6787926123071735620">"Autoriser <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> à accéder à votre musique?"</string>
+ <string name="permgrouplab_visual" msgid="8030190588123857921">"Photos et vidéos"</string>
+ <string name="permgroupdesc_visual" msgid="3415827902566663546">"accéder à vos photos et vos vidéos"</string>
+ <string name="permgrouprequest_visual" msgid="6907523945030290376">"Autoriser <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> à accéder à vos photos et vos videos?"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Récupérer le contenu d\'une fenêtre"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Inspecter le contenu d\'une fenêtre avec laquelle vous interagissez."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Activer la fonctionnalité Explorer au toucher"</string>
@@ -494,6 +500,20 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"Permet à l\'application de faire appel à des méthodes d\'ajout et de suppression de modèles d\'empreinte digitale que vous pouvez utiliser."</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"utiliser le matériel d\'empreinte digitale"</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"Permet à l\'application d\'utiliser du matériel d\'empreinte digitale pour l\'authentification"</string>
+ <string name="permlab_audioRead" msgid="6617225220728465565">"lire votre collection de musique"</string>
+ <string name="permdesc_audioRead" msgid="5034032570243484805">"Autoriser l\'application à lire votre collection de musique."</string>
+ <string name="permlab_audioWrite" msgid="2661772059799779292">"modifier votre collection de musique"</string>
+ <string name="permdesc_audioWrite" msgid="8888544708166230494">"Autoriser l\'application à modifier votre collection de musique."</string>
+ <string name="permlab_videoRead" msgid="9182618678674737229">"lire votre collection de vidéos"</string>
+ <string name="permdesc_videoRead" msgid="7045676429859396194">"Autoriser l\'application à lire votre collection de vidéos."</string>
+ <string name="permlab_videoWrite" msgid="128769316366746446">"modifier votre collection de vidéos"</string>
+ <string name="permdesc_videoWrite" msgid="5448565757490640841">"Autoriser l\'application à modifier votre collection de vidéos."</string>
+ <string name="permlab_imagesRead" msgid="3015078545742665304">"lire votre collection de photos"</string>
+ <string name="permdesc_imagesRead" msgid="3144263806038695580">"Autoriser l\'application à lire votre collection de photos."</string>
+ <string name="permlab_imagesWrite" msgid="3391306186247235510">"modifier votre collection de photos"</string>
+ <string name="permdesc_imagesWrite" msgid="7073662756617474375">"Autoriser l\'application à modifier votre collection de photos."</string>
+ <string name="permlab_mediaLocation" msgid="8675148183726247864">"lire les positions indiquées dans votre collection multimédia"</string>
+ <string name="permdesc_mediaLocation" msgid="2237023389178865130">"Autoriser l\'application à lire les positions indiquées dans votre collection multimédia."</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Empreinte digitale partielle détectée. Veuillez essayer de nouveau."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Impossible de traiter les empreintes digitales. Veuillez essayer de nouveau."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Le capteur d\'empreintes digitales est sale. Veuillez le nettoyer et essayer de nouveau."</string>
@@ -1872,8 +1892,13 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"Enregistrer <xliff:g id="TYPE">%1$s</xliff:g> dans <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Enregistrer <xliff:g id="TYPE_0">%1$s</xliff:g> et <xliff:g id="TYPE_1">%2$s</xliff:g> dans <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Enregistrer <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> et <xliff:g id="TYPE_2">%3$s</xliff:g> dans <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string>
+ <string name="autofill_update_title" msgid="4879673117448810818">"Mettre à jour vers <b><xliff:g id="LABEL">%1$s</xliff:g></b>?"</string>
+ <string name="autofill_update_title_with_type" msgid="339733442087186755">"Mettre à jour <xliff:g id="TYPE">%1$s</xliff:g> vers <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string>
+ <string name="autofill_update_title_with_2types" msgid="6321714204167424745">"Mettre à jour <xliff:g id="TYPE_0">%1$s</xliff:g> et <xliff:g id="TYPE_1">%2$s</xliff:g> vers <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string>
+ <string name="autofill_update_title_with_3types" msgid="5866735124066629287">"Mettre à jour <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> et <xliff:g id="TYPE_2">%3$s</xliff:g> vers <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string>
<string name="autofill_save_yes" msgid="6398026094049005921">"Enregistrer"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"Non, merci"</string>
+ <string name="autofill_update_yes" msgid="310358413273276958">"Mettre à jour"</string>
<string name="autofill_save_type_password" msgid="5288448918465971568">"mot de passe"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"adresse"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"carte de crédit"</string>
diff --git a/core/res/res/values-fr/strings.xml b/core/res/res/values-fr/strings.xml
index 4e15595..94d33db 100644
--- a/core/res/res/values-fr/strings.xml
+++ b/core/res/res/values-fr/strings.xml
@@ -300,6 +300,18 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"Capteurs corporels"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"accéder aux données des capteurs relatives à vos signes vitaux"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"Permettre à <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> d\'accéder aux données des capteurs relatives à vos signes vitaux ?"</string>
+ <!-- no translation found for permgrouplab_aural (965607064083134896) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_aural (4870189506255958055) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_aural (6787926123071735620) -->
+ <skip />
+ <!-- no translation found for permgrouplab_visual (8030190588123857921) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_visual (3415827902566663546) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_visual (6907523945030290376) -->
+ <skip />
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Récupérer le contenu d\'une fenêtre"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Inspecte le contenu d\'une fenêtre avec laquelle vous interagissez."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Activer la fonctionnalité Explorer au toucher"</string>
@@ -494,6 +506,34 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"Autoriser l\'application à invoquer des méthodes pour ajouter et supprimer des modèles d\'empreintes digitales"</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"Utiliser le matériel d\'empreintes digitales"</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"Autoriser l\'application à utiliser le matériel d\'empreintes digitales pour l\'authentification"</string>
+ <!-- no translation found for permlab_audioRead (6617225220728465565) -->
+ <skip />
+ <!-- no translation found for permdesc_audioRead (5034032570243484805) -->
+ <skip />
+ <!-- no translation found for permlab_audioWrite (2661772059799779292) -->
+ <skip />
+ <!-- no translation found for permdesc_audioWrite (8888544708166230494) -->
+ <skip />
+ <!-- no translation found for permlab_videoRead (9182618678674737229) -->
+ <skip />
+ <!-- no translation found for permdesc_videoRead (7045676429859396194) -->
+ <skip />
+ <!-- no translation found for permlab_videoWrite (128769316366746446) -->
+ <skip />
+ <!-- no translation found for permdesc_videoWrite (5448565757490640841) -->
+ <skip />
+ <!-- no translation found for permlab_imagesRead (3015078545742665304) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesRead (3144263806038695580) -->
+ <skip />
+ <!-- no translation found for permlab_imagesWrite (3391306186247235510) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesWrite (7073662756617474375) -->
+ <skip />
+ <!-- no translation found for permlab_mediaLocation (8675148183726247864) -->
+ <skip />
+ <!-- no translation found for permdesc_mediaLocation (2237023389178865130) -->
+ <skip />
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Empreinte numérique partiellement détectée. Veuillez réessayer."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Impossible de reconnaître l\'empreinte numérique. Veuillez réessayer."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Le lecteur d\'empreintes numériques est sale. Veuillez le nettoyer, puis réessayer."</string>
@@ -1872,8 +1912,18 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"Enregistrer <xliff:g id="TYPE">%1$s</xliff:g> dans <b><xliff:g id="LABEL">%2$s</xliff:g></b> ?"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Enregistrer <xliff:g id="TYPE_0">%1$s</xliff:g> et <xliff:g id="TYPE_1">%2$s</xliff:g> dans <b><xliff:g id="LABEL">%3$s</xliff:g></b> ?"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Enregistrer <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> et <xliff:g id="TYPE_2">%3$s</xliff:g> dans <b><xliff:g id="LABEL">%4$s</xliff:g></b> ?"</string>
+ <!-- no translation found for autofill_update_title (4879673117448810818) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_type (339733442087186755) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) -->
+ <skip />
<string name="autofill_save_yes" msgid="6398026094049005921">"Enregistrer"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"Non, merci"</string>
+ <!-- no translation found for autofill_update_yes (310358413273276958) -->
+ <skip />
<string name="autofill_save_type_password" msgid="5288448918465971568">"mot de passe"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"adresse"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"carte de paiement"</string>
diff --git a/core/res/res/values-gl/strings.xml b/core/res/res/values-gl/strings.xml
index cf55840..a32a36e 100644
--- a/core/res/res/values-gl/strings.xml
+++ b/core/res/res/values-gl/strings.xml
@@ -300,6 +300,18 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"Sensores corporais"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"acceder aos datos do sensor sobre as túas constantes vitais"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"Queres permitir que a aplicación <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> acceda aos datos do sensor sobre as túas constantes vitais?"</string>
+ <!-- no translation found for permgrouplab_aural (965607064083134896) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_aural (4870189506255958055) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_aural (6787926123071735620) -->
+ <skip />
+ <!-- no translation found for permgrouplab_visual (8030190588123857921) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_visual (3415827902566663546) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_visual (6907523945030290376) -->
+ <skip />
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Recuperar contido da ventá"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Inspecciona o contido dunha ventá coa que estás interactuando."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Activar a exploración táctil"</string>
@@ -494,6 +506,34 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"Permite que a aplicación invoque métodos para engadir e eliminar modelos de uso de impresión dixital."</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"usar hardware de impresión dixital"</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"Permite que a aplicación utilice hardware de impresión dixital para a autenticación"</string>
+ <!-- no translation found for permlab_audioRead (6617225220728465565) -->
+ <skip />
+ <!-- no translation found for permdesc_audioRead (5034032570243484805) -->
+ <skip />
+ <!-- no translation found for permlab_audioWrite (2661772059799779292) -->
+ <skip />
+ <!-- no translation found for permdesc_audioWrite (8888544708166230494) -->
+ <skip />
+ <!-- no translation found for permlab_videoRead (9182618678674737229) -->
+ <skip />
+ <!-- no translation found for permdesc_videoRead (7045676429859396194) -->
+ <skip />
+ <!-- no translation found for permlab_videoWrite (128769316366746446) -->
+ <skip />
+ <!-- no translation found for permdesc_videoWrite (5448565757490640841) -->
+ <skip />
+ <!-- no translation found for permlab_imagesRead (3015078545742665304) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesRead (3144263806038695580) -->
+ <skip />
+ <!-- no translation found for permlab_imagesWrite (3391306186247235510) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesWrite (7073662756617474375) -->
+ <skip />
+ <!-- no translation found for permlab_mediaLocation (8675148183726247864) -->
+ <skip />
+ <!-- no translation found for permdesc_mediaLocation (2237023389178865130) -->
+ <skip />
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Detectouse unha impresión dixital parcial. Téntao de novo."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Non se puido procesar a impresión dixital. Téntao de novo."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"O sensor de impresión dixital está sucio. Límpao e téntao de novo."</string>
@@ -1873,8 +1913,18 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"Queres gardar <xliff:g id="TYPE">%1$s</xliff:g> en: <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Queres gardar <xliff:g id="TYPE_0">%1$s</xliff:g> e <xliff:g id="TYPE_1">%2$s</xliff:g> en: <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Queres gardar <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> e <xliff:g id="TYPE_2">%3$s</xliff:g> en: <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string>
+ <!-- no translation found for autofill_update_title (4879673117448810818) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_type (339733442087186755) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) -->
+ <skip />
<string name="autofill_save_yes" msgid="6398026094049005921">"Gardar"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"Non, grazas"</string>
+ <!-- no translation found for autofill_update_yes (310358413273276958) -->
+ <skip />
<string name="autofill_save_type_password" msgid="5288448918465971568">"contrasinal"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"enderezo"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"tarxeta de crédito"</string>
diff --git a/core/res/res/values-gu/strings.xml b/core/res/res/values-gu/strings.xml
index d41a923..1cf8892 100644
--- a/core/res/res/values-gu/strings.xml
+++ b/core/res/res/values-gu/strings.xml
@@ -300,6 +300,18 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"બોડી સેન્સર્સ"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"તમારા મહત્વપૂર્ણ ચિહ્નો વિશે સેન્સર ડેટા ઍક્સેસ કરો"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b>ને તમારી મહત્વપૂર્ણ સહી વિશેના સેન્સર ડેટાને ઍક્સેસ કરવાની મંજૂરી આપીએ?"</string>
+ <!-- no translation found for permgrouplab_aural (965607064083134896) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_aural (4870189506255958055) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_aural (6787926123071735620) -->
+ <skip />
+ <!-- no translation found for permgrouplab_visual (8030190588123857921) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_visual (3415827902566663546) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_visual (6907523945030290376) -->
+ <skip />
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"વિંડો કન્ટેન્ટ પુનઃપ્રાપ્ત કરો"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"તમે જેની સાથે ક્રિયા-પ્રતિક્રિયા કરી રહ્યાં છો તે વિંડોનું કન્ટેન્ટ તપાસો."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"સ્પર્શ કરીને શોધખોળ કરવું ચાલુ કરો"</string>
@@ -494,6 +506,34 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"એપ્લિકેશનને ઉપયોગ માટે ફિંગરપ્રિન્ટ નમૂના ઉમેરવા અને કાઢી નાખવા માટે પદ્ધતિઓની વિનંતી કરવાની મંજૂરી આપે છે."</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"ફિંગરપ્રિન્ટ હાર્ડવેરનો ઉપયોગ કરો"</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"એપ્લિકેશનને પ્રમાણીકરણ માટે ફિંગરપ્રિન્ટ હાર્ડવેરનો ઉપયોગ કરવાની મંજૂરી આપે છે"</string>
+ <!-- no translation found for permlab_audioRead (6617225220728465565) -->
+ <skip />
+ <!-- no translation found for permdesc_audioRead (5034032570243484805) -->
+ <skip />
+ <!-- no translation found for permlab_audioWrite (2661772059799779292) -->
+ <skip />
+ <!-- no translation found for permdesc_audioWrite (8888544708166230494) -->
+ <skip />
+ <!-- no translation found for permlab_videoRead (9182618678674737229) -->
+ <skip />
+ <!-- no translation found for permdesc_videoRead (7045676429859396194) -->
+ <skip />
+ <!-- no translation found for permlab_videoWrite (128769316366746446) -->
+ <skip />
+ <!-- no translation found for permdesc_videoWrite (5448565757490640841) -->
+ <skip />
+ <!-- no translation found for permlab_imagesRead (3015078545742665304) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesRead (3144263806038695580) -->
+ <skip />
+ <!-- no translation found for permlab_imagesWrite (3391306186247235510) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesWrite (7073662756617474375) -->
+ <skip />
+ <!-- no translation found for permlab_mediaLocation (8675148183726247864) -->
+ <skip />
+ <!-- no translation found for permdesc_mediaLocation (2237023389178865130) -->
+ <skip />
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"આંશિક ફિંગરપ્રિન્ટ મળી. કૃપા કરીને ફરી પ્રયાસ કરો."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"ફિંગરપ્રિન્ટ પ્રક્રિયા કરી શકાઈ નથી. કૃપા કરીને ફરી પ્રયાસ કરો."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"ફિંગરપ્રિન્ટ સેન્સર ગંદું છે. કૃપા કરીને સાફ કરો અને ફરી પ્રયાસ કરો."</string>
@@ -1873,8 +1913,18 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"<xliff:g id="TYPE">%1$s</xliff:g>ને <b><xliff:g id="LABEL">%2$s</xliff:g></b>માં સાચવીએ?"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"<xliff:g id="TYPE_0">%1$s</xliff:g> અને <xliff:g id="TYPE_1">%2$s</xliff:g>ને <b><xliff:g id="LABEL">%3$s</xliff:g></b>માં સાચવીએ?"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"<xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> અને <xliff:g id="TYPE_2">%3$s</xliff:g>ને <b><xliff:g id="LABEL">%4$s</xliff:g></b>માં સાચવીએ?"</string>
+ <!-- no translation found for autofill_update_title (4879673117448810818) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_type (339733442087186755) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) -->
+ <skip />
<string name="autofill_save_yes" msgid="6398026094049005921">"સાચવો"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"ના, આભાર"</string>
+ <!-- no translation found for autofill_update_yes (310358413273276958) -->
+ <skip />
<string name="autofill_save_type_password" msgid="5288448918465971568">"પાસવર્ડ"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"સરનામું"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"ક્રેડિટ કાર્ડ"</string>
diff --git a/core/res/res/values-hi/strings.xml b/core/res/res/values-hi/strings.xml
index 8c7a0d3..a85d6fa 100644
--- a/core/res/res/values-hi/strings.xml
+++ b/core/res/res/values-hi/strings.xml
@@ -300,6 +300,18 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"शरीर संवेदक"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"अपने महत्वपूर्ण संकेतों के बारे में सेंसर डेटा को ऐक्सेस करें"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> को अपने स्वास्थ्य से जुड़ी ज़रूरी जानकारी इस्तेमाल करने की अनुमति देना चाहते हैं?"</string>
+ <!-- no translation found for permgrouplab_aural (965607064083134896) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_aural (4870189506255958055) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_aural (6787926123071735620) -->
+ <skip />
+ <!-- no translation found for permgrouplab_visual (8030190588123857921) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_visual (3415827902566663546) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_visual (6907523945030290376) -->
+ <skip />
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"विंडो की सामग्री वापस पाएं"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"उस विंडो की सामग्री की जाँच करें, जिसका आप इस्तेमाल कर रहे हैं."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"छूकर, किसी चीज़ से जुड़ी जानकारी सुनने की सुविधा चालू करें"</string>
@@ -494,6 +506,34 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"उंगली की छाप वाले टेम्पलेट का उपयोग करने के लिए जोड़ने और हटाने हेतु ऐप को विधियां प्रारंभ करने देती है."</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"उंगली की छाप के लिए हार्डवेयर का उपयोग करें"</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"ऐप के प्रमाणीकरण के लिए उंगली की छाप हार्डवेयर का उपयोग करने देती है"</string>
+ <!-- no translation found for permlab_audioRead (6617225220728465565) -->
+ <skip />
+ <!-- no translation found for permdesc_audioRead (5034032570243484805) -->
+ <skip />
+ <!-- no translation found for permlab_audioWrite (2661772059799779292) -->
+ <skip />
+ <!-- no translation found for permdesc_audioWrite (8888544708166230494) -->
+ <skip />
+ <!-- no translation found for permlab_videoRead (9182618678674737229) -->
+ <skip />
+ <!-- no translation found for permdesc_videoRead (7045676429859396194) -->
+ <skip />
+ <!-- no translation found for permlab_videoWrite (128769316366746446) -->
+ <skip />
+ <!-- no translation found for permdesc_videoWrite (5448565757490640841) -->
+ <skip />
+ <!-- no translation found for permlab_imagesRead (3015078545742665304) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesRead (3144263806038695580) -->
+ <skip />
+ <!-- no translation found for permlab_imagesWrite (3391306186247235510) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesWrite (7073662756617474375) -->
+ <skip />
+ <!-- no translation found for permlab_mediaLocation (8675148183726247864) -->
+ <skip />
+ <!-- no translation found for permdesc_mediaLocation (2237023389178865130) -->
+ <skip />
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"आंशिक फ़िंगरप्रिंट की पहचान की गई. कृपया पुनः प्रयास करें."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"फ़िंगरप्रिंट संसाधित नहीं हो सका. कृपया पुन: प्रयास करें."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"फ़िंगरप्रिंट सेंसर गंदा है. कृपया साफ़ करें और फिर कोशिश करें."</string>
@@ -1872,8 +1912,18 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"<xliff:g id="TYPE">%1$s</xliff:g> को <b><xliff:g id="LABEL">%2$s</xliff:g></b> में सेव करें?"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"<xliff:g id="TYPE_0">%1$s</xliff:g> और <xliff:g id="TYPE_1">%2$s</xliff:g> को <b><xliff:g id="LABEL">%3$s</xliff:g></b> में सेव करें?"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"<xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> और <xliff:g id="TYPE_2">%3$s</xliff:g> को <b><xliff:g id="LABEL">%4$s</xliff:g></b> में सेव करें?"</string>
+ <!-- no translation found for autofill_update_title (4879673117448810818) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_type (339733442087186755) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) -->
+ <skip />
<string name="autofill_save_yes" msgid="6398026094049005921">"सेव करें"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"नहीं, धन्यवाद"</string>
+ <!-- no translation found for autofill_update_yes (310358413273276958) -->
+ <skip />
<string name="autofill_save_type_password" msgid="5288448918465971568">"पासवर्ड"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"पता"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"क्रेडिट कार्ड"</string>
diff --git a/core/res/res/values-hr/strings.xml b/core/res/res/values-hr/strings.xml
index 3baaf01..f9576e0 100644
--- a/core/res/res/values-hr/strings.xml
+++ b/core/res/res/values-hr/strings.xml
@@ -303,6 +303,18 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"Biometrijski senzori"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"pristupiti podacima senzora o vašim vitalnim znakovima"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"Želite li dopustiti aplikaciji <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> da pristupa podacima senzora o vašim vitalnim znakovima?"</string>
+ <!-- no translation found for permgrouplab_aural (965607064083134896) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_aural (4870189506255958055) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_aural (6787926123071735620) -->
+ <skip />
+ <!-- no translation found for permgrouplab_visual (8030190588123857921) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_visual (3415827902566663546) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_visual (6907523945030290376) -->
+ <skip />
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Dohvaćati sadržaj prozora"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Pregledat će sadržaj prozora koji upotrebljavate."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Uključiti značajku Istraži dodirom"</string>
@@ -497,6 +509,34 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"Aplikaciji omogućuje pozivanje načina za dodavanje i brisanje predložaka otisaka prstiju koji će se upotrijebiti."</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"upotreba hardvera za čitanje otisaka prstiju"</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"Aplikaciji omogućuje upotrebu hardvera za čitanje otisaka prstiju radi autentifikacije."</string>
+ <!-- no translation found for permlab_audioRead (6617225220728465565) -->
+ <skip />
+ <!-- no translation found for permdesc_audioRead (5034032570243484805) -->
+ <skip />
+ <!-- no translation found for permlab_audioWrite (2661772059799779292) -->
+ <skip />
+ <!-- no translation found for permdesc_audioWrite (8888544708166230494) -->
+ <skip />
+ <!-- no translation found for permlab_videoRead (9182618678674737229) -->
+ <skip />
+ <!-- no translation found for permdesc_videoRead (7045676429859396194) -->
+ <skip />
+ <!-- no translation found for permlab_videoWrite (128769316366746446) -->
+ <skip />
+ <!-- no translation found for permdesc_videoWrite (5448565757490640841) -->
+ <skip />
+ <!-- no translation found for permlab_imagesRead (3015078545742665304) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesRead (3144263806038695580) -->
+ <skip />
+ <!-- no translation found for permlab_imagesWrite (3391306186247235510) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesWrite (7073662756617474375) -->
+ <skip />
+ <!-- no translation found for permlab_mediaLocation (8675148183726247864) -->
+ <skip />
+ <!-- no translation found for permdesc_mediaLocation (2237023389178865130) -->
+ <skip />
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Otkriven je djelomični otisak prsta. Pokušajte ponovo."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Obrada otiska prsta nije uspjela. Pokušajte ponovo."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Senzor otiska prsta nije čist. Očistite ga i pokušajte ponovo."</string>
@@ -1907,8 +1947,18 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"Želite li da se podatak (<xliff:g id="TYPE">%1$s</xliff:g>) spremi na uslugu <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Želite li da se <xliff:g id="TYPE_0">%1$s</xliff:g> i <xliff:g id="TYPE_1">%2$s</xliff:g> spreme na uslugu <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Želite li da se <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> i <xliff:g id="TYPE_2">%3$s</xliff:g> spreme na uslugu <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string>
+ <!-- no translation found for autofill_update_title (4879673117448810818) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_type (339733442087186755) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) -->
+ <skip />
<string name="autofill_save_yes" msgid="6398026094049005921">"Spremi"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"Ne, hvala"</string>
+ <!-- no translation found for autofill_update_yes (310358413273276958) -->
+ <skip />
<string name="autofill_save_type_password" msgid="5288448918465971568">"zaporku"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"adresu"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"kreditnu karticu"</string>
diff --git a/core/res/res/values-hu/strings.xml b/core/res/res/values-hu/strings.xml
index 106f497..f957384 100644
--- a/core/res/res/values-hu/strings.xml
+++ b/core/res/res/values-hu/strings.xml
@@ -300,6 +300,18 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"Testérzékelők"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"az érzékelők által mért, életjelekkel kapcsolatos adatok elérése"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"Engedélyezi a(z) <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> számára, hogy hozzáférjen az életjelekkel kapcsolatos szenzoradatokhoz?"</string>
+ <!-- no translation found for permgrouplab_aural (965607064083134896) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_aural (4870189506255958055) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_aural (6787926123071735620) -->
+ <skip />
+ <!-- no translation found for permgrouplab_visual (8030190588123857921) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_visual (3415827902566663546) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_visual (6907523945030290376) -->
+ <skip />
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Ablaktartalom lekérdezése"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"A használt ablak tartalmának vizsgálata."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Felfedezés érintéssel bekapcsolása"</string>
@@ -494,6 +506,34 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"Lehetővé teszi az alkalmazás számára a használni kívánt ujjlenyomatsablonok hozzáadására és törlésére szolgáló metódusok indítását."</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"ujjlenyomat-olvasó hardver használata"</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"Lehetővé teszi az alkalmazás számára az ujjlenyomat-olvasó hardver hitelesítésre való használatát"</string>
+ <!-- no translation found for permlab_audioRead (6617225220728465565) -->
+ <skip />
+ <!-- no translation found for permdesc_audioRead (5034032570243484805) -->
+ <skip />
+ <!-- no translation found for permlab_audioWrite (2661772059799779292) -->
+ <skip />
+ <!-- no translation found for permdesc_audioWrite (8888544708166230494) -->
+ <skip />
+ <!-- no translation found for permlab_videoRead (9182618678674737229) -->
+ <skip />
+ <!-- no translation found for permdesc_videoRead (7045676429859396194) -->
+ <skip />
+ <!-- no translation found for permlab_videoWrite (128769316366746446) -->
+ <skip />
+ <!-- no translation found for permdesc_videoWrite (5448565757490640841) -->
+ <skip />
+ <!-- no translation found for permlab_imagesRead (3015078545742665304) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesRead (3144263806038695580) -->
+ <skip />
+ <!-- no translation found for permlab_imagesWrite (3391306186247235510) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesWrite (7073662756617474375) -->
+ <skip />
+ <!-- no translation found for permlab_mediaLocation (8675148183726247864) -->
+ <skip />
+ <!-- no translation found for permdesc_mediaLocation (2237023389178865130) -->
+ <skip />
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"A rendszer az ujjlenyomatnak csak egy részletét érzékelte. Próbálkozzon újra."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Nem sikerült feldolgozni az ujjlenyomatot. Próbálkozzon újra."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Az ujjlenyomat-olvasó koszos. Tisztítsa meg, majd próbálkozzon újra."</string>
@@ -1872,8 +1912,18 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"Menti a következőt: <xliff:g id="TYPE">%1$s</xliff:g> ide: <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Menti a következőket: <xliff:g id="TYPE_0">%1$s</xliff:g> és <xliff:g id="TYPE_1">%2$s</xliff:g> ide: <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Menti a következőket: <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> és <xliff:g id="TYPE_2">%3$s</xliff:g> ide: <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string>
+ <!-- no translation found for autofill_update_title (4879673117448810818) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_type (339733442087186755) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) -->
+ <skip />
<string name="autofill_save_yes" msgid="6398026094049005921">"Mentés"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"Nem, köszönöm"</string>
+ <!-- no translation found for autofill_update_yes (310358413273276958) -->
+ <skip />
<string name="autofill_save_type_password" msgid="5288448918465971568">"jelszó"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"cím"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"hitelkártya"</string>
diff --git a/core/res/res/values-hy/strings.xml b/core/res/res/values-hy/strings.xml
index 96a03bf..978e661 100644
--- a/core/res/res/values-hy/strings.xml
+++ b/core/res/res/values-hy/strings.xml
@@ -300,6 +300,18 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"Մարմնի սենսորներ"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"օգտագործել սենսորների տվյալները ձեր օրգանիզմի վիճակի մասին"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"Թույլ տա՞լ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> հավելվածին սենսորից ստանալ ձեր կենսագործունեության հիմնական տվյալները:"</string>
+ <!-- no translation found for permgrouplab_aural (965607064083134896) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_aural (4870189506255958055) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_aural (6787926123071735620) -->
+ <skip />
+ <!-- no translation found for permgrouplab_visual (8030190588123857921) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_visual (3415827902566663546) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_visual (6907523945030290376) -->
+ <skip />
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Առբերել պատուհանի բովանդակությունը"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Վերլուծել գործող պատուհանի բովանդակությունը"</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Միացնել Հպման միջոցով հետազոտումը"</string>
@@ -494,6 +506,34 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"Հավելվածին թույլ է տալիս կատարել այնպիսի գործառույթներ, որոնց միջոցով կարելի է օգտագործման համար ավելացնել և հեռացնել մատնահետքերի նմուշներ:"</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"օգտագործել մատնահետքերի գրանցման սարքը"</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"Հավելվածին թույլ է տալիս նույնականացման համար օգտագործել մատնահետքերի գրանցման սարքը"</string>
+ <!-- no translation found for permlab_audioRead (6617225220728465565) -->
+ <skip />
+ <!-- no translation found for permdesc_audioRead (5034032570243484805) -->
+ <skip />
+ <!-- no translation found for permlab_audioWrite (2661772059799779292) -->
+ <skip />
+ <!-- no translation found for permdesc_audioWrite (8888544708166230494) -->
+ <skip />
+ <!-- no translation found for permlab_videoRead (9182618678674737229) -->
+ <skip />
+ <!-- no translation found for permdesc_videoRead (7045676429859396194) -->
+ <skip />
+ <!-- no translation found for permlab_videoWrite (128769316366746446) -->
+ <skip />
+ <!-- no translation found for permdesc_videoWrite (5448565757490640841) -->
+ <skip />
+ <!-- no translation found for permlab_imagesRead (3015078545742665304) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesRead (3144263806038695580) -->
+ <skip />
+ <!-- no translation found for permlab_imagesWrite (3391306186247235510) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesWrite (7073662756617474375) -->
+ <skip />
+ <!-- no translation found for permlab_mediaLocation (8675148183726247864) -->
+ <skip />
+ <!-- no translation found for permdesc_mediaLocation (2237023389178865130) -->
+ <skip />
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Մատնահետքը հայտնաբերվել է մասամբ: Փորձեք նորից:"</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Չհաջողվեց մշակել մատնահետքը: Նորից փորձեք:"</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Մատնահետքերի սենսորն աղտոտված է: Մաքրեք այն և փորձեք նորից:"</string>
@@ -1872,8 +1912,18 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"Պահե՞լ <xliff:g id="TYPE">%1$s</xliff:g>ը <b><xliff:g id="LABEL">%2$s</xliff:g></b> ծառայությունում"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Պահե՞լ <xliff:g id="TYPE_0">%1$s</xliff:g>ն ու <xliff:g id="TYPE_1">%2$s</xliff:g>ը <b><xliff:g id="LABEL">%3$s</xliff:g></b> ծառայությունում"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Պահե՞լ <xliff:g id="TYPE_0">%1$s</xliff:g>ը, <xliff:g id="TYPE_1">%2$s</xliff:g>ն ու <xliff:g id="TYPE_2">%3$s</xliff:g>ը <b><xliff:g id="LABEL">%4$s</xliff:g></b> ծառայությունում"</string>
+ <!-- no translation found for autofill_update_title (4879673117448810818) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_type (339733442087186755) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) -->
+ <skip />
<string name="autofill_save_yes" msgid="6398026094049005921">"Պահել"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"Ոչ"</string>
+ <!-- no translation found for autofill_update_yes (310358413273276958) -->
+ <skip />
<string name="autofill_save_type_password" msgid="5288448918465971568">"գաղտնաբառ"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"հասցե"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"վարկային քարտ"</string>
diff --git a/core/res/res/values-in/strings.xml b/core/res/res/values-in/strings.xml
index 5bc03cd..7ba8e2c 100644
--- a/core/res/res/values-in/strings.xml
+++ b/core/res/res/values-in/strings.xml
@@ -300,6 +300,18 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"Sensor Tubuh"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"mengakses data sensor tentang tanda-tanda vital"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"Izinkan <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> mengakses data sensor tentang tanda-tanda vital Anda?"</string>
+ <!-- no translation found for permgrouplab_aural (965607064083134896) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_aural (4870189506255958055) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_aural (6787926123071735620) -->
+ <skip />
+ <!-- no translation found for permgrouplab_visual (8030190588123857921) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_visual (3415827902566663546) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_visual (6907523945030290376) -->
+ <skip />
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Mengambil konten jendela"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Memeriksa konten jendela tempat Anda berinteraksi."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Mengaktifkan Jelajahi dengan Sentuhan"</string>
@@ -494,6 +506,34 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"Mengizinkan aplikasi memanggil metode untuk menambahkan dan menghapus template sidik jari untuk digunakan."</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"gunakan hardware sidik jari"</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"Mengizinkan aplikasi untuk menggunakan hardware sidik jari untuk otentikasi"</string>
+ <!-- no translation found for permlab_audioRead (6617225220728465565) -->
+ <skip />
+ <!-- no translation found for permdesc_audioRead (5034032570243484805) -->
+ <skip />
+ <!-- no translation found for permlab_audioWrite (2661772059799779292) -->
+ <skip />
+ <!-- no translation found for permdesc_audioWrite (8888544708166230494) -->
+ <skip />
+ <!-- no translation found for permlab_videoRead (9182618678674737229) -->
+ <skip />
+ <!-- no translation found for permdesc_videoRead (7045676429859396194) -->
+ <skip />
+ <!-- no translation found for permlab_videoWrite (128769316366746446) -->
+ <skip />
+ <!-- no translation found for permdesc_videoWrite (5448565757490640841) -->
+ <skip />
+ <!-- no translation found for permlab_imagesRead (3015078545742665304) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesRead (3144263806038695580) -->
+ <skip />
+ <!-- no translation found for permlab_imagesWrite (3391306186247235510) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesWrite (7073662756617474375) -->
+ <skip />
+ <!-- no translation found for permlab_mediaLocation (8675148183726247864) -->
+ <skip />
+ <!-- no translation found for permdesc_mediaLocation (2237023389178865130) -->
+ <skip />
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Sebagian sidik jari terdeteksi. Coba lagi."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Tidak dapat memproses sidik jari. Coba lagi."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Sensor sidik jari kotor. Bersihkan dan coba lagi."</string>
@@ -1872,8 +1912,18 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"Simpan <xliff:g id="TYPE">%1$s</xliff:g> ke <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Simpan <xliff:g id="TYPE_0">%1$s</xliff:g> dan <xliff:g id="TYPE_1">%2$s</xliff:g> ke <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Simpan <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g>, dan <xliff:g id="TYPE_2">%3$s</xliff:g> ke <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string>
+ <!-- no translation found for autofill_update_title (4879673117448810818) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_type (339733442087186755) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) -->
+ <skip />
<string name="autofill_save_yes" msgid="6398026094049005921">"Simpan"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"Lain kali"</string>
+ <!-- no translation found for autofill_update_yes (310358413273276958) -->
+ <skip />
<string name="autofill_save_type_password" msgid="5288448918465971568">"sandi"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"alamat"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"kartu kredit"</string>
diff --git a/core/res/res/values-is/strings.xml b/core/res/res/values-is/strings.xml
index a915202..a2c79c0 100644
--- a/core/res/res/values-is/strings.xml
+++ b/core/res/res/values-is/strings.xml
@@ -300,6 +300,18 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"Líkamsskynjarar"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"aðgangur að skynjaragögnum yfir lífsmörk þín"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"Viltu veita <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> aðgang að skynjaragögnum yfir lífsmörk þín?"</string>
+ <!-- no translation found for permgrouplab_aural (965607064083134896) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_aural (4870189506255958055) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_aural (6787926123071735620) -->
+ <skip />
+ <!-- no translation found for permgrouplab_visual (8030190588123857921) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_visual (3415827902566663546) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_visual (6907523945030290376) -->
+ <skip />
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Sækja innihald glugga"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Kanna innihald glugga sem þú ert að nota."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Kveikja á snertikönnun"</string>
@@ -494,6 +506,34 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"Gerir forritinu kleift að beita aðferðum til að bæta við og eyða fingrafarasniðmátum til notkunar."</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"nota fingrafarabúnað"</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"Leyfir forritinu að nota fingrafarabúnað til auðkenningar"</string>
+ <!-- no translation found for permlab_audioRead (6617225220728465565) -->
+ <skip />
+ <!-- no translation found for permdesc_audioRead (5034032570243484805) -->
+ <skip />
+ <!-- no translation found for permlab_audioWrite (2661772059799779292) -->
+ <skip />
+ <!-- no translation found for permdesc_audioWrite (8888544708166230494) -->
+ <skip />
+ <!-- no translation found for permlab_videoRead (9182618678674737229) -->
+ <skip />
+ <!-- no translation found for permdesc_videoRead (7045676429859396194) -->
+ <skip />
+ <!-- no translation found for permlab_videoWrite (128769316366746446) -->
+ <skip />
+ <!-- no translation found for permdesc_videoWrite (5448565757490640841) -->
+ <skip />
+ <!-- no translation found for permlab_imagesRead (3015078545742665304) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesRead (3144263806038695580) -->
+ <skip />
+ <!-- no translation found for permlab_imagesWrite (3391306186247235510) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesWrite (7073662756617474375) -->
+ <skip />
+ <!-- no translation found for permlab_mediaLocation (8675148183726247864) -->
+ <skip />
+ <!-- no translation found for permdesc_mediaLocation (2237023389178865130) -->
+ <skip />
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Hluti fingrafars greindist. Reyndu aftur."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Ekki var hægt að vinna úr fingrafarinu. Reyndu aftur."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Fingrafaraskynjarinn er óhreinn. Hreinsaðu hann og reyndu aftur."</string>
@@ -1873,8 +1913,18 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"Vista <xliff:g id="TYPE">%1$s</xliff:g> á <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Vista <xliff:g id="TYPE_0">%1$s</xliff:g> og <xliff:g id="TYPE_1">%2$s</xliff:g> á <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Vista <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> og <xliff:g id="TYPE_2">%3$s</xliff:g> á <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string>
+ <!-- no translation found for autofill_update_title (4879673117448810818) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_type (339733442087186755) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) -->
+ <skip />
<string name="autofill_save_yes" msgid="6398026094049005921">"Vista"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"Nei, takk"</string>
+ <!-- no translation found for autofill_update_yes (310358413273276958) -->
+ <skip />
<string name="autofill_save_type_password" msgid="5288448918465971568">"aðgangsorð"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"heimilisfang"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"kreditkort"</string>
diff --git a/core/res/res/values-it/strings.xml b/core/res/res/values-it/strings.xml
index de0b528..a7c1ae2 100644
--- a/core/res/res/values-it/strings.xml
+++ b/core/res/res/values-it/strings.xml
@@ -300,6 +300,12 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"Sensori per il corpo"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"accedere ai dati dei sensori relativi ai tuoi parametri vitali"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"Consentire a <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> di accedere ai dati dei sensori relativi ai parametri vitali?"</string>
+ <string name="permgrouplab_aural" msgid="965607064083134896">"Musica"</string>
+ <string name="permgroupdesc_aural" msgid="4870189506255958055">"Accesso alla tua musica"</string>
+ <string name="permgrouprequest_aural" msgid="6787926123071735620">"Vuoi consentire all\'app <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> di accedere alla tua musica?"</string>
+ <string name="permgrouplab_visual" msgid="8030190588123857921">"Foto e video"</string>
+ <string name="permgroupdesc_visual" msgid="3415827902566663546">"Accesso alle tue foto e ai tuoi video"</string>
+ <string name="permgrouprequest_visual" msgid="6907523945030290376">"Vuoi consentire all\'app <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> di accedere alle tue foto e ai tuoi video?"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Recuperare contenuti della finestra"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Esaminare i contenuti di una finestra con cui interagisci."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Attivare Esplora al tocco"</string>
@@ -494,6 +500,20 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"Consente all\'app di richiamare metodi per aggiungere e rimuovere modelli di impronte digitali da utilizzare."</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"utilizzo di hardware per il riconoscimento delle impronte digitali"</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"Consente all\'app di utilizzare l\'hardware per il riconoscimento delle impronte digitali per eseguire l\'autenticazione"</string>
+ <string name="permlab_audioRead" msgid="6617225220728465565">"Lettura della tua raccolta musicale"</string>
+ <string name="permdesc_audioRead" msgid="5034032570243484805">"Consente all\'app di leggere la tua raccolta musicale."</string>
+ <string name="permlab_audioWrite" msgid="2661772059799779292">"Modifica della tua raccolta musicale"</string>
+ <string name="permdesc_audioWrite" msgid="8888544708166230494">"Consente all\'app di modificare la tua raccolta musicale."</string>
+ <string name="permlab_videoRead" msgid="9182618678674737229">"Lettura della tua raccolta di video"</string>
+ <string name="permdesc_videoRead" msgid="7045676429859396194">"Consente all\'app di leggere la tua raccolta di video."</string>
+ <string name="permlab_videoWrite" msgid="128769316366746446">"Modifica della tua raccolta di video"</string>
+ <string name="permdesc_videoWrite" msgid="5448565757490640841">"Consente all\'app di modificare la tua raccolta di video."</string>
+ <string name="permlab_imagesRead" msgid="3015078545742665304">"Lettura della tua raccolta di foto"</string>
+ <string name="permdesc_imagesRead" msgid="3144263806038695580">"Consente all\'app di leggere la tua raccolta di foto."</string>
+ <string name="permlab_imagesWrite" msgid="3391306186247235510">"Modifica della tua raccolta di foto"</string>
+ <string name="permdesc_imagesWrite" msgid="7073662756617474375">"Consente all\'app di modificare la tua raccolta di foto."</string>
+ <string name="permlab_mediaLocation" msgid="8675148183726247864">"Lettura delle posizioni dalla tua raccolta multimediale"</string>
+ <string name="permdesc_mediaLocation" msgid="2237023389178865130">"Consente all\'app di leggere le posizioni dalla tua raccolta multimediale."</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Rilevata impronta digitale parziale. Riprova."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Impossibile elaborare l\'impronta digitale. Riprova."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Il sensore di impronte digitali è sporco. Puliscilo e riprova."</string>
@@ -1872,8 +1892,13 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"Salvare <xliff:g id="TYPE">%1$s</xliff:g> in <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Salvare <xliff:g id="TYPE_0">%1$s</xliff:g> e <xliff:g id="TYPE_1">%2$s</xliff:g> in <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Salvare <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> e <xliff:g id="TYPE_2">%3$s</xliff:g> in <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string>
+ <string name="autofill_update_title" msgid="4879673117448810818">"Vuoi eseguire l\'aggiornamento a <b><xliff:g id="LABEL">%1$s</xliff:g></b>?"</string>
+ <string name="autofill_update_title_with_type" msgid="339733442087186755">"Vuoi eseguire l\'aggiornamento di <xliff:g id="TYPE">%1$s</xliff:g> a <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string>
+ <string name="autofill_update_title_with_2types" msgid="6321714204167424745">"Vuoi eseguire l\'aggiornamento di <xliff:g id="TYPE_0">%1$s</xliff:g> e <xliff:g id="TYPE_1">%2$s</xliff:g> a <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string>
+ <string name="autofill_update_title_with_3types" msgid="5866735124066629287">"Vuoi eseguire l\'aggiornamento di <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> e <xliff:g id="TYPE_2">%3$s</xliff:g> a <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string>
<string name="autofill_save_yes" msgid="6398026094049005921">"Salva"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"No, grazie"</string>
+ <string name="autofill_update_yes" msgid="310358413273276958">"Aggiorna"</string>
<string name="autofill_save_type_password" msgid="5288448918465971568">"password"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"indirizzo"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"carta di credito"</string>
diff --git a/core/res/res/values-iw/strings.xml b/core/res/res/values-iw/strings.xml
index 0c0e0ab..60eb471 100644
--- a/core/res/res/values-iw/strings.xml
+++ b/core/res/res/values-iw/strings.xml
@@ -306,6 +306,18 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"חיישני גוף"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"גישה אל נתוני חיישנים של הסימנים החיוניים שלך"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"לתת לאפליקציה <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> הרשאת גישה לנתוני חיישנים העוקבים אחר הסימנים החיוניים שלך?"</string>
+ <!-- no translation found for permgrouplab_aural (965607064083134896) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_aural (4870189506255958055) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_aural (6787926123071735620) -->
+ <skip />
+ <!-- no translation found for permgrouplab_visual (8030190588123857921) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_visual (3415827902566663546) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_visual (6907523945030290376) -->
+ <skip />
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"אחזור תוכן של חלון"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"בדוק את התוכן של חלון שאיתו אתה מבצע אינטראקציה."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"הפעלה של \'גילוי באמצעות מגע\'"</string>
@@ -500,6 +512,34 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"מאפשר לאפליקציה להפעיל שיטות להוספה ומחיקה של תבניות טביעות אצבעות שבהן ייעשה שימוש."</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"חומרה של טביעות אצבעות"</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"מאפשר לאפליקציה להשתמש בחומרה של טביעות אצבעות לצורך אימות"</string>
+ <!-- no translation found for permlab_audioRead (6617225220728465565) -->
+ <skip />
+ <!-- no translation found for permdesc_audioRead (5034032570243484805) -->
+ <skip />
+ <!-- no translation found for permlab_audioWrite (2661772059799779292) -->
+ <skip />
+ <!-- no translation found for permdesc_audioWrite (8888544708166230494) -->
+ <skip />
+ <!-- no translation found for permlab_videoRead (9182618678674737229) -->
+ <skip />
+ <!-- no translation found for permdesc_videoRead (7045676429859396194) -->
+ <skip />
+ <!-- no translation found for permlab_videoWrite (128769316366746446) -->
+ <skip />
+ <!-- no translation found for permdesc_videoWrite (5448565757490640841) -->
+ <skip />
+ <!-- no translation found for permlab_imagesRead (3015078545742665304) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesRead (3144263806038695580) -->
+ <skip />
+ <!-- no translation found for permlab_imagesWrite (3391306186247235510) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesWrite (7073662756617474375) -->
+ <skip />
+ <!-- no translation found for permlab_mediaLocation (8675148183726247864) -->
+ <skip />
+ <!-- no translation found for permdesc_mediaLocation (2237023389178865130) -->
+ <skip />
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"זוהתה טביעת אצבע חלקית. נסה שוב."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"לא ניתן היה לעבד את טביעת האצבע. נסה שוב."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"החיישן של טביעות האצבעות מלוכלך. נקה אותו ונסה שוב."</string>
@@ -1942,8 +1982,18 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"האם לשמור <xliff:g id="TYPE">%1$s</xliff:g> בשירות <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"האם לשמור <xliff:g id="TYPE_0">%1$s</xliff:g> ו<xliff:g id="TYPE_1">%2$s</xliff:g> בשירות <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"האם לשמור <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> ו<xliff:g id="TYPE_2">%3$s</xliff:g> בשירות <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string>
+ <!-- no translation found for autofill_update_title (4879673117448810818) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_type (339733442087186755) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) -->
+ <skip />
<string name="autofill_save_yes" msgid="6398026094049005921">"שמירה"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"לא, תודה"</string>
+ <!-- no translation found for autofill_update_yes (310358413273276958) -->
+ <skip />
<string name="autofill_save_type_password" msgid="5288448918465971568">"סיסמה"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"כתובת"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"כרטיס אשראי"</string>
diff --git a/core/res/res/values-ja/strings.xml b/core/res/res/values-ja/strings.xml
index 00d1b5d..ec2ada4 100644
--- a/core/res/res/values-ja/strings.xml
+++ b/core/res/res/values-ja/strings.xml
@@ -300,6 +300,12 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"ボディーセンサー"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"バイタルサインに関するセンサーデータへのアクセス"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"バイタルサインに関するセンサーデータへのアクセスを <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> に許可しますか?"</string>
+ <string name="permgrouplab_aural" msgid="965607064083134896">"音楽"</string>
+ <string name="permgroupdesc_aural" msgid="4870189506255958055">"音楽へのアクセス"</string>
+ <string name="permgrouprequest_aural" msgid="6787926123071735620">"音楽へのアクセスを <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> に許可しますか?"</string>
+ <string name="permgrouplab_visual" msgid="8030190588123857921">"写真と動画"</string>
+ <string name="permgroupdesc_visual" msgid="3415827902566663546">"写真と動画へのアクセス"</string>
+ <string name="permgrouprequest_visual" msgid="6907523945030290376">"写真と動画へのアクセスを <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> に許可しますか?"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"ウィンドウコンテンツの取得"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"ユーザーがアクセスしているウィンドウのコンテンツを検査します。"</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"タッチガイドの有効化"</string>
@@ -494,6 +500,20 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"使用する指紋テンプレートの追加や削除を行う方法の呼び出しをアプリに許可します。"</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"指紋ハードウェアの使用"</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"指紋ハードウェアを認証に使用することをアプリに許可します"</string>
+ <string name="permlab_audioRead" msgid="6617225220728465565">"音楽コレクションの読み取り"</string>
+ <string name="permdesc_audioRead" msgid="5034032570243484805">"音楽コレクションの読み取りをアプリに許可します。"</string>
+ <string name="permlab_audioWrite" msgid="2661772059799779292">"音楽コレクションの変更"</string>
+ <string name="permdesc_audioWrite" msgid="8888544708166230494">"音楽コレクションの変更をアプリに許可します。"</string>
+ <string name="permlab_videoRead" msgid="9182618678674737229">"動画コレクションの読み取り"</string>
+ <string name="permdesc_videoRead" msgid="7045676429859396194">"動画コレクションの読み取りをアプリに許可します。"</string>
+ <string name="permlab_videoWrite" msgid="128769316366746446">"動画コレクションの変更"</string>
+ <string name="permdesc_videoWrite" msgid="5448565757490640841">"動画コレクションの変更をアプリに許可します。"</string>
+ <string name="permlab_imagesRead" msgid="3015078545742665304">"写真コレクションの読み取り"</string>
+ <string name="permdesc_imagesRead" msgid="3144263806038695580">"写真コレクションの読み取りをアプリに許可します。"</string>
+ <string name="permlab_imagesWrite" msgid="3391306186247235510">"写真コレクションの変更"</string>
+ <string name="permdesc_imagesWrite" msgid="7073662756617474375">"写真コレクションの変更をアプリに許可します。"</string>
+ <string name="permlab_mediaLocation" msgid="8675148183726247864">"メディア コレクションの位置情報の読み取り"</string>
+ <string name="permdesc_mediaLocation" msgid="2237023389178865130">"メディア コレクションの位置情報の読み取りをアプリに許可します。"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"指紋を一部しか検出できませんでした。もう一度お試しください。"</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"指紋を処理できませんでした。もう一度お試しください。"</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"指紋認証センサーに汚れがあります。汚れを落としてもう一度お試しください。"</string>
@@ -1872,8 +1892,13 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"<xliff:g id="TYPE">%1$s</xliff:g>を <b><xliff:g id="LABEL">%2$s</xliff:g></b> に保存しますか?"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"<xliff:g id="TYPE_0">%1$s</xliff:g>、<xliff:g id="TYPE_1">%2$s</xliff:g>を <b><xliff:g id="LABEL">%3$s</xliff:g></b> に保存しますか?"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"<xliff:g id="TYPE_0">%1$s</xliff:g>、<xliff:g id="TYPE_1">%2$s</xliff:g>、<xliff:g id="TYPE_2">%3$s</xliff:g>を <b><xliff:g id="LABEL">%4$s</xliff:g></b> に保存しますか?"</string>
+ <string name="autofill_update_title" msgid="4879673117448810818">"<b><xliff:g id="LABEL">%1$s</xliff:g></b> に更新しますか?"</string>
+ <string name="autofill_update_title_with_type" msgid="339733442087186755">"<xliff:g id="TYPE">%1$s</xliff:g>を <b><xliff:g id="LABEL">%2$s</xliff:g></b> に更新しますか?"</string>
+ <string name="autofill_update_title_with_2types" msgid="6321714204167424745">"<xliff:g id="TYPE_0">%1$s</xliff:g>と<xliff:g id="TYPE_1">%2$s</xliff:g>を <b><xliff:g id="LABEL">%3$s</xliff:g></b> に更新しますか?"</string>
+ <string name="autofill_update_title_with_3types" msgid="5866735124066629287">"<xliff:g id="TYPE_0">%1$s</xliff:g>、<xliff:g id="TYPE_1">%2$s</xliff:g>、<xliff:g id="TYPE_2">%3$s</xliff:g>を <b><xliff:g id="LABEL">%4$s</xliff:g></b> に更新しますか?"</string>
<string name="autofill_save_yes" msgid="6398026094049005921">"はい"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"いいえ"</string>
+ <string name="autofill_update_yes" msgid="310358413273276958">"更新"</string>
<string name="autofill_save_type_password" msgid="5288448918465971568">"パスワード"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"住所"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"クレジット カード"</string>
diff --git a/core/res/res/values-ka/strings.xml b/core/res/res/values-ka/strings.xml
index ab65348..e728762 100644
--- a/core/res/res/values-ka/strings.xml
+++ b/core/res/res/values-ka/strings.xml
@@ -300,6 +300,18 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"სხეულის სენსორები"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"თქვენი სასიცოცხლო ფუნქციების შესახებ სენსორის მონაცემებზე წვდომა"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"გსურთ, მიანიჭოთ <b><xliff:g id="APP_NAME">%1$s</xliff:g>-ს</b> თქვენი სასიცოცხლო ფუნქციების შესახებ სენსორის მონაცემებზე წვდომის ნებართვა?"</string>
+ <!-- no translation found for permgrouplab_aural (965607064083134896) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_aural (4870189506255958055) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_aural (6787926123071735620) -->
+ <skip />
+ <!-- no translation found for permgrouplab_visual (8030190588123857921) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_visual (3415827902566663546) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_visual (6907523945030290376) -->
+ <skip />
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"ფანჯრის კონტენტის მოძიება"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"იმ ფანჯრის კონტენტის შემოწმება, რომელშიც მუშაობთ."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"„შეხებით აღმოჩენის“ ჩართვა"</string>
@@ -494,6 +506,34 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"საშუალებას აძლევს აპლიკაციას დაამატოს ან ამოშალოს გამოსაყენებელი თითის ანაბეჭდის ნიმუშები,"</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"თითის ანაბეჭდის აპარატის გამოყენება"</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"საშუალებას აძლევს აპლიკაციას გამოიყენოს ავტენთიფიკაციისათვის თითის ანაბეჭდის აპარატი"</string>
+ <!-- no translation found for permlab_audioRead (6617225220728465565) -->
+ <skip />
+ <!-- no translation found for permdesc_audioRead (5034032570243484805) -->
+ <skip />
+ <!-- no translation found for permlab_audioWrite (2661772059799779292) -->
+ <skip />
+ <!-- no translation found for permdesc_audioWrite (8888544708166230494) -->
+ <skip />
+ <!-- no translation found for permlab_videoRead (9182618678674737229) -->
+ <skip />
+ <!-- no translation found for permdesc_videoRead (7045676429859396194) -->
+ <skip />
+ <!-- no translation found for permlab_videoWrite (128769316366746446) -->
+ <skip />
+ <!-- no translation found for permdesc_videoWrite (5448565757490640841) -->
+ <skip />
+ <!-- no translation found for permlab_imagesRead (3015078545742665304) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesRead (3144263806038695580) -->
+ <skip />
+ <!-- no translation found for permlab_imagesWrite (3391306186247235510) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesWrite (7073662756617474375) -->
+ <skip />
+ <!-- no translation found for permlab_mediaLocation (8675148183726247864) -->
+ <skip />
+ <!-- no translation found for permdesc_mediaLocation (2237023389178865130) -->
+ <skip />
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"აღმოჩენილია თითის ნაწილობრივი ანაბეჭდი. გთხოვთ, სცადოთ ხელახლა."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"თითის ანაბეჭდი ვერ მუშავდება. გთხოვთ, სცადოთ ხელახლა."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"თითის ანაბეჭდის სენსორი დაბინძურებულია. გთხოვთ, გაასუფთაოთ და სცადოთ ხელახლა."</string>
@@ -1872,8 +1912,18 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"გსურთ, შეინახოთ <xliff:g id="TYPE">%1$s</xliff:g> <b><xliff:g id="LABEL">%2$s</xliff:g>-ში</b>?"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"გსურთ, შეინახოთ <xliff:g id="TYPE_0">%1$s</xliff:g> და <xliff:g id="TYPE_1">%2$s</xliff:g> <b><xliff:g id="LABEL">%3$s</xliff:g>-ში</b>?"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"გსურთ, შეინახოთ <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g>, და <xliff:g id="TYPE_2">%3$s</xliff:g> <b><xliff:g id="LABEL">%4$s</xliff:g>-ში</b>?"</string>
+ <!-- no translation found for autofill_update_title (4879673117448810818) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_type (339733442087186755) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) -->
+ <skip />
<string name="autofill_save_yes" msgid="6398026094049005921">"შენახვა"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"არა, გმადლობთ"</string>
+ <!-- no translation found for autofill_update_yes (310358413273276958) -->
+ <skip />
<string name="autofill_save_type_password" msgid="5288448918465971568">"პაროლი"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"მისამართი"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"საკრედიტო ბარათი"</string>
diff --git a/core/res/res/values-kk/strings.xml b/core/res/res/values-kk/strings.xml
index 3d4749f..2e3ba64 100644
--- a/core/res/res/values-kk/strings.xml
+++ b/core/res/res/values-kk/strings.xml
@@ -300,6 +300,18 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"Дене датчиктері"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"ағза күйінің көрсеткіштері туралы сенсор деректеріне қатынасу"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> қолданбасына негізгі физиологиялық көрсеткіштерді көрсететін сенсорлық деректерді пайдалануға рұқсат берілсін бе?"</string>
+ <!-- no translation found for permgrouplab_aural (965607064083134896) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_aural (4870189506255958055) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_aural (6787926123071735620) -->
+ <skip />
+ <!-- no translation found for permgrouplab_visual (8030190588123857921) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_visual (3415827902566663546) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_visual (6907523945030290376) -->
+ <skip />
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Терезе мазмұнын оқып отыру"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Ашық тұрған терезе мазмұнын тексеру."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Explore by Touch функциясын қосу"</string>
@@ -494,6 +506,34 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"Қолданбаға пайдаланатын саусақ ізі үлгілерін қосу және жою әдістерін шақыруға мүмкіндік береді."</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"саусақ ізі жабдығын пайдалану"</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"Қолданбаға аутентификацияалу үшін саусақ ізі жабдығын пайдалануға мүмкіндік береді"</string>
+ <!-- no translation found for permlab_audioRead (6617225220728465565) -->
+ <skip />
+ <!-- no translation found for permdesc_audioRead (5034032570243484805) -->
+ <skip />
+ <!-- no translation found for permlab_audioWrite (2661772059799779292) -->
+ <skip />
+ <!-- no translation found for permdesc_audioWrite (8888544708166230494) -->
+ <skip />
+ <!-- no translation found for permlab_videoRead (9182618678674737229) -->
+ <skip />
+ <!-- no translation found for permdesc_videoRead (7045676429859396194) -->
+ <skip />
+ <!-- no translation found for permlab_videoWrite (128769316366746446) -->
+ <skip />
+ <!-- no translation found for permdesc_videoWrite (5448565757490640841) -->
+ <skip />
+ <!-- no translation found for permlab_imagesRead (3015078545742665304) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesRead (3144263806038695580) -->
+ <skip />
+ <!-- no translation found for permlab_imagesWrite (3391306186247235510) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesWrite (7073662756617474375) -->
+ <skip />
+ <!-- no translation found for permlab_mediaLocation (8675148183726247864) -->
+ <skip />
+ <!-- no translation found for permdesc_mediaLocation (2237023389178865130) -->
+ <skip />
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Саусақ ізі ішінара анықталды. Әрекетті қайталаңыз."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Саусақ ізін өңдеу мүмкін емес. Әрекетті қайталаңыз."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Саусақ ізі сенсоры лас. Тазалап, әрекетті қайталаңыз."</string>
@@ -1873,8 +1913,18 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"<xliff:g id="TYPE">%1$s</xliff:g> \"<xliff:g id="LABEL">%2$s</xliff:g>\" қызметінде сақталсын ба?"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"<xliff:g id="TYPE_0">%1$s</xliff:g> және <xliff:g id="TYPE_1">%2$s</xliff:g> \"<xliff:g id="LABEL">%3$s</xliff:g>\" қызметінде сақталсын ба?"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"<xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> және <xliff:g id="TYPE_2">%3$s</xliff:g> \"<xliff:g id="LABEL">%4$s</xliff:g>\" қызметінде сақталсын ба?"</string>
+ <!-- no translation found for autofill_update_title (4879673117448810818) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_type (339733442087186755) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) -->
+ <skip />
<string name="autofill_save_yes" msgid="6398026094049005921">"Сақтау"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"Жоқ, рақмет"</string>
+ <!-- no translation found for autofill_update_yes (310358413273276958) -->
+ <skip />
<string name="autofill_save_type_password" msgid="5288448918465971568">"құпия сөз"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"мекенжай"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"несие картасы"</string>
diff --git a/core/res/res/values-km/strings.xml b/core/res/res/values-km/strings.xml
index d65e886..6e2d41b 100644
--- a/core/res/res/values-km/strings.xml
+++ b/core/res/res/values-km/strings.xml
@@ -300,6 +300,18 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"ឧបករណ៍ចាប់សញ្ញារាងកាយ"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"ចូលដំណើរការទិន្នន័យឧបករណ៍ចាប់សញ្ញាអំពីស្ថានភាពសុខភាពរបស់អ្នក"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"អនុញ្ញាតឱ្យ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ចូលប្រើទិន្នន័យឧបករណ៍ចាប់សញ្ញាអំពីស្ថានភាពសុខភាពរបស់អ្នក?"</string>
+ <!-- no translation found for permgrouplab_aural (965607064083134896) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_aural (4870189506255958055) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_aural (6787926123071735620) -->
+ <skip />
+ <!-- no translation found for permgrouplab_visual (8030190588123857921) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_visual (3415827902566663546) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_visual (6907523945030290376) -->
+ <skip />
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"ទាញយកខ្លឹមសារវិនដូ"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"ពិនិត្យខ្លឹមសារវិនដូដែលអ្នកកំពុងទាក់ទងជាមួយ។"</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"បើកការរកមើលដោយប៉ះ"</string>
@@ -494,6 +506,34 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"អនុញ្ញាតឲ្យកម្មវិធីប្រើវិធីសាស្ត្របន្ថែម និងលុបពុម្ពម្រាមដៃសម្រាប់ប្រើប្រាស់។"</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"ប្រើផ្នែករឹងស្នាមម្រាមដៃ"</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"អនុញ្ញាតឲ្យកម្មវិធីប្រើផ្នែករឹងស្នាមម្រាមដៃសម្រាប់ការផ្ទៀងផ្ទាត់"</string>
+ <!-- no translation found for permlab_audioRead (6617225220728465565) -->
+ <skip />
+ <!-- no translation found for permdesc_audioRead (5034032570243484805) -->
+ <skip />
+ <!-- no translation found for permlab_audioWrite (2661772059799779292) -->
+ <skip />
+ <!-- no translation found for permdesc_audioWrite (8888544708166230494) -->
+ <skip />
+ <!-- no translation found for permlab_videoRead (9182618678674737229) -->
+ <skip />
+ <!-- no translation found for permdesc_videoRead (7045676429859396194) -->
+ <skip />
+ <!-- no translation found for permlab_videoWrite (128769316366746446) -->
+ <skip />
+ <!-- no translation found for permdesc_videoWrite (5448565757490640841) -->
+ <skip />
+ <!-- no translation found for permlab_imagesRead (3015078545742665304) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesRead (3144263806038695580) -->
+ <skip />
+ <!-- no translation found for permlab_imagesWrite (3391306186247235510) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesWrite (7073662756617474375) -->
+ <skip />
+ <!-- no translation found for permlab_mediaLocation (8675148183726247864) -->
+ <skip />
+ <!-- no translation found for permdesc_mediaLocation (2237023389178865130) -->
+ <skip />
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"បានផ្តិតយកស្នាមម្រាមដៃមិនពេញលក្ខណៈ។ សូមព្យាយាមម្តងទៀត។"</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"មិនអាចដំណើរការស្នាមម្រាមដៃបានទេ។ សូមព្យាយាមម្តងទៀត។"</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"ឧបករណ៍ផ្តិតម្រាមដៃប្រលាក់ហើយ។ សូមសម្អាត ហើយព្យាយាមម្តងទៀត។"</string>
@@ -1874,8 +1914,18 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"រក្សាទុក <xliff:g id="TYPE">%1$s</xliff:g> ទៅក្នុង <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"រក្សាទុក <xliff:g id="TYPE_0">%1$s</xliff:g> និង <xliff:g id="TYPE_1">%2$s</xliff:g> ទៅក្នុង <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"រក្សាទុក <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g>, និង <xliff:g id="TYPE_2">%3$s</xliff:g> ទៅក្នុង <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string>
+ <!-- no translation found for autofill_update_title (4879673117448810818) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_type (339733442087186755) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) -->
+ <skip />
<string name="autofill_save_yes" msgid="6398026094049005921">"រក្សាទុក"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"ទេ អរគុណ"</string>
+ <!-- no translation found for autofill_update_yes (310358413273276958) -->
+ <skip />
<string name="autofill_save_type_password" msgid="5288448918465971568">"ពាក្យសម្ងាត់"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"អាសយដ្ឋាន"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"បណ្ណឥណទាន"</string>
diff --git a/core/res/res/values-kn/strings.xml b/core/res/res/values-kn/strings.xml
index c28e8e8..e99d53a 100644
--- a/core/res/res/values-kn/strings.xml
+++ b/core/res/res/values-kn/strings.xml
@@ -300,6 +300,18 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"ದೇಹ ಸೆನ್ಸರ್ಗಳು"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"ನಿಮ್ಮ ಮುಖ್ಯ ಲಕ್ಷಣಗಳ ಕುರಿತು ಸೆನ್ಸಾರ್ ಡೇಟಾವನ್ನು ಪ್ರವೇಶಿಸಿ"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"ನಿಮ್ಮ ಮುಖ್ಯ ಲಕ್ಷಣಗಳ ಕುರಿತು ಸೆನ್ಸರ್ ಡೇಟಾವನ್ನು <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ಗೆ ಅನುಮತಿಸಬೇಕೇ?"</string>
+ <!-- no translation found for permgrouplab_aural (965607064083134896) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_aural (4870189506255958055) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_aural (6787926123071735620) -->
+ <skip />
+ <!-- no translation found for permgrouplab_visual (8030190588123857921) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_visual (3415827902566663546) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_visual (6907523945030290376) -->
+ <skip />
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"ವಿಂಡೋ ವಿಷಯವನ್ನು ಹಿಂಪಡೆಯುತ್ತದೆ"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"ನೀವು ಬಳಸುತ್ತಿರುವ ವಿಂಡೋದ ವಿಷಯ ಪರೀಕ್ಷಿಸುತ್ತದೆ."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"ಸ್ಪರ್ಶ-ಎಕ್ಸ್ಪ್ಲೋರ್ ಆನ್ ಮಾಡುತ್ತದೆ"</string>
@@ -494,6 +506,34 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"ಬಳಕೆಗೆ ಬೆರಳಚ್ಚು ಟೆಂಪ್ಲೇಟ್ಗಳನ್ನು ಸೇರಿಸಲು ಮತ್ತು ಅಳಿಸಲು ವಿಧಾನಗಳನ್ನು ಮನವಿ ಮಾಡಲು ಅಪ್ಲಿಕೇಶನ್ಗೆ ಅನುಮತಿಸುತ್ತದೆ."</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"ಬೆರಳಚ್ಚು ಹಾರ್ಡ್ವೇರ್ ಬಳಸಿ"</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"ಪ್ರಮಾಣೀಕರಣಕ್ಕಾಗಿ ಬೆರಳಚ್ಚು ಹಾರ್ಡ್ವೇರ್ ಬಳಸಲು ಅಪ್ಲಿಕೇಶನ್ಗೆ ಅನುಮತಿಸುತ್ತದೆ"</string>
+ <!-- no translation found for permlab_audioRead (6617225220728465565) -->
+ <skip />
+ <!-- no translation found for permdesc_audioRead (5034032570243484805) -->
+ <skip />
+ <!-- no translation found for permlab_audioWrite (2661772059799779292) -->
+ <skip />
+ <!-- no translation found for permdesc_audioWrite (8888544708166230494) -->
+ <skip />
+ <!-- no translation found for permlab_videoRead (9182618678674737229) -->
+ <skip />
+ <!-- no translation found for permdesc_videoRead (7045676429859396194) -->
+ <skip />
+ <!-- no translation found for permlab_videoWrite (128769316366746446) -->
+ <skip />
+ <!-- no translation found for permdesc_videoWrite (5448565757490640841) -->
+ <skip />
+ <!-- no translation found for permlab_imagesRead (3015078545742665304) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesRead (3144263806038695580) -->
+ <skip />
+ <!-- no translation found for permlab_imagesWrite (3391306186247235510) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesWrite (7073662756617474375) -->
+ <skip />
+ <!-- no translation found for permlab_mediaLocation (8675148183726247864) -->
+ <skip />
+ <!-- no translation found for permdesc_mediaLocation (2237023389178865130) -->
+ <skip />
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"ಭಾಗಶಃ ಬೆರಳಚ್ಚು ಪತ್ತೆಯಾಗಿದೆ. ದಯವಿಟ್ಟು ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"ಬೆರಳಚ್ಚು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ. ದಯವಿಟ್ಟು ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"ಬೆರಳಚ್ಚು ಸೆನ್ಸಾರ್ ಕೊಳೆಯಾಗಿದೆ. ದಯವಿಟ್ಟು ಅದನ್ನು ಸ್ವಚ್ಛಗೊಳಿಸಿ ಹಾಗೂ ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ."</string>
@@ -1873,8 +1913,18 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"<xliff:g id="TYPE">%1$s</xliff:g> ಅನ್ನು <b><xliff:g id="LABEL">%2$s</xliff:g></b>ನಲ್ಲಿ ಉಳಿಸುವುದೇ?"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"<xliff:g id="TYPE_0">%1$s</xliff:g> ಹಾಗೂ <xliff:g id="TYPE_1">%2$s</xliff:g> ಅನ್ನು <b><xliff:g id="LABEL">%3$s</xliff:g></b>ನಲ್ಲಿ ಉಳಿಸುವುದೇ?"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"<xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g>, ಹಾಗೂ <xliff:g id="TYPE_2">%3$s</xliff:g> ಅನ್ನು <b><xliff:g id="LABEL">%4$s</xliff:g></b>ನಲ್ಲಿ ಉಳಿಸುವುದೇ?"</string>
+ <!-- no translation found for autofill_update_title (4879673117448810818) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_type (339733442087186755) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) -->
+ <skip />
<string name="autofill_save_yes" msgid="6398026094049005921">"ಉಳಿಸಿ"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"ಬೇಡ"</string>
+ <!-- no translation found for autofill_update_yes (310358413273276958) -->
+ <skip />
<string name="autofill_save_type_password" msgid="5288448918465971568">"ಪಾಸ್ವರ್ಡ್"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"ವಿಳಾಸ"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"ಕ್ರೆಡಿಟ್ ಕಾರ್ಡ್"</string>
diff --git a/core/res/res/values-ko/strings.xml b/core/res/res/values-ko/strings.xml
index 076b65f..89e7269 100644
--- a/core/res/res/values-ko/strings.xml
+++ b/core/res/res/values-ko/strings.xml
@@ -300,6 +300,18 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"인체 감지 센서"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"생체 신호에 관한 센서 데이터에 액세스"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b>에서 생체 신호에 관한 센서 데이터에 액세스하도록 허용하시겠습니까?"</string>
+ <!-- no translation found for permgrouplab_aural (965607064083134896) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_aural (4870189506255958055) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_aural (6787926123071735620) -->
+ <skip />
+ <!-- no translation found for permgrouplab_visual (8030190588123857921) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_visual (3415827902566663546) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_visual (6907523945030290376) -->
+ <skip />
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"창 콘텐츠 가져오기"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"상호작용 중인 창의 콘텐츠를 검사합니다."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"터치하여 탐색 사용"</string>
@@ -494,6 +506,34 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"사용할 지문 템플릿의 추가 및 삭제 메소드를 앱에서 실행하도록 허용합니다."</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"지문 하드웨어 사용"</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"앱에서 지문 하드웨어를 인증에 사용하도록 허용합니다."</string>
+ <!-- no translation found for permlab_audioRead (6617225220728465565) -->
+ <skip />
+ <!-- no translation found for permdesc_audioRead (5034032570243484805) -->
+ <skip />
+ <!-- no translation found for permlab_audioWrite (2661772059799779292) -->
+ <skip />
+ <!-- no translation found for permdesc_audioWrite (8888544708166230494) -->
+ <skip />
+ <!-- no translation found for permlab_videoRead (9182618678674737229) -->
+ <skip />
+ <!-- no translation found for permdesc_videoRead (7045676429859396194) -->
+ <skip />
+ <!-- no translation found for permlab_videoWrite (128769316366746446) -->
+ <skip />
+ <!-- no translation found for permdesc_videoWrite (5448565757490640841) -->
+ <skip />
+ <!-- no translation found for permlab_imagesRead (3015078545742665304) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesRead (3144263806038695580) -->
+ <skip />
+ <!-- no translation found for permlab_imagesWrite (3391306186247235510) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesWrite (7073662756617474375) -->
+ <skip />
+ <!-- no translation found for permlab_mediaLocation (8675148183726247864) -->
+ <skip />
+ <!-- no translation found for permdesc_mediaLocation (2237023389178865130) -->
+ <skip />
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"지문이 일부만 인식되었습니다. 다시 시도해 주세요."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"지문을 인식할 수 없습니다. 다시 시도해 주세요."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"지문 센서를 깨끗이 닦고 다시 시도하세요."</string>
@@ -1872,8 +1912,18 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"<xliff:g id="TYPE">%1$s</xliff:g>을(를) <b><xliff:g id="LABEL">%2$s</xliff:g></b>에 저장하시겠습니까?"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"<xliff:g id="TYPE_0">%1$s</xliff:g> 및 <xliff:g id="TYPE_1">%2$s</xliff:g>을(를) <b><xliff:g id="LABEL">%3$s</xliff:g></b>에 저장하시겠습니까?"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"<xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g>, <xliff:g id="TYPE_2">%3$s</xliff:g>을(를) <b><xliff:g id="LABEL">%4$s</xliff:g></b>에 저장하시겠습니까?"</string>
+ <!-- no translation found for autofill_update_title (4879673117448810818) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_type (339733442087186755) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) -->
+ <skip />
<string name="autofill_save_yes" msgid="6398026094049005921">"저장"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"사용 안함"</string>
+ <!-- no translation found for autofill_update_yes (310358413273276958) -->
+ <skip />
<string name="autofill_save_type_password" msgid="5288448918465971568">"비밀번호"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"주소"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"신용카드"</string>
diff --git a/core/res/res/values-ky/strings.xml b/core/res/res/values-ky/strings.xml
index a75a00c..55a721e 100644
--- a/core/res/res/values-ky/strings.xml
+++ b/core/res/res/values-ky/strings.xml
@@ -300,6 +300,18 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"Дене сенсорлору"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"организмдин абалына көз салган сенсордун дайындарына мүмкүнчүлүк алуу"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> колдонмосуна организмдин абалына көз салган сенсордун дайындарын пайдаланууга уруксат берилсинби?"</string>
+ <!-- no translation found for permgrouplab_aural (965607064083134896) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_aural (4870189506255958055) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_aural (6787926123071735620) -->
+ <skip />
+ <!-- no translation found for permgrouplab_visual (8030190588123857921) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_visual (3415827902566663546) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_visual (6907523945030290376) -->
+ <skip />
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Терезедеги мазмунду алып турат"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Учурда ачылып турган терезедеги маалыматты талдайт."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"\"Сыйпалап изилдөө\" мүмкүнчүлүгүн иштетет"</string>
@@ -494,6 +506,34 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"Колдонмого пайдалануу үчүн манжа изинин үлгүлөрүн кошуу жана жок кылуу мүмкүндүгүн берет."</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"манжа изинин аппараттык камсыздоосун колдонуу"</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"Колдонмого аныктыгын текшерүү үчүн манжа изинин аппараттык камсыздоосун пайдалануу мүмкүндүгүн берет"</string>
+ <!-- no translation found for permlab_audioRead (6617225220728465565) -->
+ <skip />
+ <!-- no translation found for permdesc_audioRead (5034032570243484805) -->
+ <skip />
+ <!-- no translation found for permlab_audioWrite (2661772059799779292) -->
+ <skip />
+ <!-- no translation found for permdesc_audioWrite (8888544708166230494) -->
+ <skip />
+ <!-- no translation found for permlab_videoRead (9182618678674737229) -->
+ <skip />
+ <!-- no translation found for permdesc_videoRead (7045676429859396194) -->
+ <skip />
+ <!-- no translation found for permlab_videoWrite (128769316366746446) -->
+ <skip />
+ <!-- no translation found for permdesc_videoWrite (5448565757490640841) -->
+ <skip />
+ <!-- no translation found for permlab_imagesRead (3015078545742665304) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesRead (3144263806038695580) -->
+ <skip />
+ <!-- no translation found for permlab_imagesWrite (3391306186247235510) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesWrite (7073662756617474375) -->
+ <skip />
+ <!-- no translation found for permlab_mediaLocation (8675148183726247864) -->
+ <skip />
+ <!-- no translation found for permdesc_mediaLocation (2237023389178865130) -->
+ <skip />
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Манжа изи жарым-жартылай аныкталды. Кайра аракет кылыңыз."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Манжа изи иштелбей койду. Кайра аракет кылыңыз."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Манжа изинин сенсору кирдеп калган. Тазалап, кайра аракет кылыңыз."</string>
@@ -1874,8 +1914,18 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"<xliff:g id="TYPE">%1$s</xliff:g> <b><xliff:g id="LABEL">%2$s</xliff:g></b> кызматында сакталсынбы?"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"<xliff:g id="TYPE_0">%1$s</xliff:g> жана <xliff:g id="TYPE_1">%2$s</xliff:g> <b><xliff:g id="LABEL">%3$s</xliff:g></b> кызматында сакталсынбы?"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"<xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> жана <xliff:g id="TYPE_2">%3$s</xliff:g> <b><xliff:g id="LABEL">%4$s</xliff:g></b> кызматында сакталсынбы?"</string>
+ <!-- no translation found for autofill_update_title (4879673117448810818) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_type (339733442087186755) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) -->
+ <skip />
<string name="autofill_save_yes" msgid="6398026094049005921">"Сактоо"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"Жок, рахмат"</string>
+ <!-- no translation found for autofill_update_yes (310358413273276958) -->
+ <skip />
<string name="autofill_save_type_password" msgid="5288448918465971568">"сырсөз"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"дарек"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"насыя картасы"</string>
diff --git a/core/res/res/values-lo/strings.xml b/core/res/res/values-lo/strings.xml
index ef2cede..24cef03 100644
--- a/core/res/res/values-lo/strings.xml
+++ b/core/res/res/values-lo/strings.xml
@@ -300,6 +300,18 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"ເຊັນເຊີຮ່າງກາຍ"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"ເຂົ້າຫາຂໍ້ມູນເຊັນເຊີກ່ຽວກັບສັນຍານຊີບຂອງທ່ານ"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"ອະນຸຍາດ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ໃຫ້ເຂົ້າເຖິງຂໍ້ມູນເຊັນເຊີກ່ຽວກັບສັນຍານຊີບຂອງທ່ານບໍ?"</string>
+ <!-- no translation found for permgrouplab_aural (965607064083134896) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_aural (4870189506255958055) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_aural (6787926123071735620) -->
+ <skip />
+ <!-- no translation found for permgrouplab_visual (8030190588123857921) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_visual (3415827902566663546) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_visual (6907523945030290376) -->
+ <skip />
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"ດຶງຂໍ້ມູນເນື້ອຫາໃນໜ້າຈໍ"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"ກວດກາເນື້ອຫາຂອງໜ້າຈໍທີ່ທ່ານກຳລັງມີປະຕິສຳພັນນຳ."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"ເປີດໃຊ້ \"ການສຳຫຼວດໂດຍສຳຜັດ\""</string>
@@ -494,6 +506,34 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"ອະນຸຍາດໃຫ້ແອັບເຮັດໃຫ້ວິທີການຕ່າງໆເພີ່ມ ແລະລຶບແມ່ແບບລາຍນີ້ວມືສຳລັບການໃຊ້."</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"ໃຊ້ຮາດແວລາຍນີ້ວມື"</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"ອະນຸຍາດໃຫ້ແອັບນຳໃຊ້ຮາດແວລາຍນີ້ວມືສຳລັບການຮັບຮອງ"</string>
+ <!-- no translation found for permlab_audioRead (6617225220728465565) -->
+ <skip />
+ <!-- no translation found for permdesc_audioRead (5034032570243484805) -->
+ <skip />
+ <!-- no translation found for permlab_audioWrite (2661772059799779292) -->
+ <skip />
+ <!-- no translation found for permdesc_audioWrite (8888544708166230494) -->
+ <skip />
+ <!-- no translation found for permlab_videoRead (9182618678674737229) -->
+ <skip />
+ <!-- no translation found for permdesc_videoRead (7045676429859396194) -->
+ <skip />
+ <!-- no translation found for permlab_videoWrite (128769316366746446) -->
+ <skip />
+ <!-- no translation found for permdesc_videoWrite (5448565757490640841) -->
+ <skip />
+ <!-- no translation found for permlab_imagesRead (3015078545742665304) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesRead (3144263806038695580) -->
+ <skip />
+ <!-- no translation found for permlab_imagesWrite (3391306186247235510) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesWrite (7073662756617474375) -->
+ <skip />
+ <!-- no translation found for permlab_mediaLocation (8675148183726247864) -->
+ <skip />
+ <!-- no translation found for permdesc_mediaLocation (2237023389178865130) -->
+ <skip />
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"ກວດພົບລາຍນີ້ວມືບາງສ່ວນແລ້ວ. ກະລຸນາລອງໃໝ່ອີກ."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"ບໍ່ສາມາດດຳເນີນການລາຍນີ້ວມືໄດ້. ກະລຸນາລອງໃໝ່ອີກ."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"ເຊັນເຊີລາຍນີ້ວມືເປື້ອນ. ກະລຸນາທຳຄວາມສະອາດ ແລະລອງໃໝ່ອີກ."</string>
@@ -1872,8 +1912,18 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"ບັນທຶກ <xliff:g id="TYPE">%1$s</xliff:g> ໃສ່ <b><xliff:g id="LABEL">%2$s</xliff:g></b> ບໍ?"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"ບັນທຶກ <xliff:g id="TYPE_0">%1$s</xliff:g> ແລະ <xliff:g id="TYPE_1">%2$s</xliff:g> ໃສ່ <b><xliff:g id="LABEL">%3$s</xliff:g></b> ບໍ?"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"ບັນທຶກ <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> ແລະ <xliff:g id="TYPE_2">%3$s</xliff:g> ໃສ່ <b><xliff:g id="LABEL">%4$s</xliff:g></b> ບໍ?"</string>
+ <!-- no translation found for autofill_update_title (4879673117448810818) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_type (339733442087186755) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) -->
+ <skip />
<string name="autofill_save_yes" msgid="6398026094049005921">"ບັນທຶກ"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"ບໍ່, ຂອບໃຈ"</string>
+ <!-- no translation found for autofill_update_yes (310358413273276958) -->
+ <skip />
<string name="autofill_save_type_password" msgid="5288448918465971568">"ລະຫັດຜ່ານ"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"ທີ່ຢູ່"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"ບັດເຄຣດິດ"</string>
diff --git a/core/res/res/values-lt/strings.xml b/core/res/res/values-lt/strings.xml
index e72b1a9..c61c30f 100644
--- a/core/res/res/values-lt/strings.xml
+++ b/core/res/res/values-lt/strings.xml
@@ -306,6 +306,18 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"Kūno jutikliai"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"pasiekti jutiklių duomenis apie gyvybinius ženklus"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"Suteikti <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> galimybę pasiekti jutiklių duomenis apie gyvybinius ženklus?"</string>
+ <!-- no translation found for permgrouplab_aural (965607064083134896) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_aural (4870189506255958055) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_aural (6787926123071735620) -->
+ <skip />
+ <!-- no translation found for permgrouplab_visual (8030190588123857921) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_visual (3415827902566663546) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_visual (6907523945030290376) -->
+ <skip />
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Gauti lango turinį"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Tikrinti lango, su kuriuo sąveikaujate, turinį."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Įjungti „Naršyti paliečiant“"</string>
@@ -500,6 +512,34 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"Leidžiama programai aktyvinti metodus, norint pridėti ir ištrinti naudojamus kontrolinių kodų šablonus."</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"naudoti kontrolinio kodo aparatinę įrangą"</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"Leidžiama programai naudoti kontrolinio kodo aparatinę įrangą tapatybei nustatyti"</string>
+ <!-- no translation found for permlab_audioRead (6617225220728465565) -->
+ <skip />
+ <!-- no translation found for permdesc_audioRead (5034032570243484805) -->
+ <skip />
+ <!-- no translation found for permlab_audioWrite (2661772059799779292) -->
+ <skip />
+ <!-- no translation found for permdesc_audioWrite (8888544708166230494) -->
+ <skip />
+ <!-- no translation found for permlab_videoRead (9182618678674737229) -->
+ <skip />
+ <!-- no translation found for permdesc_videoRead (7045676429859396194) -->
+ <skip />
+ <!-- no translation found for permlab_videoWrite (128769316366746446) -->
+ <skip />
+ <!-- no translation found for permdesc_videoWrite (5448565757490640841) -->
+ <skip />
+ <!-- no translation found for permlab_imagesRead (3015078545742665304) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesRead (3144263806038695580) -->
+ <skip />
+ <!-- no translation found for permlab_imagesWrite (3391306186247235510) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesWrite (7073662756617474375) -->
+ <skip />
+ <!-- no translation found for permlab_mediaLocation (8675148183726247864) -->
+ <skip />
+ <!-- no translation found for permdesc_mediaLocation (2237023389178865130) -->
+ <skip />
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Aptiktas dalinis kontrolinis kodas. Bandykite dar kartą."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Nepavyko apdoroti kontrolinio kodo. Bandykite dar kartą."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Kontrolinio kodo jutiklis purvinas. Nuvalykite ir bandykite dar kartą."</string>
@@ -1942,8 +1982,18 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"Išsaugoti <xliff:g id="TYPE">%1$s</xliff:g> sistemoje <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Išsaugoti <xliff:g id="TYPE_0">%1$s</xliff:g> ir <xliff:g id="TYPE_1">%2$s</xliff:g> sistemoje <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Išsaugoti <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> ir <xliff:g id="TYPE_2">%3$s</xliff:g> sistemoje <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string>
+ <!-- no translation found for autofill_update_title (4879673117448810818) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_type (339733442087186755) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) -->
+ <skip />
<string name="autofill_save_yes" msgid="6398026094049005921">"Išsaugoti"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"Ne, ačiū"</string>
+ <!-- no translation found for autofill_update_yes (310358413273276958) -->
+ <skip />
<string name="autofill_save_type_password" msgid="5288448918465971568">"slaptažodį"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"adresą"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"kredito kortelę"</string>
diff --git a/core/res/res/values-lv/strings.xml b/core/res/res/values-lv/strings.xml
index a5116e4..ea7140b 100644
--- a/core/res/res/values-lv/strings.xml
+++ b/core/res/res/values-lv/strings.xml
@@ -303,6 +303,18 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"Ķermeņa sensori"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"piekļūt sensoru datiem par jūsu veselības rādījumiem"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"Vai atļaut lietotnei <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> piekļūt sensoru uztvertajiem veselības rādījumiem?"</string>
+ <!-- no translation found for permgrouplab_aural (965607064083134896) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_aural (4870189506255958055) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_aural (6787926123071735620) -->
+ <skip />
+ <!-- no translation found for permgrouplab_visual (8030190588123857921) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_visual (3415827902566663546) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_visual (6907523945030290376) -->
+ <skip />
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Izgūt loga saturu."</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Skatīt tā loga saturu, ar kuru mijiedarbojaties."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Aktivizēt funkciju “Pārlūkot pieskaroties”."</string>
@@ -497,6 +509,34 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"Atļauj lietotnei izsaukt metodes izmantojamo pirkstu nospiedumu veidņu pievienošanai un dzēšanai."</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"lietot pirkstu nospiedumu aparatūru"</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"Atļauj lietotnei izmantot pirkstu nospiedumu aparatūru autentificēšanai."</string>
+ <!-- no translation found for permlab_audioRead (6617225220728465565) -->
+ <skip />
+ <!-- no translation found for permdesc_audioRead (5034032570243484805) -->
+ <skip />
+ <!-- no translation found for permlab_audioWrite (2661772059799779292) -->
+ <skip />
+ <!-- no translation found for permdesc_audioWrite (8888544708166230494) -->
+ <skip />
+ <!-- no translation found for permlab_videoRead (9182618678674737229) -->
+ <skip />
+ <!-- no translation found for permdesc_videoRead (7045676429859396194) -->
+ <skip />
+ <!-- no translation found for permlab_videoWrite (128769316366746446) -->
+ <skip />
+ <!-- no translation found for permdesc_videoWrite (5448565757490640841) -->
+ <skip />
+ <!-- no translation found for permlab_imagesRead (3015078545742665304) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesRead (3144263806038695580) -->
+ <skip />
+ <!-- no translation found for permlab_imagesWrite (3391306186247235510) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesWrite (7073662756617474375) -->
+ <skip />
+ <!-- no translation found for permlab_mediaLocation (8675148183726247864) -->
+ <skip />
+ <!-- no translation found for permdesc_mediaLocation (2237023389178865130) -->
+ <skip />
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Noteikts daļējs pirksta nospiedums. Lūdzu, mēģiniet vēlreiz."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Nevarēja apstrādāt pirksta nospiedumu. Lūdzu, mēģiniet vēlreiz."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Pirkstu nospiedumu sensors ir netīrs. Lūdzu, notīriet to un mēģiniet vēlreiz."</string>
@@ -1907,8 +1947,18 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"Vai saglabāt vienumu “<xliff:g id="TYPE">%1$s</xliff:g>” pakalpojumā <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Vai saglabāt vienumus “<xliff:g id="TYPE_0">%1$s</xliff:g>” un “<xliff:g id="TYPE_1">%2$s</xliff:g>” pakalpojumā <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Vai saglabāt vienumus “<xliff:g id="TYPE_0">%1$s</xliff:g>”, “<xliff:g id="TYPE_1">%2$s</xliff:g>” un “<xliff:g id="TYPE_2">%3$s</xliff:g>” pakalpojumā <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string>
+ <!-- no translation found for autofill_update_title (4879673117448810818) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_type (339733442087186755) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) -->
+ <skip />
<string name="autofill_save_yes" msgid="6398026094049005921">"Saglabāt"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"Nē, paldies"</string>
+ <!-- no translation found for autofill_update_yes (310358413273276958) -->
+ <skip />
<string name="autofill_save_type_password" msgid="5288448918465971568">"paroli"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"adresi"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"kredītkartes informāciju"</string>
diff --git a/core/res/res/values-mk/strings.xml b/core/res/res/values-mk/strings.xml
index 47f388d..b2beb3a 100644
--- a/core/res/res/values-mk/strings.xml
+++ b/core/res/res/values-mk/strings.xml
@@ -300,6 +300,12 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"Телесни сензори"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"пристапува до податоците од сензорите за виталните знаци"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"Дали да се дозволи <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> да пристапува до податоците на сензорот за витални знаци?"</string>
+ <string name="permgrouplab_aural" msgid="965607064083134896">"Музика"</string>
+ <string name="permgroupdesc_aural" msgid="4870189506255958055">"пристапува до музиката"</string>
+ <string name="permgrouprequest_aural" msgid="6787926123071735620">"Дали да се дозволи <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> да пристапува до музиката?"</string>
+ <string name="permgrouplab_visual" msgid="8030190588123857921">"Фотографии и видеа"</string>
+ <string name="permgroupdesc_visual" msgid="3415827902566663546">"пристапува до фотографиите и видеата"</string>
+ <string name="permgrouprequest_visual" msgid="6907523945030290376">"Дали да се дозволи <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> да пристапува до фотографиите и видеата?"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Преземе содржина на прозорец"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Ја следи содржината на прозорецот со кој се комуницира."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Вклучи „Истражувај со допир“"</string>
@@ -494,6 +500,20 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"Дозволува апликацијата да повика начини за додавање и бришење шаблони на отпечатоци за користење."</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"користи хардвер за отпечатоци"</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"Дозволува апликацијата да користи хардвер за отпечатоци за проверка"</string>
+ <string name="permlab_audioRead" msgid="6617225220728465565">"да ја чита вашата музичка збирка"</string>
+ <string name="permdesc_audioRead" msgid="5034032570243484805">"Дозволува апликацијата да ја чита вашата музичка збирка."</string>
+ <string name="permlab_audioWrite" msgid="2661772059799779292">"да ја менува вашата музичка збирка"</string>
+ <string name="permdesc_audioWrite" msgid="8888544708166230494">"Дозволува апликацијата да ја менува вашата музичка збирка."</string>
+ <string name="permlab_videoRead" msgid="9182618678674737229">"да ја чита вашата збирка на видеа"</string>
+ <string name="permdesc_videoRead" msgid="7045676429859396194">"Дозволува апликацијата да ја чита вашата збирка на видеа."</string>
+ <string name="permlab_videoWrite" msgid="128769316366746446">"да ја менува вашата збирка на видеа"</string>
+ <string name="permdesc_videoWrite" msgid="5448565757490640841">"Дозволува апликацијата да ја менува вашата збирка на видеа."</string>
+ <string name="permlab_imagesRead" msgid="3015078545742665304">"да ја чита вашата збирка на фотографии"</string>
+ <string name="permdesc_imagesRead" msgid="3144263806038695580">"Дозволува апликацијата да ја чита вашата збирка на фотографии."</string>
+ <string name="permlab_imagesWrite" msgid="3391306186247235510">"да ја менува вашата збирка на фотографии"</string>
+ <string name="permdesc_imagesWrite" msgid="7073662756617474375">"Дозволува апликацијата да ја менува вашата збирка на фотографии."</string>
+ <string name="permlab_mediaLocation" msgid="8675148183726247864">"да чита локации од вашата збирка на аудиовизуелни содржини"</string>
+ <string name="permdesc_mediaLocation" msgid="2237023389178865130">"Дозволува апликацијата да чита локации од вашата збирка на аудиовизуелни содржини."</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Откриен е делумен отпечаток. Обидете се повторно."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Отпечатокот не можеше да се обработи. Обидете се повторно."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Сензорот за отпечатоци е валкан. Исчистете го и обидете се повторно."</string>
@@ -1875,8 +1895,13 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"Да се зачува <xliff:g id="TYPE">%1$s</xliff:g> во <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Да се зачуваат <xliff:g id="TYPE_0">%1$s</xliff:g> и <xliff:g id="TYPE_1">%2$s</xliff:g> во <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Да се зачуваат <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> и <xliff:g id="TYPE_2">%3$s</xliff:g> во <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string>
+ <string name="autofill_update_title" msgid="4879673117448810818">"Дали да се ажурира на <b><xliff:g id="LABEL">%1$s</xliff:g></b>?"</string>
+ <string name="autofill_update_title_with_type" msgid="339733442087186755">"Дали да се ажурира <xliff:g id="TYPE">%1$s</xliff:g> на <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string>
+ <string name="autofill_update_title_with_2types" msgid="6321714204167424745">"Дали да се ажурираат <xliff:g id="TYPE_0">%1$s</xliff:g> и <xliff:g id="TYPE_1">%2$s</xliff:g> на <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string>
+ <string name="autofill_update_title_with_3types" msgid="5866735124066629287">"Дали да се ажурираат <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> и <xliff:g id="TYPE_2">%3$s</xliff:g> на <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string>
<string name="autofill_save_yes" msgid="6398026094049005921">"Зачувај"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"Не, фала"</string>
+ <string name="autofill_update_yes" msgid="310358413273276958">"Ажурирај"</string>
<string name="autofill_save_type_password" msgid="5288448918465971568">"лозинка"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"адреса"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"кредитна картичка"</string>
diff --git a/core/res/res/values-ml/strings.xml b/core/res/res/values-ml/strings.xml
index 1a3556c..db2aa1e 100644
--- a/core/res/res/values-ml/strings.xml
+++ b/core/res/res/values-ml/strings.xml
@@ -300,6 +300,18 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"ബോഡി സെൻസറുകൾ"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"നിങ്ങളുടെ ജീവാധാര ലക്ഷണങ്ങളെ കുറിച്ചുള്ള സെൻസർ വിവരങ്ങൾ ആക്സസ് ചെയ്യുക"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"നിങ്ങളുടെ ജീവധാരണ ലക്ഷണങ്ങളെ കുറിച്ചുള്ള സെൻസർ ഡാറ്റ ആക്സസ് ചെയ്യാൻ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ആപ്പിനെ അനുവദിക്കണോ?"</string>
+ <!-- no translation found for permgrouplab_aural (965607064083134896) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_aural (4870189506255958055) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_aural (6787926123071735620) -->
+ <skip />
+ <!-- no translation found for permgrouplab_visual (8030190588123857921) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_visual (3415827902566663546) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_visual (6907523945030290376) -->
+ <skip />
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"വിൻഡോ ഉള്ളടക്കം വീണ്ടെടുക്കുക"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"നിങ്ങൾ സംവദിക്കുന്ന ഒരു വിൻഡോയുടെ ഉള്ളടക്കം പരിശോധിക്കുക."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"സ്പർശനം വഴി പര്യവേക്ഷണം ചെയ്യുക, ഓണാക്കുക"</string>
@@ -494,6 +506,34 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"ഉപയോഗിക്കാനായി വിരലടയാള ടെംപ്ലേറ്റുകൾ ചേർക്കാനും ഇല്ലാതാക്കാനുമുള്ള രീതികൾ അഭ്യർത്ഥിക്കാൻ അപ്ലിക്കേഷനെ അനുവദിക്കുന്നു."</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"ഫിംഗർപ്രിന്റ് ഹാർഡ്വെയർ ഉപയോഗിക്കുക"</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"പ്രാമാണീകരണത്തിനായി വിരലടയാളം ഉപയോഗിക്കാൻ അപ്ലിക്കേഷനെ അനുവദിക്കുന്നു"</string>
+ <!-- no translation found for permlab_audioRead (6617225220728465565) -->
+ <skip />
+ <!-- no translation found for permdesc_audioRead (5034032570243484805) -->
+ <skip />
+ <!-- no translation found for permlab_audioWrite (2661772059799779292) -->
+ <skip />
+ <!-- no translation found for permdesc_audioWrite (8888544708166230494) -->
+ <skip />
+ <!-- no translation found for permlab_videoRead (9182618678674737229) -->
+ <skip />
+ <!-- no translation found for permdesc_videoRead (7045676429859396194) -->
+ <skip />
+ <!-- no translation found for permlab_videoWrite (128769316366746446) -->
+ <skip />
+ <!-- no translation found for permdesc_videoWrite (5448565757490640841) -->
+ <skip />
+ <!-- no translation found for permlab_imagesRead (3015078545742665304) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesRead (3144263806038695580) -->
+ <skip />
+ <!-- no translation found for permlab_imagesWrite (3391306186247235510) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesWrite (7073662756617474375) -->
+ <skip />
+ <!-- no translation found for permlab_mediaLocation (8675148183726247864) -->
+ <skip />
+ <!-- no translation found for permdesc_mediaLocation (2237023389178865130) -->
+ <skip />
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"വിരലടയാളം ഭാഗികമായി തിരിച്ചറിഞ്ഞു. വീണ്ടും ശ്രമിക്കുക."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"വിരലടയാളം പ്രോസസ്സ് ചെയ്യാനായില്ല. വീണ്ടും ശ്രമിക്കുക."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"വിരലടയാള സെൻസറിന് വൃത്തിയില്ല. അത് ശുചിയാക്കി വീണ്ടും ശ്രമിക്കുക."</string>
@@ -1873,8 +1913,18 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"<xliff:g id="TYPE">%1$s</xliff:g> എന്നതിനെ <b><xliff:g id="LABEL">%2$s</xliff:g></b>എന്നതിലേക്ക് സംരക്ഷിക്കണോ?"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"<xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> എന്നിവ<b><xliff:g id="LABEL">%3$s</xliff:g></b>എന്നതിലേക്ക് സംരക്ഷിക്കണോ?"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"<xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g>, <xliff:g id="TYPE_2">%3$s</xliff:g> എന്നിവ<b><xliff:g id="LABEL">%4$s</xliff:g></b>എന്നതിലേക്ക് സംരക്ഷിക്കണോ?"</string>
+ <!-- no translation found for autofill_update_title (4879673117448810818) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_type (339733442087186755) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) -->
+ <skip />
<string name="autofill_save_yes" msgid="6398026094049005921">"സംരക്ഷിക്കുക"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"വേണ്ട, നന്ദി"</string>
+ <!-- no translation found for autofill_update_yes (310358413273276958) -->
+ <skip />
<string name="autofill_save_type_password" msgid="5288448918465971568">"പാസ്വേഡ്"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"വിലാസം"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"ക്രെഡിറ്റ് കാർഡ്"</string>
diff --git a/core/res/res/values-mn/strings.xml b/core/res/res/values-mn/strings.xml
index e1b9670..ddf1bc6 100644
--- a/core/res/res/values-mn/strings.xml
+++ b/core/res/res/values-mn/strings.xml
@@ -300,6 +300,12 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"Биеийн мэдрэгч"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"таны биеийн байдлын талаарх мэдрэгч бүхий өгөгдөлд нэвтрэх"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b>-д таны биеийн ерөнхий байдлын үзүүлэлтүүдийн мэдрэгчийн өгөгдөлд хандахыг зөвшөөрөх үү?"</string>
+ <string name="permgrouplab_aural" msgid="965607064083134896">"Хөгжим"</string>
+ <string name="permgroupdesc_aural" msgid="4870189506255958055">"хөгжимдөө хандах"</string>
+ <string name="permgrouprequest_aural" msgid="6787926123071735620">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b>-д таны хөгжимд хандахыг зөвшөөрөх үү?"</string>
+ <string name="permgrouplab_visual" msgid="8030190588123857921">"Зураг & видео"</string>
+ <string name="permgroupdesc_visual" msgid="3415827902566663546">"зураг & видеондоо хандах"</string>
+ <string name="permgrouprequest_visual" msgid="6907523945030290376">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b>-д таны зураг & видеонд хандахыг зөвшөөрөх үү?"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Цонхны агуулгыг авах"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Таны харилцан үйлчлэх цонхны контентоос шалгах."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Хүрч танихыг асаах"</string>
@@ -494,6 +500,20 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"Хурууны хээний загварыг нэмэх эсвэл усгтах үйлдлийг хийх зөвшөөрлийг програмд олгодог."</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"хурууны хээний програм хангамжийг ашиглах"</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"Баталгаажуулалт хийх зорилгоор хурууны хээний апп хамгамжийг ашиглах зөвшөөрлийг аппд олгодог"</string>
+ <string name="permlab_audioRead" msgid="6617225220728465565">"хөгжмийн цуглуулгаа унших"</string>
+ <string name="permdesc_audioRead" msgid="5034032570243484805">"Таны хөгжмийн цуглуулгыг унших зөвшөөрлийг аппад олгодог."</string>
+ <string name="permlab_audioWrite" msgid="2661772059799779292">"хөгжмийн цуглуулгаа тохируулах"</string>
+ <string name="permdesc_audioWrite" msgid="8888544708166230494">"Таны хөгжмийн цуглуулгыг тохируулах зөвшөөрлийг аппад олгодог."</string>
+ <string name="permlab_videoRead" msgid="9182618678674737229">"видео цуглуулгаа унших"</string>
+ <string name="permdesc_videoRead" msgid="7045676429859396194">"Таны видео цуглуулгыг унших зөвшөөрлийг аппад олгодог."</string>
+ <string name="permlab_videoWrite" msgid="128769316366746446">"видео цуглуулгаа тохируулах"</string>
+ <string name="permdesc_videoWrite" msgid="5448565757490640841">"Таны видео цуглуулгыг тохируулах зөвшөөрлийг аппад олгодог."</string>
+ <string name="permlab_imagesRead" msgid="3015078545742665304">"зургийн цуглуулгаа унших"</string>
+ <string name="permdesc_imagesRead" msgid="3144263806038695580">"Таны зургийн цуглуулгыг унших зөвшөөрлийг аппад олгодог."</string>
+ <string name="permlab_imagesWrite" msgid="3391306186247235510">"зургийн цуглуулгаа тохируулах"</string>
+ <string name="permdesc_imagesWrite" msgid="7073662756617474375">"Таны зургийн цуглуулгыг тохируулах зөвшөөрлийг аппад олгодог."</string>
+ <string name="permlab_mediaLocation" msgid="8675148183726247864">"медиа цуглуулгаасаа байршлыг унших"</string>
+ <string name="permdesc_mediaLocation" msgid="2237023389178865130">"Таны медиа цуглуулгаас байршлыг унших зөвшөөрлийг аппад олгодог."</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Хурууны хээг дутуу уншуулсан байна. Дахин оролдоно уу."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Хурууны хээ боловсруулж чадахгүй байна. Дахин оролдоно уу."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Хурууны хээ мэдрэгч бохирдсон байна. Та цэвэрлэсний дараагаар дахин оролдоно уу."</string>
@@ -1872,8 +1892,13 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"<xliff:g id="TYPE">%1$s</xliff:g>-г <b><xliff:g id="LABEL">%2$s</xliff:g></b>-д хадгалах уу?"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"<xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g>-г <b><xliff:g id="LABEL">%3$s</xliff:g></b>-д хадгалах уу?"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"<xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g>, <xliff:g id="TYPE_2">%3$s</xliff:g>-г <b><xliff:g id="LABEL">%4$s</xliff:g></b>-д хадгалах уу?"</string>
+ <string name="autofill_update_title" msgid="4879673117448810818">"<b><xliff:g id="LABEL">%1$s</xliff:g></b>-д шинэчлэх үү?"</string>
+ <string name="autofill_update_title_with_type" msgid="339733442087186755">"<xliff:g id="TYPE">%1$s</xliff:g>-г <b><xliff:g id="LABEL">%2$s</xliff:g></b>-д шинэчлэх үү?"</string>
+ <string name="autofill_update_title_with_2types" msgid="6321714204167424745">"<xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g>-г <b><xliff:g id="LABEL">%3$s</xliff:g></b>-д шинэчлэх үү?"</string>
+ <string name="autofill_update_title_with_3types" msgid="5866735124066629287">"<xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g>, <xliff:g id="TYPE_2">%3$s</xliff:g>-г <b><xliff:g id="LABEL">%4$s</xliff:g></b>-д шинэчлэх үү?"</string>
<string name="autofill_save_yes" msgid="6398026094049005921">"Хадгалах"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"Үгүй, баярлалаа"</string>
+ <string name="autofill_update_yes" msgid="310358413273276958">"Шинэчлэх"</string>
<string name="autofill_save_type_password" msgid="5288448918465971568">"нууц үг"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"хаяг"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"кредит карт"</string>
diff --git a/core/res/res/values-mr/strings.xml b/core/res/res/values-mr/strings.xml
index 65c8828..4b01543 100644
--- a/core/res/res/values-mr/strings.xml
+++ b/core/res/res/values-mr/strings.xml
@@ -300,6 +300,18 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"शरीर सेन्सर"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"आपल्या महत्त्वाच्या मापनांविषयी सेंसर डेटा अॅक्सेस करा"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ला तुमच्या महत्त्वाच्या लक्षणांविषयीचा सेन्सर डेटा अॅक्सेस करू द्यायचे?"</string>
+ <!-- no translation found for permgrouplab_aural (965607064083134896) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_aural (4870189506255958055) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_aural (6787926123071735620) -->
+ <skip />
+ <!-- no translation found for permgrouplab_visual (8030190588123857921) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_visual (3415827902566663546) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_visual (6907523945030290376) -->
+ <skip />
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"विंडो सामग्री पुनर्प्राप्त करा"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"तुम्ही परस्परसंवाद करीत असलेल्या विंडोची सामग्री तपासा."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"स्पर्श करून अन्वेषण चालू करा"</string>
@@ -494,6 +506,34 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"वापर करण्याकरिता फिंगरप्रिंट टेम्पलेट जोडण्यासाठी आणि हटविण्यासाठी पद्धती रद्द करण्यास अॅपला अनुमती देते."</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"फिंगरप्रिंट हार्डवेअर वापरा"</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"प्रमाणीकरणाकरिता फिंगरप्रिंट हार्डवेअरचा वापर करण्यासाठी अॅपला अनुमती देते"</string>
+ <!-- no translation found for permlab_audioRead (6617225220728465565) -->
+ <skip />
+ <!-- no translation found for permdesc_audioRead (5034032570243484805) -->
+ <skip />
+ <!-- no translation found for permlab_audioWrite (2661772059799779292) -->
+ <skip />
+ <!-- no translation found for permdesc_audioWrite (8888544708166230494) -->
+ <skip />
+ <!-- no translation found for permlab_videoRead (9182618678674737229) -->
+ <skip />
+ <!-- no translation found for permdesc_videoRead (7045676429859396194) -->
+ <skip />
+ <!-- no translation found for permlab_videoWrite (128769316366746446) -->
+ <skip />
+ <!-- no translation found for permdesc_videoWrite (5448565757490640841) -->
+ <skip />
+ <!-- no translation found for permlab_imagesRead (3015078545742665304) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesRead (3144263806038695580) -->
+ <skip />
+ <!-- no translation found for permlab_imagesWrite (3391306186247235510) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesWrite (7073662756617474375) -->
+ <skip />
+ <!-- no translation found for permlab_mediaLocation (8675148183726247864) -->
+ <skip />
+ <!-- no translation found for permdesc_mediaLocation (2237023389178865130) -->
+ <skip />
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"आंशिक फिंगरप्रिंट आढळली. कृपया पुन्हा प्रयत्न करा."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"फिंगरप्रिंटवर प्रक्रिया करणे शक्य झाले नाही. कृपया पुन्हा प्रयत्न करा."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"फिंगरप्रिंट सेन्सर खराब आहे. कृपया साफ करा आणि पुन्हा प्रयत्न करा."</string>
@@ -1873,8 +1913,18 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"<b><xliff:g id="LABEL">%2$s</xliff:g></b>मध्ये <xliff:g id="TYPE">%1$s</xliff:g> सेव्ह करायची?"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"<b><xliff:g id="LABEL">%3$s</xliff:g></b>मध्ये <xliff:g id="TYPE_0">%1$s</xliff:g> आणि <xliff:g id="TYPE_1">%2$s</xliff:g> सेव्ह करायची?"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"<b><xliff:g id="LABEL">%4$s</xliff:g></b>मध्ये <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> आणि <xliff:g id="TYPE_2">%3$s</xliff:g> सेव्ह करायची?"</string>
+ <!-- no translation found for autofill_update_title (4879673117448810818) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_type (339733442087186755) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) -->
+ <skip />
<string name="autofill_save_yes" msgid="6398026094049005921">"सेव्ह करा"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"नाही, नको"</string>
+ <!-- no translation found for autofill_update_yes (310358413273276958) -->
+ <skip />
<string name="autofill_save_type_password" msgid="5288448918465971568">"पासवर्ड"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"पत्ता"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"क्रेडिट कार्ड"</string>
diff --git a/core/res/res/values-ms/strings.xml b/core/res/res/values-ms/strings.xml
index b2f10c1..3df4e95 100644
--- a/core/res/res/values-ms/strings.xml
+++ b/core/res/res/values-ms/strings.xml
@@ -300,6 +300,18 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"Penderia Badan"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"akses data penderia tentang tanda vital anda"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"Benarkan <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> mengakses data penderia tentang tanda vital anda?"</string>
+ <!-- no translation found for permgrouplab_aural (965607064083134896) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_aural (4870189506255958055) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_aural (6787926123071735620) -->
+ <skip />
+ <!-- no translation found for permgrouplab_visual (8030190588123857921) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_visual (3415827902566663546) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_visual (6907523945030290376) -->
+ <skip />
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Dapatkan kembali kandungan tetingkap"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Periksa kandungan tetingkap yang berinteraksi dengan anda."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Hidupkan Jelajah melalui Sentuhan"</string>
@@ -494,6 +506,34 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"Membenarkan apl menggunakan kaedah untuk menambahkan dan memadamkan templat cap jari untuk digunakan."</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"gunakan perkakasan cap jari"</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"Membenarkan apl menggunakan perkakasan cap jari untuk pengesahan"</string>
+ <!-- no translation found for permlab_audioRead (6617225220728465565) -->
+ <skip />
+ <!-- no translation found for permdesc_audioRead (5034032570243484805) -->
+ <skip />
+ <!-- no translation found for permlab_audioWrite (2661772059799779292) -->
+ <skip />
+ <!-- no translation found for permdesc_audioWrite (8888544708166230494) -->
+ <skip />
+ <!-- no translation found for permlab_videoRead (9182618678674737229) -->
+ <skip />
+ <!-- no translation found for permdesc_videoRead (7045676429859396194) -->
+ <skip />
+ <!-- no translation found for permlab_videoWrite (128769316366746446) -->
+ <skip />
+ <!-- no translation found for permdesc_videoWrite (5448565757490640841) -->
+ <skip />
+ <!-- no translation found for permlab_imagesRead (3015078545742665304) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesRead (3144263806038695580) -->
+ <skip />
+ <!-- no translation found for permlab_imagesWrite (3391306186247235510) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesWrite (7073662756617474375) -->
+ <skip />
+ <!-- no translation found for permlab_mediaLocation (8675148183726247864) -->
+ <skip />
+ <!-- no translation found for permdesc_mediaLocation (2237023389178865130) -->
+ <skip />
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Cap jari separa dikesan. Sila cuba lagi."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Tidak dapat memproses cap jari. Sila cuba lagi."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Penderia cap jari kotor. Sila bersihkan dan cuba lagi."</string>
@@ -1872,8 +1912,18 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"Simpan <xliff:g id="TYPE">%1$s</xliff:g> ke <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Simpan <xliff:g id="TYPE_0">%1$s</xliff:g> dan <xliff:g id="TYPE_1">%2$s</xliff:g> ke <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Simpan <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> dan <xliff:g id="TYPE_2">%3$s</xliff:g> ke <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string>
+ <!-- no translation found for autofill_update_title (4879673117448810818) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_type (339733442087186755) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) -->
+ <skip />
<string name="autofill_save_yes" msgid="6398026094049005921">"Simpan"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"Tidak, terima kasih"</string>
+ <!-- no translation found for autofill_update_yes (310358413273276958) -->
+ <skip />
<string name="autofill_save_type_password" msgid="5288448918465971568">"kata laluan"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"alamat"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"kad kredit"</string>
diff --git a/core/res/res/values-my/strings.xml b/core/res/res/values-my/strings.xml
index f9049f5..db3fdd3 100644
--- a/core/res/res/values-my/strings.xml
+++ b/core/res/res/values-my/strings.xml
@@ -300,6 +300,12 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"ခန္ဓာကိုယ် အာရုံခံကိရိယာများ"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"သင်၏ အဓိကကျသော လက္ခဏာများအကြောင်း အာရုံခံကိရိယာဒေတာကို ရယူသုံးစွဲရန်"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> အား သင်၏ အရေးကြီးသောလက္ခဏာ အာရုံခံကိရိယာ ဒေတာများကို သုံးခွင့်ပေးလိုပါသလား။"</string>
+ <string name="permgrouplab_aural" msgid="965607064083134896">"တေးဂီတ"</string>
+ <string name="permgroupdesc_aural" msgid="4870189506255958055">"သင့်တေးဂီတကို ဝင်သုံးသည်"</string>
+ <string name="permgrouprequest_aural" msgid="6787926123071735620">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> အား သင့်တေးဂီတကို ဝင်သုံးခွင့်ပေးလိုပါသလား။"</string>
+ <string name="permgrouplab_visual" msgid="8030190588123857921">"ဓာတ်ပုံနှင့် ဗီဒီယိုများ"</string>
+ <string name="permgroupdesc_visual" msgid="3415827902566663546">"သင့်ဓာတ်ပုံနှင့် ဗီဒီယိုများကို ဝင်သုံးသည်"</string>
+ <string name="permgrouprequest_visual" msgid="6907523945030290376">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> အား သင့်ဓာတ်ပုံနှင့် ဗီဒီယိုများကို ဝင်သုံးခွင့်ပေးလိုပါသလား။"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"ဝင်းဒိုးတွင် ပါရှိသည်များကို ပြန်လည်ရယူရန်"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"သင်အသုံးပြုနေသော ဝင်းဒိုးတွင် ပါရှိသည်များကို ကြည့်ရှုစစ်ဆေးသည်။"</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"တို့ထိခြင်းဖြင့် ရှာဖွေမှုကို ဖွင့်ရန်"</string>
@@ -494,6 +500,20 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"အသုံးပြုရန်အတွက် လက်ဗွေရာပုံစံများကို ပေါင်းထည့်ရန် သို့မဟုတ် ဖျက်ရန်နည်းလမ်းများကို အပ်ဖ်အား အသုံးပြုခွင့်ပြုသည်။"</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"လက်ဗွေရာပစ္စည်းကို အသုံးပြုမည်"</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"စစ်မှန်ကြောင်းအထောက်အထားပြသခြင်းအတွက် လက်ဗွေရာပစ္စည်းကို အသုံးပြုရန် အပ်ဖ်အားခွင့်ပြုသည်။"</string>
+ <string name="permlab_audioRead" msgid="6617225220728465565">"သင့်တေးဂီတ စုစည်းမှုကို ဖတ်ခြင်း"</string>
+ <string name="permdesc_audioRead" msgid="5034032570243484805">"အက်ပ်အား သင့်တေးဂီတစုစည်းမှုကို ဖတ်ခွင့်ပေးသည်။"</string>
+ <string name="permlab_audioWrite" msgid="2661772059799779292">"သင့်တေးဂီတ စုစည်းမှုကို ပြုပြင်ခြင်း"</string>
+ <string name="permdesc_audioWrite" msgid="8888544708166230494">"အက်ပ်အား သင့်တေးဂီတစုစည်းမှုကို ပြုပြင်ခွင့်ပေးသည်။"</string>
+ <string name="permlab_videoRead" msgid="9182618678674737229">"သင့်ဗီဒီယို စုစည်းမှုကို ဖတ်ခြင်း"</string>
+ <string name="permdesc_videoRead" msgid="7045676429859396194">"အက်ပ်အား သင့်ဗီဒီယိုစုစည်းမှုကို ဖတ်ခွင့်ပေးသည်။"</string>
+ <string name="permlab_videoWrite" msgid="128769316366746446">"သင့်ဗီဒီယို စုစည်းမှုကို ပြုပြင်ခြင်း"</string>
+ <string name="permdesc_videoWrite" msgid="5448565757490640841">"အက်ပ်အား သင့်ဗီဒီယိုစုစည်းမှုကို ပြုပြင်ခွင့်ပေးသည်။"</string>
+ <string name="permlab_imagesRead" msgid="3015078545742665304">"သင့်ဓာတ်ပုံ စုစည်းမှုကို ဖတ်ခြင်း"</string>
+ <string name="permdesc_imagesRead" msgid="3144263806038695580">"အက်ပ်အား သင့်ဓာတ်ပုံစုစည်းမှုကို ဖတ်ခွင့်ပေးသည်။"</string>
+ <string name="permlab_imagesWrite" msgid="3391306186247235510">"သင့်ဓာတ်ပုံ စုစည်းမှုကို ပြုပြင်ခြင်း"</string>
+ <string name="permdesc_imagesWrite" msgid="7073662756617474375">"အက်ပ်အား သင့်ဓာတ်ပုံစုစည်းမှုကို ပြုပြင်ခွင့်ပေးသည်။"</string>
+ <string name="permlab_mediaLocation" msgid="8675148183726247864">"သင့်မီဒီယာစုစည်းမှုမှ တည်နေရာများကို ဖတ်ခြင်း"</string>
+ <string name="permdesc_mediaLocation" msgid="2237023389178865130">"အက်ပ်အား သင့်မီဒီယာစုစည်းမှုမှ တည်နေရာများကို ဖတ်ခွင့်ပေးသည်။"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"လက်ဗွေရဦ တစ်ပိုင်းတစ်စ တွေ့ရှိသည်။ ကျေးဇူးပြု၍ ထပ်မံကြိုးစားပါ။"</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"လက်ဗွေရာယူခြင်း မဆောင်ရွက်နိုင်ပါ။ ထပ်မံကြိုးစားပါ။"</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"လက်ဗွေရာဖတ်ကိရိယာ ညစ်ပေနေသည်။ ကျေးဇူးပြု၍ ရှင်းလင်းကာ ထပ်မံကြိုးစားပါ။"</string>
@@ -1873,8 +1893,13 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"<xliff:g id="TYPE">%1$s</xliff:g> ကို <b><xliff:g id="LABEL">%2$s</xliff:g></b> တွင် သိမ်းဆည်းလိုပါသလား။"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"<xliff:g id="TYPE_0">%1$s</xliff:g> နှင့် <xliff:g id="TYPE_1">%2$s</xliff:g> ကို <b><xliff:g id="LABEL">%3$s</xliff:g></b> တွင် သိမ်းဆည်းလိုပါသလား။"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"<xliff:g id="TYPE_0">%1$s</xliff:g>၊ <xliff:g id="TYPE_1">%2$s</xliff:g> နှင့် <xliff:g id="TYPE_2">%3$s</xliff:g> ကို <b><xliff:g id="LABEL">%4$s</xliff:g></b> တွင် သိမ်းဆည်းလိုပါသလား။"</string>
+ <string name="autofill_update_title" msgid="4879673117448810818">"<b><xliff:g id="LABEL">%1$s</xliff:g></b> သို့ အပ်ဒိတ်လုပ်လိုပါသလား။"</string>
+ <string name="autofill_update_title_with_type" msgid="339733442087186755">"<xliff:g id="TYPE">%1$s</xliff:g> ကို <b><xliff:g id="LABEL">%2$s</xliff:g></b> သို့ အပ်ဒိတ်လုပ်လိုပါသလား။"</string>
+ <string name="autofill_update_title_with_2types" msgid="6321714204167424745">"<xliff:g id="TYPE_0">%1$s</xliff:g> နှင့် <xliff:g id="TYPE_1">%2$s</xliff:g> ကို <b><xliff:g id="LABEL">%3$s</xliff:g></b> သို့ အပ်ဒိတ်လုပ်လိုပါသလား။"</string>
+ <string name="autofill_update_title_with_3types" msgid="5866735124066629287">"<xliff:g id="TYPE_0">%1$s</xliff:g>၊ <xliff:g id="TYPE_1">%2$s</xliff:g> နှင့် <xliff:g id="TYPE_2">%3$s</xliff:g> ကို <b><xliff:g id="LABEL">%4$s</xliff:g></b> သို့ အပ်ဒိတ်လုပ်လိုပါသလား။"</string>
<string name="autofill_save_yes" msgid="6398026094049005921">"သိမ်းရန်"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"မလိုပါ"</string>
+ <string name="autofill_update_yes" msgid="310358413273276958">"အပ်ဒိတ်လုပ်ရန်"</string>
<string name="autofill_save_type_password" msgid="5288448918465971568">"စကားဝှက်"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"လိပ်စာ"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"ခရက်တစ်ကတ်"</string>
diff --git a/core/res/res/values-nb/strings.xml b/core/res/res/values-nb/strings.xml
index a5bd899..da47ea7 100644
--- a/core/res/res/values-nb/strings.xml
+++ b/core/res/res/values-nb/strings.xml
@@ -300,6 +300,18 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"Kroppssensorer"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"få tilgang til sensordata om de vitale tegnene dine"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"Vil du gi <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> tilgang til sensordata om de vitale tegnene dine?"</string>
+ <!-- no translation found for permgrouplab_aural (965607064083134896) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_aural (4870189506255958055) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_aural (6787926123071735620) -->
+ <skip />
+ <!-- no translation found for permgrouplab_visual (8030190588123857921) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_visual (3415827902566663546) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_visual (6907523945030290376) -->
+ <skip />
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"hente innhold i vinduer"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Appen analyserer innholdet i vinduer du samhandler med."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"slå på berøringsutforsking"</string>
@@ -494,6 +506,34 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"Lar appen fremkalle metoder for å legge til og slette fingeravtrykkmaler for bruk."</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"bruke fingeravtrykkmaskinvare"</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"Lar appen bruke fingeravtrykkmaskinvare til godkjenning"</string>
+ <!-- no translation found for permlab_audioRead (6617225220728465565) -->
+ <skip />
+ <!-- no translation found for permdesc_audioRead (5034032570243484805) -->
+ <skip />
+ <!-- no translation found for permlab_audioWrite (2661772059799779292) -->
+ <skip />
+ <!-- no translation found for permdesc_audioWrite (8888544708166230494) -->
+ <skip />
+ <!-- no translation found for permlab_videoRead (9182618678674737229) -->
+ <skip />
+ <!-- no translation found for permdesc_videoRead (7045676429859396194) -->
+ <skip />
+ <!-- no translation found for permlab_videoWrite (128769316366746446) -->
+ <skip />
+ <!-- no translation found for permdesc_videoWrite (5448565757490640841) -->
+ <skip />
+ <!-- no translation found for permlab_imagesRead (3015078545742665304) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesRead (3144263806038695580) -->
+ <skip />
+ <!-- no translation found for permlab_imagesWrite (3391306186247235510) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesWrite (7073662756617474375) -->
+ <skip />
+ <!-- no translation found for permlab_mediaLocation (8675148183726247864) -->
+ <skip />
+ <!-- no translation found for permdesc_mediaLocation (2237023389178865130) -->
+ <skip />
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Deler av fingeravtrykket er registrert. Prøv på nytt."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Kunne ikke registrere fingeravtrykket. Prøv på nytt."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Fingeravtrykksensoren er skitten. Rengjør den og prøv på nytt."</string>
@@ -1872,8 +1912,18 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"Vil du lagre <xliff:g id="TYPE">%1$s</xliff:g> i <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Vil du lagre <xliff:g id="TYPE_0">%1$s</xliff:g> og <xliff:g id="TYPE_1">%2$s</xliff:g> i <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Vil du lagre <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> og <xliff:g id="TYPE_2">%3$s</xliff:g> i <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string>
+ <!-- no translation found for autofill_update_title (4879673117448810818) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_type (339733442087186755) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) -->
+ <skip />
<string name="autofill_save_yes" msgid="6398026094049005921">"Lagre"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"Nei takk"</string>
+ <!-- no translation found for autofill_update_yes (310358413273276958) -->
+ <skip />
<string name="autofill_save_type_password" msgid="5288448918465971568">"passord"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"adresse"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"kredittkort"</string>
diff --git a/core/res/res/values-ne/strings.xml b/core/res/res/values-ne/strings.xml
index eac241b..c39b7c8 100644
--- a/core/res/res/values-ne/strings.xml
+++ b/core/res/res/values-ne/strings.xml
@@ -300,6 +300,18 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"शारीरिक सेन्सर"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"तपाईंको महत्त्वपूर्ण संकेत बारे सेन्सर डेटा पहुँच गर्नुहोस्"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> लाई आफ्ना महत्त्वपूर्ण लक्षणहरूसम्बन्धी सेन्सर डेटामाथि पहुँच राख्न दिने हो?"</string>
+ <!-- no translation found for permgrouplab_aural (965607064083134896) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_aural (4870189506255958055) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_aural (6787926123071735620) -->
+ <skip />
+ <!-- no translation found for permgrouplab_visual (8030190588123857921) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_visual (3415827902566663546) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_visual (6907523945030290376) -->
+ <skip />
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"विन्डो सामग्रीको पुनःबहाली गर्नुहोस्।"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"तपाईँको अन्तरक्रिया भइरहेको विन्डोको सामग्रीको निरीक्षण गर्नुहोस्।"</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"छोएर गरिने खोजलाई सुचारु गर्नुहोस्"</string>
@@ -494,6 +506,34 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"अनुप्रयोगलाई प्रयोगको लागि औठाछाप टेम्प्लेट थप्न र मेटाउने तरिका आह्वान गर्न अनुमति दिन्छ।"</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"औठाछाप हार्डवेयर प्रयोग गर्नुहोस्"</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"अनुप्रयोगलाई प्रमाणीकरणको लागि औठाछाप हार्डवेयर प्रयोग गर्न अनुमति दिन्छ"</string>
+ <!-- no translation found for permlab_audioRead (6617225220728465565) -->
+ <skip />
+ <!-- no translation found for permdesc_audioRead (5034032570243484805) -->
+ <skip />
+ <!-- no translation found for permlab_audioWrite (2661772059799779292) -->
+ <skip />
+ <!-- no translation found for permdesc_audioWrite (8888544708166230494) -->
+ <skip />
+ <!-- no translation found for permlab_videoRead (9182618678674737229) -->
+ <skip />
+ <!-- no translation found for permdesc_videoRead (7045676429859396194) -->
+ <skip />
+ <!-- no translation found for permlab_videoWrite (128769316366746446) -->
+ <skip />
+ <!-- no translation found for permdesc_videoWrite (5448565757490640841) -->
+ <skip />
+ <!-- no translation found for permlab_imagesRead (3015078545742665304) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesRead (3144263806038695580) -->
+ <skip />
+ <!-- no translation found for permlab_imagesWrite (3391306186247235510) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesWrite (7073662756617474375) -->
+ <skip />
+ <!-- no translation found for permlab_mediaLocation (8675148183726247864) -->
+ <skip />
+ <!-- no translation found for permdesc_mediaLocation (2237023389178865130) -->
+ <skip />
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"आंशिक औठाछाप पत्ता लाग्यो। कृपया फेरि प्रयास गर्नुहोस्।"</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"औठाछाप प्रशोधन गर्न सकिएन। कृपया फेरि प्रयास गर्नुहोस्।"</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"औँठाछाप सेन्सर फोहोर छ। कृपया सफा गरेर फेरि प्रयास गर्नुहोस्।"</string>
@@ -1878,8 +1918,18 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"<xliff:g id="TYPE">%1$s</xliff:g> लाई <b><xliff:g id="LABEL">%2$s</xliff:g></b> मा सुरक्षित गर्ने हो?"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"<xliff:g id="TYPE_0">%1$s</xliff:g> र <xliff:g id="TYPE_1">%2$s</xliff:g> लाई <b><xliff:g id="LABEL">%3$s</xliff:g></b> मा सुरक्षित गर्ने हो?"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"<xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> र <xliff:g id="TYPE_2">%3$s</xliff:g> लाई to <b><xliff:g id="LABEL">%4$s</xliff:g></b> मा सुरक्षित गर्ने हो?"</string>
+ <!-- no translation found for autofill_update_title (4879673117448810818) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_type (339733442087186755) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) -->
+ <skip />
<string name="autofill_save_yes" msgid="6398026094049005921">"सुरक्षित गर्नुहोस्"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"पर्दैन, धन्यवाद"</string>
+ <!-- no translation found for autofill_update_yes (310358413273276958) -->
+ <skip />
<string name="autofill_save_type_password" msgid="5288448918465971568">"पासवर्ड"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"ठेगाना"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"क्रेडिट कार्ड"</string>
diff --git a/core/res/res/values-nl/strings.xml b/core/res/res/values-nl/strings.xml
index 0981442..0e13132 100644
--- a/core/res/res/values-nl/strings.xml
+++ b/core/res/res/values-nl/strings.xml
@@ -300,6 +300,12 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"Lichaamssensoren"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"toegang krijgen tot sensorgegevens over je vitale functies"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> toegang geven tot sensorgegevens over je vitale functies?"</string>
+ <string name="permgrouplab_aural" msgid="965607064083134896">"Muziek"</string>
+ <string name="permgroupdesc_aural" msgid="4870189506255958055">"toegang tot je muziek"</string>
+ <string name="permgrouprequest_aural" msgid="6787926123071735620">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> toegang geven tot je muziek?"</string>
+ <string name="permgrouplab_visual" msgid="8030190588123857921">"Foto\'s en video\'s"</string>
+ <string name="permgroupdesc_visual" msgid="3415827902566663546">"toegang tot je foto\'s en video\'s"</string>
+ <string name="permgrouprequest_visual" msgid="6907523945030290376">"Wil je <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> toegang geven tot je foto\'s en video\'s?"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Content van vensters ophalen"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"De content inspecteren van een venster waarmee je interactie hebt."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"\'Verkennen via aanraking\' inschakelen"</string>
@@ -494,6 +500,20 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"Hiermee kan de app methoden aanroepen om vingerafdruksjablonen toe te voegen en te verwijderen voor gebruik."</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"Vingerafdrukhardware gebruiken"</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"Hiermee kan de app vingerafdrukhardware gebruiken voor verificatie"</string>
+ <string name="permlab_audioRead" msgid="6617225220728465565">"je muziekcollectie bekijken"</string>
+ <string name="permdesc_audioRead" msgid="5034032570243484805">"Hiermee sta je de app toe je muziekcollectie te bekijken."</string>
+ <string name="permlab_audioWrite" msgid="2661772059799779292">"je muziekcollectie aanpassen"</string>
+ <string name="permdesc_audioWrite" msgid="8888544708166230494">"Hiermee sta je de app toe je muziekcollectie aan te passen."</string>
+ <string name="permlab_videoRead" msgid="9182618678674737229">"je videocollectie bekijken"</string>
+ <string name="permdesc_videoRead" msgid="7045676429859396194">"Hiermee sta je de app toe je videocollectie te bekijken."</string>
+ <string name="permlab_videoWrite" msgid="128769316366746446">"je videocollectie aanpassen"</string>
+ <string name="permdesc_videoWrite" msgid="5448565757490640841">"Hiermee sta je de app toe je videocollectie aan te passen."</string>
+ <string name="permlab_imagesRead" msgid="3015078545742665304">"je fotocollectie bekijken"</string>
+ <string name="permdesc_imagesRead" msgid="3144263806038695580">"Hiermee sta je de app toe je fotocollectie te bekijken."</string>
+ <string name="permlab_imagesWrite" msgid="3391306186247235510">"je fotocollectie aanpassen"</string>
+ <string name="permdesc_imagesWrite" msgid="7073662756617474375">"Hiermee sta je de app toe je fotocollectie aan te passen."</string>
+ <string name="permlab_mediaLocation" msgid="8675148183726247864">"locaties van je mediacollecties bekijken"</string>
+ <string name="permdesc_mediaLocation" msgid="2237023389178865130">"Hiermee sta je de app toe locaties van je mediacollectie te bekijken."</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Gedeeltelijke vingerafdruk gedetecteerd. Probeer het opnieuw."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Kan vingerafdruk niet verwerken. Probeer het opnieuw."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"De vingerafdruksensor moet worden schoongemaakt. Probeer het daarna opnieuw."</string>
@@ -1872,8 +1892,13 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"<xliff:g id="TYPE">%1$s</xliff:g> opslaan in <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"<xliff:g id="TYPE_0">%1$s</xliff:g> en <xliff:g id="TYPE_1">%2$s</xliff:g> opslaan in <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"<xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> en <xliff:g id="TYPE_2">%3$s</xliff:g> opslaan in <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string>
+ <string name="autofill_update_title" msgid="4879673117448810818">"Updaten naar <b><xliff:g id="LABEL">%1$s</xliff:g></b>?"</string>
+ <string name="autofill_update_title_with_type" msgid="339733442087186755">"<xliff:g id="TYPE">%1$s</xliff:g> updaten naar <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string>
+ <string name="autofill_update_title_with_2types" msgid="6321714204167424745">"<xliff:g id="TYPE_0">%1$s</xliff:g> en <xliff:g id="TYPE_1">%2$s</xliff:g> updaten naar <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string>
+ <string name="autofill_update_title_with_3types" msgid="5866735124066629287">"<xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> en <xliff:g id="TYPE_2">%3$s</xliff:g> updaten naar <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string>
<string name="autofill_save_yes" msgid="6398026094049005921">"Opslaan"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"Nee, bedankt"</string>
+ <string name="autofill_update_yes" msgid="310358413273276958">"Updaten"</string>
<string name="autofill_save_type_password" msgid="5288448918465971568">"Wachtwoord"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"Adres"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"Creditcard"</string>
diff --git a/core/res/res/values-or/strings.xml b/core/res/res/values-or/strings.xml
index c86fab8..4d5dd42 100644
--- a/core/res/res/values-or/strings.xml
+++ b/core/res/res/values-or/strings.xml
@@ -300,6 +300,18 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"ବଡୀ ସେନ୍ସର୍"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"ଆପଣଙ୍କ ଗୁରୁତପୂର୍ଣ୍ଣ ସଂକେତଗୁଡ଼ିକ ବିଷୟରେ ସେନ୍ସର୍ ଡାଟା ଆକ୍ସେସ୍ କରେ"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b>କୁ ଆପଣଙ୍କ ଗୁରୁତ୍ୱପୂର୍ଣ୍ଣ ଲକ୍ଷଣଗୁଡ଼ିକ ବିଷୟରେ ସେନ୍ସର୍ ଡାଟା ଆକ୍ସେସ୍ କରିବା ପାଇଁ ଅନୁମତି ଦେବେ କି?"</string>
+ <!-- no translation found for permgrouplab_aural (965607064083134896) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_aural (4870189506255958055) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_aural (6787926123071735620) -->
+ <skip />
+ <!-- no translation found for permgrouplab_visual (8030190588123857921) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_visual (3415827902566663546) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_visual (6907523945030290376) -->
+ <skip />
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"ୱିଣ୍ଡୋ କଣ୍ଟେଣ୍ଟ ହାସଲ କରନ୍ତୁ"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"ଆପଣ କାମ କରୁଥିବା ୱିଣ୍ଡୋର କଣ୍ଟେଣ୍ଟକୁ ଯାଞ୍ଚ କରନ୍ତୁ।"</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"ସ୍ପର୍ଶ ଦ୍ୱାରା ଏକ୍ସପ୍ଲୋର୍ ଅନ୍ କରନ୍ତୁ"</string>
@@ -494,6 +506,34 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"ବ୍ୟବହାର କରିବା ପାଇଁ ଆଙ୍ଗୁଠି ଚିହ୍ନ ଯୋଡ଼ିବାକୁ ଓ ଡିଲିଟ୍ କରିବାକୁ ଆପକୁ ବିଧି ଆରମ୍ଭ କରିବାକୁ ଦେଇଥାଏ।"</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"ଆଙ୍ଗୁଠି ଚିହ୍ନ ହାର୍ଡୱେର୍ ବ୍ୟବହାର କରନ୍ତୁ"</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"ସ୍ୱୀକୃତି ପାଇଁ ଆଙ୍ଗୁଠି ଚିହ୍ନ ହାର୍ଡୱେର୍ ବ୍ୟବହାର କରିବାକୁ ଅନୁମତି ଦିଏ"</string>
+ <!-- no translation found for permlab_audioRead (6617225220728465565) -->
+ <skip />
+ <!-- no translation found for permdesc_audioRead (5034032570243484805) -->
+ <skip />
+ <!-- no translation found for permlab_audioWrite (2661772059799779292) -->
+ <skip />
+ <!-- no translation found for permdesc_audioWrite (8888544708166230494) -->
+ <skip />
+ <!-- no translation found for permlab_videoRead (9182618678674737229) -->
+ <skip />
+ <!-- no translation found for permdesc_videoRead (7045676429859396194) -->
+ <skip />
+ <!-- no translation found for permlab_videoWrite (128769316366746446) -->
+ <skip />
+ <!-- no translation found for permdesc_videoWrite (5448565757490640841) -->
+ <skip />
+ <!-- no translation found for permlab_imagesRead (3015078545742665304) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesRead (3144263806038695580) -->
+ <skip />
+ <!-- no translation found for permlab_imagesWrite (3391306186247235510) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesWrite (7073662756617474375) -->
+ <skip />
+ <!-- no translation found for permlab_mediaLocation (8675148183726247864) -->
+ <skip />
+ <!-- no translation found for permdesc_mediaLocation (2237023389178865130) -->
+ <skip />
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"ଆଙ୍ଗୁଠି ଚିହ୍ନ ଆଂଶିକ ଚିହ୍ନଟ ହେଲା। ଦୟାକରି ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।"</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"ଆଙ୍ଗୁଠି ଚିହ୍ନ ପ୍ରୋସେସ୍ କରାଯାଇପାରିଲା ନାହିଁ। ଦୟାକରି ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।"</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"ଆଙ୍ଗୁଠି ଚିହ୍ନ ସେନ୍ସର୍ ମଇଳା ହୋଇଯାଇଛି। ଦୟାକରି ସଫା କରନ୍ତୁ ଓ ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।"</string>
@@ -1873,8 +1913,18 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"<xliff:g id="TYPE">%1$s</xliff:g> <b><xliff:g id="LABEL">%2$s</xliff:g></b>ରେ ସେଭ୍ କରିବେ?"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"<xliff:g id="TYPE_0">%1$s</xliff:g> ଏବଂ <xliff:g id="TYPE_1">%2$s</xliff:g> <b><xliff:g id="LABEL">%3$s</xliff:g></b>ରେ ସେଭ୍ କରିବେ?"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"<xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g>, ଏବଂ <xliff:g id="TYPE_2">%3$s</xliff:g> <b><xliff:g id="LABEL">%4$s</xliff:g></b>ରେ ସେଭ୍ କରିବେ?"</string>
+ <!-- no translation found for autofill_update_title (4879673117448810818) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_type (339733442087186755) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) -->
+ <skip />
<string name="autofill_save_yes" msgid="6398026094049005921">"ସେଭ୍ କରନ୍ତୁ"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"ନାଁ, ପଚାରିଥିବାରୁ ଧନ୍ୟବାଦ"</string>
+ <!-- no translation found for autofill_update_yes (310358413273276958) -->
+ <skip />
<string name="autofill_save_type_password" msgid="5288448918465971568">"ପାସୱର୍ଡ୍"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"ଠିକଣା"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"କ୍ରେଡିଟ୍ କାର୍ଡ"</string>
diff --git a/core/res/res/values-pa/strings.xml b/core/res/res/values-pa/strings.xml
index 48c1a38..96fd692 100644
--- a/core/res/res/values-pa/strings.xml
+++ b/core/res/res/values-pa/strings.xml
@@ -300,6 +300,18 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"ਸਰੀਰ ਸੰਵੇਦਕ"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"ਆਪਣੇ ਸਰੀਰ ਦੇ ਅਹਿਮ ਚਿੰਨ੍ਹਾਂ ਬਾਰੇ ਸੰਵੇਦਕ ਡਾਟਾ ਤੱਕ ਪਹੁੰਚ ਕਰਨ"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"ਕੀ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ਨੂੰ ਤੁਹਾਡੇ ਸਰੀਰ ਦੇ ਅਹਿਮ ਲੱਛਣਾਂ ਸੰਬੰਧੀ ਸੈਂਸਰ ਡਾਟੇ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਦੇਣੀ ਹੈ?"</string>
+ <!-- no translation found for permgrouplab_aural (965607064083134896) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_aural (4870189506255958055) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_aural (6787926123071735620) -->
+ <skip />
+ <!-- no translation found for permgrouplab_visual (8030190588123857921) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_visual (3415827902566663546) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_visual (6907523945030290376) -->
+ <skip />
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"ਵਿੰਡੋ ਸਮੱਗਰੀ ਮੁੜ ਪ੍ਰਾਪਤ ਕਰਨਾ"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"ਇੱਕ ਵਿੰਡੋ ਦੀ ਸਮੱਗਰੀ ਦੀ ਜਾਂਚ ਕਰੋ, ਜਿਸ ਨਾਲ ਤੁਸੀਂ ਅੰਤਰਕਿਰਿਆ ਕਰ ਰਹੇ ਹੋ"</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"\'ਸਪੱਰਸ਼ ਰਾਹੀਂ ਪੜਚੋਲ ਕਰੋ\' ਚਾਲੂ ਕਰਨਾ"</string>
@@ -494,6 +506,34 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"ਐਪ ਨੂੰ ਵਰਤੋਂ ਲਈ ਫਿੰਗਰਪ੍ਰਿੰਟ ਸ਼ਾਮਲ ਕਰਨ ਅਤੇ ਮਿਟਾਉਣ ਦੀਆਂ ਵਿਧੀਆਂ ਦੀ ਬੇਨਤੀ ਕਰਨ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ।"</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"ਫਿੰਗਰਪ੍ਰਿੰਟ ਹਾਰਡਵੇਅਰ ਵਰਤੋ"</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"ਐਪ ਨੂੰ ਪ੍ਰਮਾਣੀਕਰਨ ਲਈ ਫਿੰਗਰਪ੍ਰਿੰਟ ਹਾਰਡਵੇਅਰ ਵਰਤਣ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ"</string>
+ <!-- no translation found for permlab_audioRead (6617225220728465565) -->
+ <skip />
+ <!-- no translation found for permdesc_audioRead (5034032570243484805) -->
+ <skip />
+ <!-- no translation found for permlab_audioWrite (2661772059799779292) -->
+ <skip />
+ <!-- no translation found for permdesc_audioWrite (8888544708166230494) -->
+ <skip />
+ <!-- no translation found for permlab_videoRead (9182618678674737229) -->
+ <skip />
+ <!-- no translation found for permdesc_videoRead (7045676429859396194) -->
+ <skip />
+ <!-- no translation found for permlab_videoWrite (128769316366746446) -->
+ <skip />
+ <!-- no translation found for permdesc_videoWrite (5448565757490640841) -->
+ <skip />
+ <!-- no translation found for permlab_imagesRead (3015078545742665304) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesRead (3144263806038695580) -->
+ <skip />
+ <!-- no translation found for permlab_imagesWrite (3391306186247235510) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesWrite (7073662756617474375) -->
+ <skip />
+ <!-- no translation found for permlab_mediaLocation (8675148183726247864) -->
+ <skip />
+ <!-- no translation found for permdesc_mediaLocation (2237023389178865130) -->
+ <skip />
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"ਅਧੂਰਾ ਫਿੰਗਰਪ੍ਰਿਟ ਮਿਲਿਆ। ਕਿਰਪਾ ਕਰਕੇ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।"</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"ਫਿੰਗਰਪ੍ਰਿੰਟ ਦੀ ਪ੍ਰਕਿਰਿਆ ਨਹੀਂ ਕਰ ਸਕਿਆ। ਕਿਰਪਾ ਕਰਕੇ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।"</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"ਫਿੰਗਰਪ੍ਰਿੰਟ ਸੰਵੇਦਕ ਗੰਦਾ ਹੈ। ਕਿਰਪਾ ਕਰਕੇ ਇਸਨੂੰ ਸਾਫ਼ ਕਰੋ ਅਤੇ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।"</string>
@@ -1873,8 +1913,18 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"ਕੀ <xliff:g id="TYPE">%1$s</xliff:g> ਨੂੰ <b><xliff:g id="LABEL">%2$s</xliff:g></b> ਵਿੱਚ ਰੱਖਿਅਤ ਕਰਨਾ ਹੈ?"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"ਕੀ <xliff:g id="TYPE_0">%1$s</xliff:g> ਅਤੇ <xliff:g id="TYPE_1">%2$s</xliff:g> ਨੂੰ <b><xliff:g id="LABEL">%3$s</xliff:g></b> ਵਿੱਚ ਰੱਖਿਅਤ ਕਰਨਾ ਹੈ?"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"ਕੀ <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g>, ਅਤੇ <xliff:g id="TYPE_2">%3$s</xliff:g> ਨੂੰ <b><xliff:g id="LABEL">%4$s</xliff:g></b> ਵਿੱਚ ਰੱਖਿਅਤ ਕਰਨਾ ਹੈ?"</string>
+ <!-- no translation found for autofill_update_title (4879673117448810818) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_type (339733442087186755) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) -->
+ <skip />
<string name="autofill_save_yes" msgid="6398026094049005921">"ਰੱਖਿਅਤ ਕਰੋ"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"ਨਹੀਂ ਧੰਨਵਾਦ"</string>
+ <!-- no translation found for autofill_update_yes (310358413273276958) -->
+ <skip />
<string name="autofill_save_type_password" msgid="5288448918465971568">"ਪਾਸਵਰਡ"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"ਪਤਾ"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"ਕ੍ਰੈਡਿਟ ਕਾਰਡ"</string>
diff --git a/core/res/res/values-pl/strings.xml b/core/res/res/values-pl/strings.xml
index 76e5529..dbc5779 100644
--- a/core/res/res/values-pl/strings.xml
+++ b/core/res/res/values-pl/strings.xml
@@ -306,6 +306,18 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"Czujniki na ciele"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"dostęp do danych czujnika podstawowych funkcji życiowych"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"Zezwolić aplikacji <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> na dostęp do danych z czujnika podstawowych funkcji życiowych?"</string>
+ <!-- no translation found for permgrouplab_aural (965607064083134896) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_aural (4870189506255958055) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_aural (6787926123071735620) -->
+ <skip />
+ <!-- no translation found for permgrouplab_visual (8030190588123857921) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_visual (3415827902566663546) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_visual (6907523945030290376) -->
+ <skip />
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Pobieranie zawartości okna"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Sprawdzanie zawartości okna, z którego korzystasz."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Włączenie czytania dotykiem"</string>
@@ -500,6 +512,34 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"Zezwala aplikacji aktywować metody dodawania i usuwania szablonów odcisków palców."</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"używanie czytnika linii papilarnych"</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"Zezwala aplikacji na używanie czytnika linii papilarnych na potrzeby autoryzacji"</string>
+ <!-- no translation found for permlab_audioRead (6617225220728465565) -->
+ <skip />
+ <!-- no translation found for permdesc_audioRead (5034032570243484805) -->
+ <skip />
+ <!-- no translation found for permlab_audioWrite (2661772059799779292) -->
+ <skip />
+ <!-- no translation found for permdesc_audioWrite (8888544708166230494) -->
+ <skip />
+ <!-- no translation found for permlab_videoRead (9182618678674737229) -->
+ <skip />
+ <!-- no translation found for permdesc_videoRead (7045676429859396194) -->
+ <skip />
+ <!-- no translation found for permlab_videoWrite (128769316366746446) -->
+ <skip />
+ <!-- no translation found for permdesc_videoWrite (5448565757490640841) -->
+ <skip />
+ <!-- no translation found for permlab_imagesRead (3015078545742665304) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesRead (3144263806038695580) -->
+ <skip />
+ <!-- no translation found for permlab_imagesWrite (3391306186247235510) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesWrite (7073662756617474375) -->
+ <skip />
+ <!-- no translation found for permlab_mediaLocation (8675148183726247864) -->
+ <skip />
+ <!-- no translation found for permdesc_mediaLocation (2237023389178865130) -->
+ <skip />
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Odcisk palca został odczytany tylko częściowo. Spróbuj ponownie."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Nie udało się przetworzyć odcisku palca. Spróbuj ponownie."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Czytnik linii papilarnych jest zabrudzony. Wyczyść go i spróbuj ponownie."</string>
@@ -1942,8 +1982,18 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"<xliff:g id="TYPE">%1$s</xliff:g> – zapisać w: <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"<xliff:g id="TYPE_0">%1$s</xliff:g> i <xliff:g id="TYPE_1">%2$s</xliff:g> – zapisać w: <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"<xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> i <xliff:g id="TYPE_2">%3$s</xliff:g> – zapisać w: <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string>
+ <!-- no translation found for autofill_update_title (4879673117448810818) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_type (339733442087186755) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) -->
+ <skip />
<string name="autofill_save_yes" msgid="6398026094049005921">"Zapisz"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"Nie, dziękuję"</string>
+ <!-- no translation found for autofill_update_yes (310358413273276958) -->
+ <skip />
<string name="autofill_save_type_password" msgid="5288448918465971568">"hasło"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"adres"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"karta kredytowa"</string>
diff --git a/core/res/res/values-pt-rBR/strings.xml b/core/res/res/values-pt-rBR/strings.xml
index 1260627..ad68dde 100644
--- a/core/res/res/values-pt-rBR/strings.xml
+++ b/core/res/res/values-pt-rBR/strings.xml
@@ -300,6 +300,12 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"Sensores corporais"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"acesse dados do sensor sobre seus sinais vitais"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"Permitir que <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> acesse os dados do sensor sobre seus sinais vitais?"</string>
+ <string name="permgrouplab_aural" msgid="965607064083134896">"Músicas"</string>
+ <string name="permgroupdesc_aural" msgid="4870189506255958055">"acessar suas músicas"</string>
+ <string name="permgrouprequest_aural" msgid="6787926123071735620">"Permitir que o app <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> acesse suas músicas?"</string>
+ <string name="permgrouplab_visual" msgid="8030190588123857921">"Fotos e vídeos"</string>
+ <string name="permgroupdesc_visual" msgid="3415827902566663546">"acessar suas fotos e seus vídeos"</string>
+ <string name="permgrouprequest_visual" msgid="6907523945030290376">"Permitir que o app <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> acesse suas fotos e seus vídeos?"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Acessar conteúdo de uma janela"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Inspeciona o conteúdo de uma janela com a qual você está interagindo."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Ativar Explorar por toque"</string>
@@ -494,6 +500,20 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"Permite que o app execute métodos para adicionar e excluir modelos de impressão digital para uso."</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"usar hardware de impressão digital"</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"Permite que o app use hardware de impressão digital para autenticação."</string>
+ <string name="permlab_audioRead" msgid="6617225220728465565">"ler sua coleção de músicas"</string>
+ <string name="permdesc_audioRead" msgid="5034032570243484805">"Permite que o app leia sua coleção de músicas."</string>
+ <string name="permlab_audioWrite" msgid="2661772059799779292">"modificar sua coleção de músicas"</string>
+ <string name="permdesc_audioWrite" msgid="8888544708166230494">"Permite que o app modifique sua coleção de músicas."</string>
+ <string name="permlab_videoRead" msgid="9182618678674737229">"ler sua coleção de vídeos"</string>
+ <string name="permdesc_videoRead" msgid="7045676429859396194">"Permite que o app leia sua coleção de vídeos."</string>
+ <string name="permlab_videoWrite" msgid="128769316366746446">"modificar sua coleção de vídeos"</string>
+ <string name="permdesc_videoWrite" msgid="5448565757490640841">"Permite que o app modifique sua coleção de vídeos."</string>
+ <string name="permlab_imagesRead" msgid="3015078545742665304">"ler sua coleção de fotos"</string>
+ <string name="permdesc_imagesRead" msgid="3144263806038695580">"Permite que o app leia sua coleção de fotos."</string>
+ <string name="permlab_imagesWrite" msgid="3391306186247235510">"modificar sua coleção de fotos"</string>
+ <string name="permdesc_imagesWrite" msgid="7073662756617474375">"Permite que o app modifique sua coleção de fotos."</string>
+ <string name="permlab_mediaLocation" msgid="8675148183726247864">"ler locais na sua coleção de mídias"</string>
+ <string name="permdesc_mediaLocation" msgid="2237023389178865130">"Permite que o app leia os locais na sua coleção de mídias."</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Impressão digital parcial detectada. Tente novamente."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Não foi possível processar a impressão digital. Tente novamente."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"O sensor de impressão digital está sujo. Limpe-o e tente novamente."</string>
@@ -1872,8 +1892,13 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"Salvar <xliff:g id="TYPE">%1$s</xliff:g> em <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Salvar <xliff:g id="TYPE_0">%1$s</xliff:g> e <xliff:g id="TYPE_1">%2$s</xliff:g> em <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Salvar <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> e <xliff:g id="TYPE_2">%3$s</xliff:g> em <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string>
+ <string name="autofill_update_title" msgid="4879673117448810818">"Atualizar no <b><xliff:g id="LABEL">%1$s</xliff:g></b>?"</string>
+ <string name="autofill_update_title_with_type" msgid="339733442087186755">"Atualizar <xliff:g id="TYPE">%1$s</xliff:g> no <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string>
+ <string name="autofill_update_title_with_2types" msgid="6321714204167424745">"Atualizar <xliff:g id="TYPE_0">%1$s</xliff:g> e <xliff:g id="TYPE_1">%2$s</xliff:g> no <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string>
+ <string name="autofill_update_title_with_3types" msgid="5866735124066629287">"Atualizar <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> e <xliff:g id="TYPE_2">%3$s</xliff:g> no <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string>
<string name="autofill_save_yes" msgid="6398026094049005921">"Salvar"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"Não, obrigado"</string>
+ <string name="autofill_update_yes" msgid="310358413273276958">"Atualizar"</string>
<string name="autofill_save_type_password" msgid="5288448918465971568">"senha"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"endereço"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"cartão de crédito"</string>
diff --git a/core/res/res/values-pt-rPT/strings.xml b/core/res/res/values-pt-rPT/strings.xml
index 597be12..631e9f3 100644
--- a/core/res/res/values-pt-rPT/strings.xml
+++ b/core/res/res/values-pt-rPT/strings.xml
@@ -300,6 +300,12 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"Sensores de corpo"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"aceder a dados do sensor acerca dos seus sinais vitais"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"Pretende permitir que a aplicação <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> aceda aos dados do sensor acerca dos seus sinais vitais?"</string>
+ <string name="permgrouplab_aural" msgid="965607064083134896">"Música"</string>
+ <string name="permgroupdesc_aural" msgid="4870189506255958055">"aceder à sua música"</string>
+ <string name="permgrouprequest_aural" msgid="6787926123071735620">"Pretende permitir que a aplicação <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> aceda à sua música?"</string>
+ <string name="permgrouplab_visual" msgid="8030190588123857921">"Fotos e vídeos"</string>
+ <string name="permgroupdesc_visual" msgid="3415827902566663546">"aceder aos seus vídeos e fotos"</string>
+ <string name="permgrouprequest_visual" msgid="6907523945030290376">"Pretende permitir que a aplicação <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> aceda às suas fotos e vídeos?"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Obter conteúdo da janela"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Inspecionar o conteúdo de uma janela com a qual está a interagir."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Ativar Explorar Através do Toque"</string>
@@ -494,6 +500,20 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"Permite que a aplicação invoque métodos para adicionar e eliminar modelos de impressão digital para utilização."</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"utilizar o hardware de impressão digital"</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"Permite que a aplicação utilize o hardware de impressão digital para autenticação"</string>
+ <string name="permlab_audioRead" msgid="6617225220728465565">"ler a sua coleção de música"</string>
+ <string name="permdesc_audioRead" msgid="5034032570243484805">"Permite que a aplicação leia a sua coleção de música."</string>
+ <string name="permlab_audioWrite" msgid="2661772059799779292">"modificar a sua coleção de música"</string>
+ <string name="permdesc_audioWrite" msgid="8888544708166230494">"Permite que a aplicação modifique a sua coleção de música."</string>
+ <string name="permlab_videoRead" msgid="9182618678674737229">"ler a sua coleção de vídeos"</string>
+ <string name="permdesc_videoRead" msgid="7045676429859396194">"Permite que a aplicação leia a sua coleção de vídeos."</string>
+ <string name="permlab_videoWrite" msgid="128769316366746446">"modificar a sua coleção de vídeos"</string>
+ <string name="permdesc_videoWrite" msgid="5448565757490640841">"Permite que a aplicação modifique a sua coleção de vídeos."</string>
+ <string name="permlab_imagesRead" msgid="3015078545742665304">"ler a sua coleção de fotos"</string>
+ <string name="permdesc_imagesRead" msgid="3144263806038695580">"Permite que a aplicação leia a sua coleção de fotos."</string>
+ <string name="permlab_imagesWrite" msgid="3391306186247235510">"modificar a sua coleção de fotos"</string>
+ <string name="permdesc_imagesWrite" msgid="7073662756617474375">"Permite que a aplicação modifique a sua coleção de fotos."</string>
+ <string name="permlab_mediaLocation" msgid="8675148183726247864">"ler as localizações a partir da sua coleção de multimédia"</string>
+ <string name="permdesc_mediaLocation" msgid="2237023389178865130">"Permite que a aplicação leia as localizações a partir da sua coleção de multimédia."</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Impressão digital detetada. Tente novamente."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Não foi possível processar a impressão digital. Tente novamente."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"O sensor de impressões digitais está sujo. Limpe-o e tente novamente."</string>
@@ -1872,8 +1892,13 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"Pretende guardar <xliff:g id="TYPE">%1$s</xliff:g> no <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Pretende guardar <xliff:g id="TYPE_0">%1$s</xliff:g> e <xliff:g id="TYPE_1">%2$s</xliff:g> no <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Pretende guardar <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> e <xliff:g id="TYPE_2">%3$s</xliff:g> no <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string>
+ <string name="autofill_update_title" msgid="4879673117448810818">"Pretende atualizar para o <b><xliff:g id="LABEL">%1$s</xliff:g></b>?"</string>
+ <string name="autofill_update_title_with_type" msgid="339733442087186755">"Pretende atualizar <xliff:g id="TYPE">%1$s</xliff:g> para o <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string>
+ <string name="autofill_update_title_with_2types" msgid="6321714204167424745">"Pretende atualizar <xliff:g id="TYPE_0">%1$s</xliff:g> e <xliff:g id="TYPE_1">%2$s</xliff:g> para o <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string>
+ <string name="autofill_update_title_with_3types" msgid="5866735124066629287">"Pretende atualizar <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> e <xliff:g id="TYPE_2">%3$s</xliff:g> para o <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string>
<string name="autofill_save_yes" msgid="6398026094049005921">"Guardar"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"Não, obrigado"</string>
+ <string name="autofill_update_yes" msgid="310358413273276958">"Atualizar"</string>
<string name="autofill_save_type_password" msgid="5288448918465971568">"palavra-passe"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"endereço"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"cartão de crédito"</string>
diff --git a/core/res/res/values-pt/strings.xml b/core/res/res/values-pt/strings.xml
index 1260627..ad68dde 100644
--- a/core/res/res/values-pt/strings.xml
+++ b/core/res/res/values-pt/strings.xml
@@ -300,6 +300,12 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"Sensores corporais"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"acesse dados do sensor sobre seus sinais vitais"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"Permitir que <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> acesse os dados do sensor sobre seus sinais vitais?"</string>
+ <string name="permgrouplab_aural" msgid="965607064083134896">"Músicas"</string>
+ <string name="permgroupdesc_aural" msgid="4870189506255958055">"acessar suas músicas"</string>
+ <string name="permgrouprequest_aural" msgid="6787926123071735620">"Permitir que o app <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> acesse suas músicas?"</string>
+ <string name="permgrouplab_visual" msgid="8030190588123857921">"Fotos e vídeos"</string>
+ <string name="permgroupdesc_visual" msgid="3415827902566663546">"acessar suas fotos e seus vídeos"</string>
+ <string name="permgrouprequest_visual" msgid="6907523945030290376">"Permitir que o app <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> acesse suas fotos e seus vídeos?"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Acessar conteúdo de uma janela"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Inspeciona o conteúdo de uma janela com a qual você está interagindo."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Ativar Explorar por toque"</string>
@@ -494,6 +500,20 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"Permite que o app execute métodos para adicionar e excluir modelos de impressão digital para uso."</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"usar hardware de impressão digital"</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"Permite que o app use hardware de impressão digital para autenticação."</string>
+ <string name="permlab_audioRead" msgid="6617225220728465565">"ler sua coleção de músicas"</string>
+ <string name="permdesc_audioRead" msgid="5034032570243484805">"Permite que o app leia sua coleção de músicas."</string>
+ <string name="permlab_audioWrite" msgid="2661772059799779292">"modificar sua coleção de músicas"</string>
+ <string name="permdesc_audioWrite" msgid="8888544708166230494">"Permite que o app modifique sua coleção de músicas."</string>
+ <string name="permlab_videoRead" msgid="9182618678674737229">"ler sua coleção de vídeos"</string>
+ <string name="permdesc_videoRead" msgid="7045676429859396194">"Permite que o app leia sua coleção de vídeos."</string>
+ <string name="permlab_videoWrite" msgid="128769316366746446">"modificar sua coleção de vídeos"</string>
+ <string name="permdesc_videoWrite" msgid="5448565757490640841">"Permite que o app modifique sua coleção de vídeos."</string>
+ <string name="permlab_imagesRead" msgid="3015078545742665304">"ler sua coleção de fotos"</string>
+ <string name="permdesc_imagesRead" msgid="3144263806038695580">"Permite que o app leia sua coleção de fotos."</string>
+ <string name="permlab_imagesWrite" msgid="3391306186247235510">"modificar sua coleção de fotos"</string>
+ <string name="permdesc_imagesWrite" msgid="7073662756617474375">"Permite que o app modifique sua coleção de fotos."</string>
+ <string name="permlab_mediaLocation" msgid="8675148183726247864">"ler locais na sua coleção de mídias"</string>
+ <string name="permdesc_mediaLocation" msgid="2237023389178865130">"Permite que o app leia os locais na sua coleção de mídias."</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Impressão digital parcial detectada. Tente novamente."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Não foi possível processar a impressão digital. Tente novamente."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"O sensor de impressão digital está sujo. Limpe-o e tente novamente."</string>
@@ -1872,8 +1892,13 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"Salvar <xliff:g id="TYPE">%1$s</xliff:g> em <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Salvar <xliff:g id="TYPE_0">%1$s</xliff:g> e <xliff:g id="TYPE_1">%2$s</xliff:g> em <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Salvar <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> e <xliff:g id="TYPE_2">%3$s</xliff:g> em <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string>
+ <string name="autofill_update_title" msgid="4879673117448810818">"Atualizar no <b><xliff:g id="LABEL">%1$s</xliff:g></b>?"</string>
+ <string name="autofill_update_title_with_type" msgid="339733442087186755">"Atualizar <xliff:g id="TYPE">%1$s</xliff:g> no <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string>
+ <string name="autofill_update_title_with_2types" msgid="6321714204167424745">"Atualizar <xliff:g id="TYPE_0">%1$s</xliff:g> e <xliff:g id="TYPE_1">%2$s</xliff:g> no <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string>
+ <string name="autofill_update_title_with_3types" msgid="5866735124066629287">"Atualizar <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> e <xliff:g id="TYPE_2">%3$s</xliff:g> no <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string>
<string name="autofill_save_yes" msgid="6398026094049005921">"Salvar"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"Não, obrigado"</string>
+ <string name="autofill_update_yes" msgid="310358413273276958">"Atualizar"</string>
<string name="autofill_save_type_password" msgid="5288448918465971568">"senha"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"endereço"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"cartão de crédito"</string>
diff --git a/core/res/res/values-ro/strings.xml b/core/res/res/values-ro/strings.xml
index de01af6..ab276df 100644
--- a/core/res/res/values-ro/strings.xml
+++ b/core/res/res/values-ro/strings.xml
@@ -303,6 +303,18 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"Senzori corporali"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"acceseze datele de la senzori despre semnele vitale"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"Permiteți <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> să acceseze datele de la senzori despre semnele dvs. vitale?"</string>
+ <!-- no translation found for permgrouplab_aural (965607064083134896) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_aural (4870189506255958055) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_aural (6787926123071735620) -->
+ <skip />
+ <!-- no translation found for permgrouplab_visual (8030190588123857921) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_visual (3415827902566663546) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_visual (6907523945030290376) -->
+ <skip />
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Analizează conținutul ferestrei"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Inspectează conținutul unei ferestre cu care interacționați."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Activează funcția Explorați prin atingere"</string>
@@ -497,6 +509,34 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"Permite aplicației să invoce metode pentru a adăuga și pentru a șterge șabloane de amprentă pentru utilizare."</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"folosește hardware-ul pentru amprentă"</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"Permite aplicației să folosească hardware pentru amprentă pentru autentificare"</string>
+ <!-- no translation found for permlab_audioRead (6617225220728465565) -->
+ <skip />
+ <!-- no translation found for permdesc_audioRead (5034032570243484805) -->
+ <skip />
+ <!-- no translation found for permlab_audioWrite (2661772059799779292) -->
+ <skip />
+ <!-- no translation found for permdesc_audioWrite (8888544708166230494) -->
+ <skip />
+ <!-- no translation found for permlab_videoRead (9182618678674737229) -->
+ <skip />
+ <!-- no translation found for permdesc_videoRead (7045676429859396194) -->
+ <skip />
+ <!-- no translation found for permlab_videoWrite (128769316366746446) -->
+ <skip />
+ <!-- no translation found for permdesc_videoWrite (5448565757490640841) -->
+ <skip />
+ <!-- no translation found for permlab_imagesRead (3015078545742665304) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesRead (3144263806038695580) -->
+ <skip />
+ <!-- no translation found for permlab_imagesWrite (3391306186247235510) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesWrite (7073662756617474375) -->
+ <skip />
+ <!-- no translation found for permlab_mediaLocation (8675148183726247864) -->
+ <skip />
+ <!-- no translation found for permdesc_mediaLocation (2237023389178865130) -->
+ <skip />
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"S-a detectat parțial amprenta. Încercați din nou."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Amprenta nu a putut fi procesată. Încercați din nou."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Senzorul pentru amprente este murdar. Curățați-l și încercați din nou."</string>
@@ -1907,8 +1947,18 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"Salvați <xliff:g id="TYPE">%1$s</xliff:g> în <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Salvați <xliff:g id="TYPE_0">%1$s</xliff:g> și <xliff:g id="TYPE_1">%2$s</xliff:g> în <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Salvați <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> și <xliff:g id="TYPE_2">%3$s</xliff:g> în <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string>
+ <!-- no translation found for autofill_update_title (4879673117448810818) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_type (339733442087186755) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) -->
+ <skip />
<string name="autofill_save_yes" msgid="6398026094049005921">"Salvați"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"Nu, mulțumesc"</string>
+ <!-- no translation found for autofill_update_yes (310358413273276958) -->
+ <skip />
<string name="autofill_save_type_password" msgid="5288448918465971568">"parolă"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"adresă"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"card de credit"</string>
diff --git a/core/res/res/values-ru/strings.xml b/core/res/res/values-ru/strings.xml
index 63a8574..de009a6 100644
--- a/core/res/res/values-ru/strings.xml
+++ b/core/res/res/values-ru/strings.xml
@@ -306,6 +306,18 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"Нательные датчики"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"доступ к данным датчиков о состоянии организма"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"Разрешить приложению <b>\"<xliff:g id="APP_NAME">%1$s</xliff:g>\"</b> доступ к данным датчиков о состоянии организма?"</string>
+ <!-- no translation found for permgrouplab_aural (965607064083134896) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_aural (4870189506255958055) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_aural (6787926123071735620) -->
+ <skip />
+ <!-- no translation found for permgrouplab_visual (8030190588123857921) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_visual (3415827902566663546) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_visual (6907523945030290376) -->
+ <skip />
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Получать содержимое окна"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Анализировать содержимое активного окна."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Включать Изучение касанием"</string>
@@ -500,6 +512,34 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"Приложение сможет добавлять и удалять шаблоны отпечатков пальцев."</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"Использование сканера отпечатков"</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"Приложение сможет использовать сканер отпечатков пальцев для аутентификации."</string>
+ <!-- no translation found for permlab_audioRead (6617225220728465565) -->
+ <skip />
+ <!-- no translation found for permdesc_audioRead (5034032570243484805) -->
+ <skip />
+ <!-- no translation found for permlab_audioWrite (2661772059799779292) -->
+ <skip />
+ <!-- no translation found for permdesc_audioWrite (8888544708166230494) -->
+ <skip />
+ <!-- no translation found for permlab_videoRead (9182618678674737229) -->
+ <skip />
+ <!-- no translation found for permdesc_videoRead (7045676429859396194) -->
+ <skip />
+ <!-- no translation found for permlab_videoWrite (128769316366746446) -->
+ <skip />
+ <!-- no translation found for permdesc_videoWrite (5448565757490640841) -->
+ <skip />
+ <!-- no translation found for permlab_imagesRead (3015078545742665304) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesRead (3144263806038695580) -->
+ <skip />
+ <!-- no translation found for permlab_imagesWrite (3391306186247235510) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesWrite (7073662756617474375) -->
+ <skip />
+ <!-- no translation found for permlab_mediaLocation (8675148183726247864) -->
+ <skip />
+ <!-- no translation found for permdesc_mediaLocation (2237023389178865130) -->
+ <skip />
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Отсканирована только часть пальца. Повторите попытку."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Не удалось распознать отпечаток. Повторите попытку."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Очистите сканер и повторите попытку."</string>
@@ -1942,8 +1982,18 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"Сохранить <xliff:g id="TYPE">%1$s</xliff:g> в <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Сохранить <xliff:g id="TYPE_0">%1$s</xliff:g> и <xliff:g id="TYPE_1">%2$s</xliff:g> в <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Сохранить <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> и <xliff:g id="TYPE_2">%3$s</xliff:g> в <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string>
+ <!-- no translation found for autofill_update_title (4879673117448810818) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_type (339733442087186755) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) -->
+ <skip />
<string name="autofill_save_yes" msgid="6398026094049005921">"Сохранить"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"Нет, спасибо"</string>
+ <!-- no translation found for autofill_update_yes (310358413273276958) -->
+ <skip />
<string name="autofill_save_type_password" msgid="5288448918465971568">"Пароль"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"Адрес"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"Банковская карта"</string>
diff --git a/core/res/res/values-si/strings.xml b/core/res/res/values-si/strings.xml
index a3e3ea0..bdc0c7b 100644
--- a/core/res/res/values-si/strings.xml
+++ b/core/res/res/values-si/strings.xml
@@ -300,6 +300,18 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"ශරීර සංවේදක"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"ඔබේ ජෛව ලක්ෂණ පිළිබඳ සංවේදක දත්ත වෙත පිවිසෙන්න"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"<b><xliff:g id="APP_NAME">%1$s</xliff:g><b> වෙත ඔබගේ ජෛව ලක්ෂණ පිළිබඳ සංවේදක දත්ත වෙත ප්රවේශ වීමට ඉඩ දෙන්නද?"</string>
+ <!-- no translation found for permgrouplab_aural (965607064083134896) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_aural (4870189506255958055) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_aural (6787926123071735620) -->
+ <skip />
+ <!-- no translation found for permgrouplab_visual (8030190588123857921) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_visual (3415827902566663546) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_visual (6907523945030290376) -->
+ <skip />
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"කවුළු අන්න්තර්ගතය ලබාගන්න"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"ඔබ අන්තර්ක්රියාකාරී වන කවුළුවේ අන්තර්ගතය පරීක්ෂා කරන්න."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"ස්පර්ශයෙන් ගවේෂණය සක්රිය කරන්න"</string>
@@ -494,6 +506,34 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"ඇඟිලි සලකුණු සැකිලි එකතු කිරීමට සහ ඉවත් කිරීමට අදාළ විධික්රම භාවිතය සඳහා මෙම යෙදුමට අවසර දෙයි."</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"ඇඟිලි සලකුණු දෘඩාංග භාවිතා කරන්න."</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"අනන්යතාවය තහවුරු කරගැනීමට ඇඟිලි සලකුණු දෘඩාංග භාවිතා කිරීමට මෙම යෙදුමට ඉඩ දෙන්න."</string>
+ <!-- no translation found for permlab_audioRead (6617225220728465565) -->
+ <skip />
+ <!-- no translation found for permdesc_audioRead (5034032570243484805) -->
+ <skip />
+ <!-- no translation found for permlab_audioWrite (2661772059799779292) -->
+ <skip />
+ <!-- no translation found for permdesc_audioWrite (8888544708166230494) -->
+ <skip />
+ <!-- no translation found for permlab_videoRead (9182618678674737229) -->
+ <skip />
+ <!-- no translation found for permdesc_videoRead (7045676429859396194) -->
+ <skip />
+ <!-- no translation found for permlab_videoWrite (128769316366746446) -->
+ <skip />
+ <!-- no translation found for permdesc_videoWrite (5448565757490640841) -->
+ <skip />
+ <!-- no translation found for permlab_imagesRead (3015078545742665304) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesRead (3144263806038695580) -->
+ <skip />
+ <!-- no translation found for permlab_imagesWrite (3391306186247235510) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesWrite (7073662756617474375) -->
+ <skip />
+ <!-- no translation found for permlab_mediaLocation (8675148183726247864) -->
+ <skip />
+ <!-- no translation found for permdesc_mediaLocation (2237023389178865130) -->
+ <skip />
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"ඇඟිලි සලකුණ අඩ වශයෙන් අනාවරණය කර ගැනිණි. කරුණාකර නැවත උත්සාහ කරන්න."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"ඇඟිලි සලකුණ පිරිසැකසීමට නොහැකි විය. කරුණාකර නැවත උත්සාහ කරන්න."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"ඇඟිලි සලකුණු සංවේදකය අපිරිසිදුයි. කරුණාකර පිරිසිදු කර නැවත උත්සාහ කරන්න."</string>
@@ -1874,8 +1914,18 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"<xliff:g id="TYPE">%1$s</xliff:g> <b><xliff:g id="LABEL">%2$s</xliff:g></b> වෙත සුරකින්නද?"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"<xliff:g id="TYPE_0">%1$s</xliff:g> සහ <xliff:g id="TYPE_1">%2$s</xliff:g> <b><xliff:g id="LABEL">%3$s</xliff:g></b> වෙත සුරකින්නද?"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"<xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g>, සහ <xliff:g id="TYPE_2">%3$s</xliff:g> <b><xliff:g id="LABEL">%4$s</xliff:g></b> වෙත සුරකින්නද?"</string>
+ <!-- no translation found for autofill_update_title (4879673117448810818) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_type (339733442087186755) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) -->
+ <skip />
<string name="autofill_save_yes" msgid="6398026094049005921">"සුරකින්න"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"එපා ස්තූතියි"</string>
+ <!-- no translation found for autofill_update_yes (310358413273276958) -->
+ <skip />
<string name="autofill_save_type_password" msgid="5288448918465971568">"මුරපදය"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"ලිපිනය"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"ණය කාඩ්පත"</string>
diff --git a/core/res/res/values-sk/strings.xml b/core/res/res/values-sk/strings.xml
index 3f2f46d..f46771a 100644
--- a/core/res/res/values-sk/strings.xml
+++ b/core/res/res/values-sk/strings.xml
@@ -306,6 +306,18 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"Telesné senzory"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"prístup k dátam senzorov vašich životných funkcií"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"Povoliť aplikácii <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> používať údaje senzorov o vašich životných funkciách?"</string>
+ <!-- no translation found for permgrouplab_aural (965607064083134896) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_aural (4870189506255958055) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_aural (6787926123071735620) -->
+ <skip />
+ <!-- no translation found for permgrouplab_visual (8030190588123857921) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_visual (3415827902566663546) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_visual (6907523945030290376) -->
+ <skip />
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Načítať obsah okna"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Môžete preskúmať obsah okna, s ktorým pracujete."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Zapnúť funkciu Preskúmanie dotykom"</string>
@@ -500,6 +512,34 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"Umožňuje aplikácii zavolať metódy, ktoré pridávajú a odstraňujú vzory odtlačkov prstov."</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"použiť hardvér na snímanie odtlačkov prstov"</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"Umožňuje aplikácii používať na overenie totožnosti hardvér na snímanie odtlačkov prstov."</string>
+ <!-- no translation found for permlab_audioRead (6617225220728465565) -->
+ <skip />
+ <!-- no translation found for permdesc_audioRead (5034032570243484805) -->
+ <skip />
+ <!-- no translation found for permlab_audioWrite (2661772059799779292) -->
+ <skip />
+ <!-- no translation found for permdesc_audioWrite (8888544708166230494) -->
+ <skip />
+ <!-- no translation found for permlab_videoRead (9182618678674737229) -->
+ <skip />
+ <!-- no translation found for permdesc_videoRead (7045676429859396194) -->
+ <skip />
+ <!-- no translation found for permlab_videoWrite (128769316366746446) -->
+ <skip />
+ <!-- no translation found for permdesc_videoWrite (5448565757490640841) -->
+ <skip />
+ <!-- no translation found for permlab_imagesRead (3015078545742665304) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesRead (3144263806038695580) -->
+ <skip />
+ <!-- no translation found for permlab_imagesWrite (3391306186247235510) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesWrite (7073662756617474375) -->
+ <skip />
+ <!-- no translation found for permlab_mediaLocation (8675148183726247864) -->
+ <skip />
+ <!-- no translation found for permdesc_mediaLocation (2237023389178865130) -->
+ <skip />
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Podarilo sa rozpoznať iba časť odtlačku prsta. Skúste to znova."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Odtlačok prsta sa nepodarilo spracovať. Skúste to znova."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Snímač odtlačkov je špinavý. Vyčistite ho a skúste to znova."</string>
@@ -1942,8 +1982,18 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"Uložiť <xliff:g id="TYPE">%1$s</xliff:g> do služby <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Uložiť <xliff:g id="TYPE_0">%1$s</xliff:g> a <xliff:g id="TYPE_1">%2$s</xliff:g> do služby <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Uložiť <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> a <xliff:g id="TYPE_2">%3$s</xliff:g> do služby <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string>
+ <!-- no translation found for autofill_update_title (4879673117448810818) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_type (339733442087186755) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) -->
+ <skip />
<string name="autofill_save_yes" msgid="6398026094049005921">"Uložiť"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"Nie, vďaka"</string>
+ <!-- no translation found for autofill_update_yes (310358413273276958) -->
+ <skip />
<string name="autofill_save_type_password" msgid="5288448918465971568">"heslo"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"adresa"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"kreditná karta"</string>
diff --git a/core/res/res/values-sl/strings.xml b/core/res/res/values-sl/strings.xml
index 90ab23b..0f9d038 100644
--- a/core/res/res/values-sl/strings.xml
+++ b/core/res/res/values-sl/strings.xml
@@ -306,6 +306,12 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"Tipala telesnih funkcij"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"dostop do podatkov tipala o vaših vitalnih znakih"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"Želite aplikaciji <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> omogočiti dostop do podatkov tipala o vitalnih znakih?"</string>
+ <string name="permgrouplab_aural" msgid="965607064083134896">"Glasba"</string>
+ <string name="permgroupdesc_aural" msgid="4870189506255958055">"dostop do glasbe"</string>
+ <string name="permgrouprequest_aural" msgid="6787926123071735620">"Želite aplikaciji <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> omogočiti dostop do glasbe?"</string>
+ <string name="permgrouplab_visual" msgid="8030190588123857921">"Fotografije in videoposnetki"</string>
+ <string name="permgroupdesc_visual" msgid="3415827902566663546">"dostop do fotografij in videoposnetkov"</string>
+ <string name="permgrouprequest_visual" msgid="6907523945030290376">"Želite aplikaciji <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> omogočiti dostop do fotografij in videoposnetkov?"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Pridobiti vsebino okna"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Preverjanje vsebine okna, ki ga uporabljate."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Vklopiti raziskovanje z dotikom"</string>
@@ -500,6 +506,20 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"Aplikaciji omogoča sprožanje načinov za dodajanje in brisanje predlog s prstnimi odtisi za uporabo."</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"uporaba strojne opreme za prstne odtise"</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"Aplikaciji omogoča uporabo strojne opreme za prstne odtise za preverjanje pristnosti"</string>
+ <string name="permlab_audioRead" msgid="6617225220728465565">"branje glasbene zbirke"</string>
+ <string name="permdesc_audioRead" msgid="5034032570243484805">"Aplikaciji omogoča branje glasbene zbirke."</string>
+ <string name="permlab_audioWrite" msgid="2661772059799779292">"spreminjanje glasbene zbirke"</string>
+ <string name="permdesc_audioWrite" msgid="8888544708166230494">"Aplikaciji omogoča spreminjanje glasbene zbirke."</string>
+ <string name="permlab_videoRead" msgid="9182618678674737229">"branje zbirke videoposnetkov"</string>
+ <string name="permdesc_videoRead" msgid="7045676429859396194">"Aplikaciji omogoča branje zbirke videoposnetkov."</string>
+ <string name="permlab_videoWrite" msgid="128769316366746446">"spreminjanje zbirke videoposnetkov"</string>
+ <string name="permdesc_videoWrite" msgid="5448565757490640841">"Aplikaciji omogoča spreminjanje zbirke videoposnetkov."</string>
+ <string name="permlab_imagesRead" msgid="3015078545742665304">"branje zbirke fotografij"</string>
+ <string name="permdesc_imagesRead" msgid="3144263806038695580">"Aplikaciji omogoča branje zbirke fotografij."</string>
+ <string name="permlab_imagesWrite" msgid="3391306186247235510">"spreminjanje zbirke fotografij"</string>
+ <string name="permdesc_imagesWrite" msgid="7073662756617474375">"Aplikaciji omogoča spreminjanje zbirke fotografij."</string>
+ <string name="permlab_mediaLocation" msgid="8675148183726247864">"branje lokacij v predstavnostni zbirki"</string>
+ <string name="permdesc_mediaLocation" msgid="2237023389178865130">"Aplikaciji omogoča branje lokacij v predstavnostni zbirki."</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Zaznan delni prstni odtis. Poskusite znova."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Prstnega odtisa ni bilo mogoče obdelati. Poskusite znova."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Tipalo prstnih odtisov je umazano. Očistite ga in poskusite znova."</string>
@@ -1942,8 +1962,13 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"Želite <xliff:g id="TYPE">%1$s</xliff:g> shraniti pod oznako <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Želite <xliff:g id="TYPE_0">%1$s</xliff:g> in <xliff:g id="TYPE_1">%2$s</xliff:g> shraniti pod oznako <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Želite <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> in <xliff:g id="TYPE_2">%3$s</xliff:g> shraniti pod oznako <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string>
+ <string name="autofill_update_title" msgid="4879673117448810818">"Želite posodobiti na oznako <b><xliff:g id="LABEL">%1$s</xliff:g></b>?"</string>
+ <string name="autofill_update_title_with_type" msgid="339733442087186755">"Želite <xliff:g id="TYPE">%1$s</xliff:g> posodobiti na oznako <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string>
+ <string name="autofill_update_title_with_2types" msgid="6321714204167424745">"Želite <xliff:g id="TYPE_0">%1$s</xliff:g> in <xliff:g id="TYPE_1">%2$s</xliff:g> posodobiti na oznako <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string>
+ <string name="autofill_update_title_with_3types" msgid="5866735124066629287">"Želite <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> in <xliff:g id="TYPE_2">%3$s</xliff:g> posodobiti na oznako <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string>
<string name="autofill_save_yes" msgid="6398026094049005921">"Shrani"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"Ne, hvala"</string>
+ <string name="autofill_update_yes" msgid="310358413273276958">"Posodobi"</string>
<string name="autofill_save_type_password" msgid="5288448918465971568">"geslo"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"naslov"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"kreditno kartico"</string>
diff --git a/core/res/res/values-sq/strings.xml b/core/res/res/values-sq/strings.xml
index bb42da4..15888fb 100644
--- a/core/res/res/values-sq/strings.xml
+++ b/core/res/res/values-sq/strings.xml
@@ -300,6 +300,18 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"Sensorët e trupit"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"qasu tek të dhënat e sensorëve rreth shenjave të tua jetësore"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"Të lejohet që <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> të ketë qasje te të dhënat e sensorëve rreth shenjave të tua jetësore?"</string>
+ <!-- no translation found for permgrouplab_aural (965607064083134896) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_aural (4870189506255958055) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_aural (6787926123071735620) -->
+ <skip />
+ <!-- no translation found for permgrouplab_visual (8030190588123857921) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_visual (3415827902566663546) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_visual (6907523945030290376) -->
+ <skip />
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Nxjerrë përmbajtjen e dritares"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Inspekton përmbajtjen e dritares me të cilën po ndërvepron."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Aktivizojë funksionin \"Eksploro me prekje\""</string>
@@ -494,6 +506,34 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"E lejon aplikacionin që të aktivizojë metoda për të shtuar dhe për të fshirë shabllonet e gjurmës së gishtit për përdorim."</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"përdor harduerin e gjurmës së gishtit"</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"E lejon aplikacionin që të përdorë harduerin e gjurmës së gishtit për verifikim"</string>
+ <!-- no translation found for permlab_audioRead (6617225220728465565) -->
+ <skip />
+ <!-- no translation found for permdesc_audioRead (5034032570243484805) -->
+ <skip />
+ <!-- no translation found for permlab_audioWrite (2661772059799779292) -->
+ <skip />
+ <!-- no translation found for permdesc_audioWrite (8888544708166230494) -->
+ <skip />
+ <!-- no translation found for permlab_videoRead (9182618678674737229) -->
+ <skip />
+ <!-- no translation found for permdesc_videoRead (7045676429859396194) -->
+ <skip />
+ <!-- no translation found for permlab_videoWrite (128769316366746446) -->
+ <skip />
+ <!-- no translation found for permdesc_videoWrite (5448565757490640841) -->
+ <skip />
+ <!-- no translation found for permlab_imagesRead (3015078545742665304) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesRead (3144263806038695580) -->
+ <skip />
+ <!-- no translation found for permlab_imagesWrite (3391306186247235510) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesWrite (7073662756617474375) -->
+ <skip />
+ <!-- no translation found for permlab_mediaLocation (8675148183726247864) -->
+ <skip />
+ <!-- no translation found for permdesc_mediaLocation (2237023389178865130) -->
+ <skip />
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"U zbulua një gjurmë gishti e pjesshme. Provo përsëri."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Gjurma e gishtit nuk mund të përpunohej. Provo përsëri."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Sensori i gjurmës së gishtit nuk është i pastër. Pastroje dhe provo përsëri."</string>
@@ -1873,8 +1913,18 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"Të ruhet <xliff:g id="TYPE">%1$s</xliff:g> te <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Të ruhen <xliff:g id="TYPE_0">%1$s</xliff:g> dhe <xliff:g id="TYPE_1">%2$s</xliff:g> te <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Të ruhen <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> dhe <xliff:g id="TYPE_2">%3$s</xliff:g> te <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string>
+ <!-- no translation found for autofill_update_title (4879673117448810818) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_type (339733442087186755) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) -->
+ <skip />
<string name="autofill_save_yes" msgid="6398026094049005921">"Ruaj"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"Jo, faleminderit"</string>
+ <!-- no translation found for autofill_update_yes (310358413273276958) -->
+ <skip />
<string name="autofill_save_type_password" msgid="5288448918465971568">"fjalëkalimi"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"adresa"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"karta e kreditit"</string>
diff --git a/core/res/res/values-sr/strings.xml b/core/res/res/values-sr/strings.xml
index fa1dc59..4c86605 100644
--- a/core/res/res/values-sr/strings.xml
+++ b/core/res/res/values-sr/strings.xml
@@ -303,6 +303,18 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"Сензори за тело"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"приступа подацима сензора о виталним функцијама"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"Желите ли да омогућите да <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>приступа подацима сензора о виталним функцијама?"</string>
+ <!-- no translation found for permgrouplab_aural (965607064083134896) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_aural (4870189506255958055) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_aural (6787926123071735620) -->
+ <skip />
+ <!-- no translation found for permgrouplab_visual (8030190588123857921) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_visual (3415827902566663546) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_visual (6907523945030290376) -->
+ <skip />
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"да преузима садржај прозора"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Проверава садржај прозора са којим остварујете интеракцију."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"да укључи Истраживања додиром"</string>
@@ -497,6 +509,34 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"Дозвољава апликацији да активира методе за додавање и брисање шаблона отисака прстију који ће се користити."</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"користи хардвер за отиске прстију"</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"Дозвољава апликацији да користи хардвер за отиске прстију ради потврде аутентичности"</string>
+ <!-- no translation found for permlab_audioRead (6617225220728465565) -->
+ <skip />
+ <!-- no translation found for permdesc_audioRead (5034032570243484805) -->
+ <skip />
+ <!-- no translation found for permlab_audioWrite (2661772059799779292) -->
+ <skip />
+ <!-- no translation found for permdesc_audioWrite (8888544708166230494) -->
+ <skip />
+ <!-- no translation found for permlab_videoRead (9182618678674737229) -->
+ <skip />
+ <!-- no translation found for permdesc_videoRead (7045676429859396194) -->
+ <skip />
+ <!-- no translation found for permlab_videoWrite (128769316366746446) -->
+ <skip />
+ <!-- no translation found for permdesc_videoWrite (5448565757490640841) -->
+ <skip />
+ <!-- no translation found for permlab_imagesRead (3015078545742665304) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesRead (3144263806038695580) -->
+ <skip />
+ <!-- no translation found for permlab_imagesWrite (3391306186247235510) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesWrite (7073662756617474375) -->
+ <skip />
+ <!-- no translation found for permlab_mediaLocation (8675148183726247864) -->
+ <skip />
+ <!-- no translation found for permdesc_mediaLocation (2237023389178865130) -->
+ <skip />
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Откривен је делимични отисак прста. Пробајте поново."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Није успела обрада отиска прста. Пробајте поново."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Сензор за отиске прстију је прљав. Очистите га и покушајте поново."</string>
@@ -1907,8 +1947,18 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"Желите ли да сачувате ставку <xliff:g id="TYPE">%1$s</xliff:g> у: <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Желите ли да сачувате ставке <xliff:g id="TYPE_0">%1$s</xliff:g> и <xliff:g id="TYPE_1">%2$s</xliff:g> у: <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Желите ли да сачувате ставке <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> и <xliff:g id="TYPE_2">%3$s</xliff:g> у: <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string>
+ <!-- no translation found for autofill_update_title (4879673117448810818) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_type (339733442087186755) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) -->
+ <skip />
<string name="autofill_save_yes" msgid="6398026094049005921">"Сачувај"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"Не, хвала"</string>
+ <!-- no translation found for autofill_update_yes (310358413273276958) -->
+ <skip />
<string name="autofill_save_type_password" msgid="5288448918465971568">"лозинка"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"адреса"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"кредитна картица"</string>
diff --git a/core/res/res/values-sv/strings.xml b/core/res/res/values-sv/strings.xml
index 7b9005c50..1f3efe0 100644
--- a/core/res/res/values-sv/strings.xml
+++ b/core/res/res/values-sv/strings.xml
@@ -300,6 +300,18 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"Kroppssensorer"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"få åtkomst till sensordata om dina vitalparametrar"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"Vill du ge <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> åtkomst till sensordata om vitalparametrar?"</string>
+ <!-- no translation found for permgrouplab_aural (965607064083134896) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_aural (4870189506255958055) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_aural (6787926123071735620) -->
+ <skip />
+ <!-- no translation found for permgrouplab_visual (8030190588123857921) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_visual (3415827902566663546) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_visual (6907523945030290376) -->
+ <skip />
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Hämta fönsterinnehåll"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Granska innehållet i ett fönster som du interagerar med."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Aktivera Explore by touch"</string>
@@ -494,6 +506,34 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"Tillåter att appen anropar metoder för att lägga till och radera fingeravtrycksmallar."</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"använda maskinvara för fingeravtryck"</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"Tillåter att appen använder maskinvara för fingeravtryck vid autentisering"</string>
+ <!-- no translation found for permlab_audioRead (6617225220728465565) -->
+ <skip />
+ <!-- no translation found for permdesc_audioRead (5034032570243484805) -->
+ <skip />
+ <!-- no translation found for permlab_audioWrite (2661772059799779292) -->
+ <skip />
+ <!-- no translation found for permdesc_audioWrite (8888544708166230494) -->
+ <skip />
+ <!-- no translation found for permlab_videoRead (9182618678674737229) -->
+ <skip />
+ <!-- no translation found for permdesc_videoRead (7045676429859396194) -->
+ <skip />
+ <!-- no translation found for permlab_videoWrite (128769316366746446) -->
+ <skip />
+ <!-- no translation found for permdesc_videoWrite (5448565757490640841) -->
+ <skip />
+ <!-- no translation found for permlab_imagesRead (3015078545742665304) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesRead (3144263806038695580) -->
+ <skip />
+ <!-- no translation found for permlab_imagesWrite (3391306186247235510) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesWrite (7073662756617474375) -->
+ <skip />
+ <!-- no translation found for permlab_mediaLocation (8675148183726247864) -->
+ <skip />
+ <!-- no translation found for permdesc_mediaLocation (2237023389178865130) -->
+ <skip />
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Ofullständigt fingeravtryck. Försök igen."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Det gick inte att bearbeta fingeravtrycket. Försök igen."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Fingeravtryckssensorn är smutsig. Rengör den och försök igen."</string>
@@ -1872,8 +1912,18 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"Vill du spara <xliff:g id="TYPE">%1$s</xliff:g> i <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Vill du spara <xliff:g id="TYPE_0">%1$s</xliff:g> och <xliff:g id="TYPE_1">%2$s</xliff:g> i <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Vill du spara <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> och <xliff:g id="TYPE_2">%3$s</xliff:g> i <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string>
+ <!-- no translation found for autofill_update_title (4879673117448810818) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_type (339733442087186755) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) -->
+ <skip />
<string name="autofill_save_yes" msgid="6398026094049005921">"Spara"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"Nej tack"</string>
+ <!-- no translation found for autofill_update_yes (310358413273276958) -->
+ <skip />
<string name="autofill_save_type_password" msgid="5288448918465971568">"lösenordet"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"adressen"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"kreditkortet"</string>
diff --git a/core/res/res/values-sw/strings.xml b/core/res/res/values-sw/strings.xml
index 9d8790d..5a7dcca 100644
--- a/core/res/res/values-sw/strings.xml
+++ b/core/res/res/values-sw/strings.xml
@@ -298,6 +298,12 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"Vihisi vya Mwili"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"fikia data ya kitambuzi kuhusu alama zako muhimu"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"Ungependa kuiruhusu <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ifikie data ya vitambuzi kuhusu viashiria muhimu vya mwili wako?"</string>
+ <string name="permgrouplab_aural" msgid="965607064083134896">"Muziki"</string>
+ <string name="permgroupdesc_aural" msgid="4870189506255958055">"kufikia muziki wako"</string>
+ <string name="permgrouprequest_aural" msgid="6787926123071735620">"Ungependa kuiruhusu <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ifikie muziki wako?"</string>
+ <string name="permgrouplab_visual" msgid="8030190588123857921">"Picha na Video"</string>
+ <string name="permgroupdesc_visual" msgid="3415827902566663546">"kufikia picha na video zako"</string>
+ <string name="permgrouprequest_visual" msgid="6907523945030290376">"Ungependa kuruhusu <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ifikie picha na video zako?"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Kufikia maudhui ya dirisha"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Kuchunguza maudhui ya dirisha unalotumia."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Kuwasha \'Chunguza kwa Kugusa\'"</string>
@@ -492,6 +498,20 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"Huruhusu programu kuomba njia za kuongeza na kufuta violezo vya kitambulisho kwa matumizi."</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"tumia maunzi ya kitambulisho"</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"Huruhusu programu kutumia maunzi ya kitambulisho kwa uthibitisho"</string>
+ <string name="permlab_audioRead" msgid="6617225220728465565">"kusoma mkusanyiko muziki wako"</string>
+ <string name="permdesc_audioRead" msgid="5034032570243484805">"Inaruhusu programu kusoma mkusanyiko wa muziki wako."</string>
+ <string name="permlab_audioWrite" msgid="2661772059799779292">"kubadilisha mkusanyiko wa muziki wako"</string>
+ <string name="permdesc_audioWrite" msgid="8888544708166230494">"Inaruhusu programu kubadilisha mkusanyiko wa muziki wako."</string>
+ <string name="permlab_videoRead" msgid="9182618678674737229">"kusoma mkusanyiko wa video zako"</string>
+ <string name="permdesc_videoRead" msgid="7045676429859396194">"Inaruhusu programu kusoma mkusanyiko wa video zako."</string>
+ <string name="permlab_videoWrite" msgid="128769316366746446">"kubadilisha mkusanyiko wa video zako"</string>
+ <string name="permdesc_videoWrite" msgid="5448565757490640841">"Inaruhusu programu kubadilisha mkusanyiko wa video zako."</string>
+ <string name="permlab_imagesRead" msgid="3015078545742665304">"kusoma mkusanyiko wa picha zako"</string>
+ <string name="permdesc_imagesRead" msgid="3144263806038695580">"Inaruhusu programu kusoma mkusanyiko wa picha zako."</string>
+ <string name="permlab_imagesWrite" msgid="3391306186247235510">"kubadilisha mkusanyiko wa picha zako"</string>
+ <string name="permdesc_imagesWrite" msgid="7073662756617474375">"Inaruhusu programu kubadilisha mkusanyiko wa picha zako."</string>
+ <string name="permlab_mediaLocation" msgid="8675148183726247864">"kusoma maeneo kwenye mkusanyiko wa vipengee vyako"</string>
+ <string name="permdesc_mediaLocation" msgid="2237023389178865130">"Inaruhusu programu kusoma maeneo kwenye mkusanyiko wa vipengee vyako."</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Kitambuzi kimegundua sehemu ya kitambulisho. Tafadhali jaribu tena."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Haikuweza kuchakata kitambulisho. Tafadhali jaribu tena."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Kitambuzi alama ya kidole ni kichafu. Tafadhali kisafishe na ujaribu tena."</string>
@@ -1870,8 +1890,13 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"Ungependa kuhifadhi <xliff:g id="TYPE">%1$s</xliff:g> kwenye <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Ungependa kuhifadhi <xliff:g id="TYPE_0">%1$s</xliff:g> na <xliff:g id="TYPE_1">%2$s</xliff:g> kwenye <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Ungependa kuhifadhi <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g>, na <xliff:g id="TYPE_2">%3$s</xliff:g> kwenye <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string>
+ <string name="autofill_update_title" msgid="4879673117448810818">"Ungependa kusasisha kuwa <b><xliff:g id="LABEL">%1$s</xliff:g></b>?"</string>
+ <string name="autofill_update_title_with_type" msgid="339733442087186755">"Ungependa kusasisha <xliff:g id="TYPE">%1$s</xliff:g> kuwa <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string>
+ <string name="autofill_update_title_with_2types" msgid="6321714204167424745">"Ungependa kusasisha <xliff:g id="TYPE_0">%1$s</xliff:g> na <xliff:g id="TYPE_1">%2$s</xliff:g> kuwa <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string>
+ <string name="autofill_update_title_with_3types" msgid="5866735124066629287">"Ungependa kusasisha <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> na <xliff:g id="TYPE_2">%3$s</xliff:g> kuwa <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string>
<string name="autofill_save_yes" msgid="6398026094049005921">"Hifadhi"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"Hapana, asante"</string>
+ <string name="autofill_update_yes" msgid="310358413273276958">"Sasisha"</string>
<string name="autofill_save_type_password" msgid="5288448918465971568">"nenosiri"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"anwani"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"kadi ya mikopo"</string>
diff --git a/core/res/res/values-ta/strings.xml b/core/res/res/values-ta/strings.xml
index f390445..00143b9 100644
--- a/core/res/res/values-ta/strings.xml
+++ b/core/res/res/values-ta/strings.xml
@@ -300,6 +300,18 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"உடல் சென்சார்கள்"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"உங்கள் உடல் இயக்கம் பற்றி உணர்விகள் கூறும் தகவலைப் பார்க்கலாம்"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"உங்கள் உடலியக்கக் குறிகள் பற்றிய சென்சார் தரவை அணுகுவதற்கு <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> பயன்பாட்டை அனுமதிக்கவா?"</string>
+ <!-- no translation found for permgrouplab_aural (965607064083134896) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_aural (4870189506255958055) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_aural (6787926123071735620) -->
+ <skip />
+ <!-- no translation found for permgrouplab_visual (8030190588123857921) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_visual (3415827902566663546) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_visual (6907523945030290376) -->
+ <skip />
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"சாளர உள்ளடக்கத்தைப் பெறும்"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"நீங்கள் பணியாற்றிக் கொண்டிருக்கும் சாளரத்தின் உள்ளடக்கத்தைப் பார்க்கலாம்."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"தொடுவதன் மூலம் அறிவதை இயக்கும்"</string>
@@ -494,6 +506,34 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"பயன்படுத்துவதற்காக, கைரேகை டெம்ப்ளேட்களைச் சேர்க்க மற்றும் நீக்குவதற்கான செயல்முறைகளை இயக்குவதற்குப் பயன்பாட்டை அனுமதிக்கும்."</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"கைரேகை வன்பொருளைப் பயன்படுத்து"</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"அங்கீகரிப்பதற்கு, கைரேகை வன்பொருளைப் பயன்படுத்த, பயன்பாட்டை அனுமதிக்கும்"</string>
+ <!-- no translation found for permlab_audioRead (6617225220728465565) -->
+ <skip />
+ <!-- no translation found for permdesc_audioRead (5034032570243484805) -->
+ <skip />
+ <!-- no translation found for permlab_audioWrite (2661772059799779292) -->
+ <skip />
+ <!-- no translation found for permdesc_audioWrite (8888544708166230494) -->
+ <skip />
+ <!-- no translation found for permlab_videoRead (9182618678674737229) -->
+ <skip />
+ <!-- no translation found for permdesc_videoRead (7045676429859396194) -->
+ <skip />
+ <!-- no translation found for permlab_videoWrite (128769316366746446) -->
+ <skip />
+ <!-- no translation found for permdesc_videoWrite (5448565757490640841) -->
+ <skip />
+ <!-- no translation found for permlab_imagesRead (3015078545742665304) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesRead (3144263806038695580) -->
+ <skip />
+ <!-- no translation found for permlab_imagesWrite (3391306186247235510) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesWrite (7073662756617474375) -->
+ <skip />
+ <!-- no translation found for permlab_mediaLocation (8675148183726247864) -->
+ <skip />
+ <!-- no translation found for permdesc_mediaLocation (2237023389178865130) -->
+ <skip />
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"கைரேகையை ஓரளவுதான் கண்டறிய முடிந்தது. மீண்டும் முயலவும்."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"கைரேகையைச் செயலாக்க முடியவில்லை. மீண்டும் முயலவும்."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"கைரேகை உணர்வியில் தூசி உள்ளது. சுத்தம் செய்து, முயலவும்."</string>
@@ -1873,8 +1913,18 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"<xliff:g id="TYPE">%1$s</xliff:g>ஐ <b><xliff:g id="LABEL">%2$s</xliff:g></b> இல் சேமிக்கவா?"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"<xliff:g id="TYPE_0">%1$s</xliff:g> மற்றும் <xliff:g id="TYPE_1">%2$s</xliff:g>ஐ <b><xliff:g id="LABEL">%3$s</xliff:g></b> இல் சேமிக்கவா?"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"<xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g>, <xliff:g id="TYPE_2">%3$s</xliff:g> ஆகியவற்றை <b><xliff:g id="LABEL">%4$s</xliff:g></b> இல் சேமிக்கவா?"</string>
+ <!-- no translation found for autofill_update_title (4879673117448810818) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_type (339733442087186755) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) -->
+ <skip />
<string name="autofill_save_yes" msgid="6398026094049005921">"சேமி"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"வேண்டாம்"</string>
+ <!-- no translation found for autofill_update_yes (310358413273276958) -->
+ <skip />
<string name="autofill_save_type_password" msgid="5288448918465971568">"கடவுச்சொல்"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"முகவரி"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"கிரெடிட் கார்டு"</string>
diff --git a/core/res/res/values-te/strings.xml b/core/res/res/values-te/strings.xml
index 98b737f..e3f089a 100644
--- a/core/res/res/values-te/strings.xml
+++ b/core/res/res/values-te/strings.xml
@@ -300,6 +300,18 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"శరీర సెన్సార్లు"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"మీ అత్యంత కీలకమైన గుర్తుల గురించి సెన్సార్ డేటాని యాక్సెస్ చేస్తుంది"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"మీ అత్యంత కీలకమైన గుర్తుల గురించి సెన్సార్ డేటాని యాక్సెస్ చేయడానికి <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>ని అనుమతించాలా?"</string>
+ <!-- no translation found for permgrouplab_aural (965607064083134896) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_aural (4870189506255958055) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_aural (6787926123071735620) -->
+ <skip />
+ <!-- no translation found for permgrouplab_visual (8030190588123857921) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_visual (3415827902566663546) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_visual (6907523945030290376) -->
+ <skip />
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"విండో కంటెంట్ను తిరిగి పొందుతుంది"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"మీరు పరస్పర చర్య చేస్తున్న విండో కంటెంట్ను పరిశీలిస్తుంది."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"తాకడం ద్వారా విశ్లేషణను ప్రారంభిస్తుంది"</string>
@@ -494,6 +506,34 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"వినియోగం కోసం వేలిముద్ర టెంప్లేట్లను జోడించే మరియు తొలగించే పద్ధతులను అమలు చేయడానికి యాప్ను అనుమతిస్తుంది."</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"వేలిముద్ర హార్డ్వేర్ని ఉపయోగించడానికి అనుమతి"</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"ప్రామాణీకరణ కోసం వేలిముద్ర హార్డ్వేర్ను ఉపయోగించడానికి అనువర్తనాన్ని అనుమతిస్తుంది"</string>
+ <!-- no translation found for permlab_audioRead (6617225220728465565) -->
+ <skip />
+ <!-- no translation found for permdesc_audioRead (5034032570243484805) -->
+ <skip />
+ <!-- no translation found for permlab_audioWrite (2661772059799779292) -->
+ <skip />
+ <!-- no translation found for permdesc_audioWrite (8888544708166230494) -->
+ <skip />
+ <!-- no translation found for permlab_videoRead (9182618678674737229) -->
+ <skip />
+ <!-- no translation found for permdesc_videoRead (7045676429859396194) -->
+ <skip />
+ <!-- no translation found for permlab_videoWrite (128769316366746446) -->
+ <skip />
+ <!-- no translation found for permdesc_videoWrite (5448565757490640841) -->
+ <skip />
+ <!-- no translation found for permlab_imagesRead (3015078545742665304) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesRead (3144263806038695580) -->
+ <skip />
+ <!-- no translation found for permlab_imagesWrite (3391306186247235510) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesWrite (7073662756617474375) -->
+ <skip />
+ <!-- no translation found for permlab_mediaLocation (8675148183726247864) -->
+ <skip />
+ <!-- no translation found for permdesc_mediaLocation (2237023389178865130) -->
+ <skip />
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"పాక్షిక వేలిముద్ర గుర్తించబడింది. దయచేసి మళ్లీ ప్రయత్నించండి."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"వేలిముద్రను ప్రాసెస్ చేయడం సాధ్యపడలేదు. దయచేసి మళ్లీ ప్రయత్నించండి."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"వేలిముద్ర సెన్సార్ మురికిగా ఉంది. దయచేసి శుభ్రపరిచి, మళ్లీ ప్రయత్నించండి."</string>
@@ -1873,8 +1913,18 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"<xliff:g id="TYPE">%1$s</xliff:g>ని <b><xliff:g id="LABEL">%2$s</xliff:g></b>కు సేవ్ చేయాలా?"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"<xliff:g id="TYPE_0">%1$s</xliff:g> మరియు <xliff:g id="TYPE_1">%2$s</xliff:g>లను <b><xliff:g id="LABEL">%3$s</xliff:g></b>కు సేవ్ చేయాలా?"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"<xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> మరియు <xliff:g id="TYPE_2">%3$s</xliff:g>లను <b><xliff:g id="LABEL">%4$s</xliff:g></b>కు సేవ్ చేయాలా?"</string>
+ <!-- no translation found for autofill_update_title (4879673117448810818) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_type (339733442087186755) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) -->
+ <skip />
<string name="autofill_save_yes" msgid="6398026094049005921">"సేవ్ చేయి"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"వద్దు, ధన్యవాదాలు"</string>
+ <!-- no translation found for autofill_update_yes (310358413273276958) -->
+ <skip />
<string name="autofill_save_type_password" msgid="5288448918465971568">"పాస్వర్డ్"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"చిరునామా"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"క్రెడిట్ కార్డ్"</string>
diff --git a/core/res/res/values-th/strings.xml b/core/res/res/values-th/strings.xml
index 89c2e44..5375278 100644
--- a/core/res/res/values-th/strings.xml
+++ b/core/res/res/values-th/strings.xml
@@ -300,6 +300,18 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"เซ็นเซอร์ร่างกาย"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"เข้าถึงข้อมูลเซ็นเซอร์เกี่ยวกับสัญญาณชีพของคุณ"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"อนุญาตให้ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> เข้าถึงข้อมูลเซ็นเซอร์เกี่ยวกับสัญญาณชีพไหม"</string>
+ <!-- no translation found for permgrouplab_aural (965607064083134896) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_aural (4870189506255958055) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_aural (6787926123071735620) -->
+ <skip />
+ <!-- no translation found for permgrouplab_visual (8030190588123857921) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_visual (3415827902566663546) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_visual (6907523945030290376) -->
+ <skip />
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"เรียกข้อมูลเนื้อหาของหน้าต่าง"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"ตรวจสอบเนื้อหาของหน้าต่างที่คุณกำลังโต้ตอบอยู่"</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"เปิด \"แตะเพื่อสำรวจ\""</string>
@@ -494,6 +506,34 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"อนุญาตให้แอปเรียกใช้วิธีการเพื่อเพิ่มและลบเทมเพลตลายนิ้วมือสำหรับการใช้งาน"</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"ใช้ฮาร์ดแวร์ลายนิ้วมือ"</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"อนุญาตให้แอปใช้ฮาร์ดแวร์ลายนิ้วมือเพื่อตรวจสอบสิทธิ์"</string>
+ <!-- no translation found for permlab_audioRead (6617225220728465565) -->
+ <skip />
+ <!-- no translation found for permdesc_audioRead (5034032570243484805) -->
+ <skip />
+ <!-- no translation found for permlab_audioWrite (2661772059799779292) -->
+ <skip />
+ <!-- no translation found for permdesc_audioWrite (8888544708166230494) -->
+ <skip />
+ <!-- no translation found for permlab_videoRead (9182618678674737229) -->
+ <skip />
+ <!-- no translation found for permdesc_videoRead (7045676429859396194) -->
+ <skip />
+ <!-- no translation found for permlab_videoWrite (128769316366746446) -->
+ <skip />
+ <!-- no translation found for permdesc_videoWrite (5448565757490640841) -->
+ <skip />
+ <!-- no translation found for permlab_imagesRead (3015078545742665304) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesRead (3144263806038695580) -->
+ <skip />
+ <!-- no translation found for permlab_imagesWrite (3391306186247235510) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesWrite (7073662756617474375) -->
+ <skip />
+ <!-- no translation found for permlab_mediaLocation (8675148183726247864) -->
+ <skip />
+ <!-- no translation found for permdesc_mediaLocation (2237023389178865130) -->
+ <skip />
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"ตรวจพบลายนิ้วมือเพียงบางส่วน โปรดลองอีกครั้ง"</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"ไม่สามารถประมวลผลลายนิ้วมือได้ โปรดลองอีกครั้ง"</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"เซ็นเซอร์ลายนิ้วมือไม่สะอาด โปรดทำความสะอาดและลองอีกครั้ง"</string>
@@ -1872,8 +1912,18 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"บันทึก <xliff:g id="TYPE">%1$s</xliff:g> ไปยัง <b><xliff:g id="LABEL">%2$s</xliff:g></b> ใช่ไหม"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"บันทึก <xliff:g id="TYPE_0">%1$s</xliff:g> และ <xliff:g id="TYPE_1">%2$s</xliff:g> ไปยัง <b><xliff:g id="LABEL">%3$s</xliff:g></b> ใช่ไหม"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"บันทึก <xliff:g id="TYPE_0">%1$s</xliff:g> <xliff:g id="TYPE_1">%2$s</xliff:g> และ <xliff:g id="TYPE_2">%3$s</xliff:g> ไปยัง <b><xliff:g id="LABEL">%4$s</xliff:g></b> ใช่ไหม"</string>
+ <!-- no translation found for autofill_update_title (4879673117448810818) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_type (339733442087186755) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) -->
+ <skip />
<string name="autofill_save_yes" msgid="6398026094049005921">"บันทึก"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"ไม่เป็นไร"</string>
+ <!-- no translation found for autofill_update_yes (310358413273276958) -->
+ <skip />
<string name="autofill_save_type_password" msgid="5288448918465971568">"รหัสผ่าน"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"ที่อยู่"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"บัตรเครดิต"</string>
diff --git a/core/res/res/values-tl/strings.xml b/core/res/res/values-tl/strings.xml
index 4453309..c4b14f7 100644
--- a/core/res/res/values-tl/strings.xml
+++ b/core/res/res/values-tl/strings.xml
@@ -300,6 +300,12 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"Mga Sensor ng Katawan"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"i-access ang data ng sensor tungkol sa iyong vital signs"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"Payagan ang <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> na i-access ang data ng sensor tungkol sa iyong mga vital sign?"</string>
+ <string name="permgrouplab_aural" msgid="965607064083134896">"Musika"</string>
+ <string name="permgroupdesc_aural" msgid="4870189506255958055">"i-access ang iyong musika"</string>
+ <string name="permgrouprequest_aural" msgid="6787926123071735620">"Payagan ang <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> na i-access ang iyong musika?"</string>
+ <string name="permgrouplab_visual" msgid="8030190588123857921">"Mga Larawan at Video"</string>
+ <string name="permgroupdesc_visual" msgid="3415827902566663546">"i-access ang iyong mga larawan at video"</string>
+ <string name="permgrouprequest_visual" msgid="6907523945030290376">"Payagan ang <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> na i-access ang iyong mga larawan at video?"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Kunin ang content ng window"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Siyasatin ang nilalaman ng isang window kung saan ka nakikipag-ugnayan."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"I-on ang Explore by Touch"</string>
@@ -494,6 +500,20 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"Pinapayagan ang app na mag-invoke ng mga paraan upang magdagdag at mag-delete ng mga template ng fingerprint na magagamit."</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"gamitin ang hardware ng fingerprint"</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"Pinapayagan ang app na gumamit ng hardware ng fingerprint para sa pagpapatotoo"</string>
+ <string name="permlab_audioRead" msgid="6617225220728465565">"basahin ang iyong koleksyon ng musika"</string>
+ <string name="permdesc_audioRead" msgid="5034032570243484805">"Pinapayagan ang app na basahin ang iyong koleksyon ng musika."</string>
+ <string name="permlab_audioWrite" msgid="2661772059799779292">"baguhin ang iyong koleksyon ng musika"</string>
+ <string name="permdesc_audioWrite" msgid="8888544708166230494">"Pinapayagan ang app na baguhin ang iyong koleksyon ng musika."</string>
+ <string name="permlab_videoRead" msgid="9182618678674737229">"basahin ang iyong koleksyon ng video"</string>
+ <string name="permdesc_videoRead" msgid="7045676429859396194">"Pinapayagan ang app na basahin ang iyong koleksyon ng video."</string>
+ <string name="permlab_videoWrite" msgid="128769316366746446">"baguhin ang iyong koleksyon ng video"</string>
+ <string name="permdesc_videoWrite" msgid="5448565757490640841">"Pinapayagan ang app na baguhin ang iyong koleksyon ng video."</string>
+ <string name="permlab_imagesRead" msgid="3015078545742665304">"basahin ang iyong koleksyon ng larawan"</string>
+ <string name="permdesc_imagesRead" msgid="3144263806038695580">"Pinapayagan ang app na basahin ang iyong koleksyon ng larawan."</string>
+ <string name="permlab_imagesWrite" msgid="3391306186247235510">"baguhin ang iyong koleksyon ng larawan"</string>
+ <string name="permdesc_imagesWrite" msgid="7073662756617474375">"Pinapayagan ang app na baguhin ang iyong koleksyon ng larawan."</string>
+ <string name="permlab_mediaLocation" msgid="8675148183726247864">"basahin ang mga lokasyon mula sa iyong koleksyon ng media"</string>
+ <string name="permdesc_mediaLocation" msgid="2237023389178865130">"Pinapayagan ang app na basahin ang mga lokasyon mula sa iyong koleksyon ng media."</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Hindi buo ang natukoy na fingerprint. Pakisubukang muli."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Hindi maproseso ang fingerprint. Pakisubukang muli."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Marumi ang sensor ng fingerprint. Pakilinis at subukang muli."</string>
@@ -1872,8 +1892,13 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"I-save ang <xliff:g id="TYPE">%1$s</xliff:g> sa <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"I-save ang <xliff:g id="TYPE_0">%1$s</xliff:g> at <xliff:g id="TYPE_1">%2$s</xliff:g> sa <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"I-save ang <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g>, at <xliff:g id="TYPE_2">%3$s</xliff:g> sa <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string>
+ <string name="autofill_update_title" msgid="4879673117448810818">"I-update sa <b><xliff:g id="LABEL">%1$s</xliff:g></b>?"</string>
+ <string name="autofill_update_title_with_type" msgid="339733442087186755">"I-update ang <xliff:g id="TYPE">%1$s</xliff:g> sa <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string>
+ <string name="autofill_update_title_with_2types" msgid="6321714204167424745">"I-update ang <xliff:g id="TYPE_0">%1$s</xliff:g> at <xliff:g id="TYPE_1">%2$s</xliff:g> sa <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string>
+ <string name="autofill_update_title_with_3types" msgid="5866735124066629287">"I-update ang <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g>, at <xliff:g id="TYPE_2">%3$s</xliff:g> sa <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string>
<string name="autofill_save_yes" msgid="6398026094049005921">"I-save"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"Hindi, salamat na lang"</string>
+ <string name="autofill_update_yes" msgid="310358413273276958">"I-update"</string>
<string name="autofill_save_type_password" msgid="5288448918465971568">"password"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"address"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"credit card"</string>
diff --git a/core/res/res/values-tr/strings.xml b/core/res/res/values-tr/strings.xml
index 54f92e1..7ed5859 100644
--- a/core/res/res/values-tr/strings.xml
+++ b/core/res/res/values-tr/strings.xml
@@ -300,6 +300,18 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"Vücut Sensörleri"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"hayati belirtilerinizle ilgili sensör verilerine erişme"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> uygulamasının hayati belirtilerinizle ilgili sensör verilerine erişmesine izin verilsin mi?"</string>
+ <!-- no translation found for permgrouplab_aural (965607064083134896) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_aural (4870189506255958055) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_aural (6787926123071735620) -->
+ <skip />
+ <!-- no translation found for permgrouplab_visual (8030190588123857921) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_visual (3415827902566663546) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_visual (6907523945030290376) -->
+ <skip />
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Pencere içeriğini alma"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Etkileşim kurduğunuz pencerenin içeriğini inceler."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Dokunarak Keşfet\'i açma"</string>
@@ -494,6 +506,34 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"Uygulamanın, kullanılacak parmak izi şablonlarını ekleme ve silme yöntemlerini başlatmasına izin verir."</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"parmak izi donanımını kullanma"</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"Uygulamanın kimlik doğrulama için parmak izi donanımını kullanmasına izin verir."</string>
+ <!-- no translation found for permlab_audioRead (6617225220728465565) -->
+ <skip />
+ <!-- no translation found for permdesc_audioRead (5034032570243484805) -->
+ <skip />
+ <!-- no translation found for permlab_audioWrite (2661772059799779292) -->
+ <skip />
+ <!-- no translation found for permdesc_audioWrite (8888544708166230494) -->
+ <skip />
+ <!-- no translation found for permlab_videoRead (9182618678674737229) -->
+ <skip />
+ <!-- no translation found for permdesc_videoRead (7045676429859396194) -->
+ <skip />
+ <!-- no translation found for permlab_videoWrite (128769316366746446) -->
+ <skip />
+ <!-- no translation found for permdesc_videoWrite (5448565757490640841) -->
+ <skip />
+ <!-- no translation found for permlab_imagesRead (3015078545742665304) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesRead (3144263806038695580) -->
+ <skip />
+ <!-- no translation found for permlab_imagesWrite (3391306186247235510) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesWrite (7073662756617474375) -->
+ <skip />
+ <!-- no translation found for permlab_mediaLocation (8675148183726247864) -->
+ <skip />
+ <!-- no translation found for permdesc_mediaLocation (2237023389178865130) -->
+ <skip />
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Parmak izinin tümü algılanamadı. Lütfen tekrar deneyin."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Parmak izi işlenemedi. Lütfen tekrar deneyin."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Parmak izi sensörü kirli. Lütfen temizleyin ve tekrar deneyin."</string>
@@ -1872,8 +1912,18 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"<xliff:g id="TYPE">%1$s</xliff:g>, <b><xliff:g id="LABEL">%2$s</xliff:g></b> hizmetine kaydedilsin mi?"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"<xliff:g id="TYPE_0">%1$s</xliff:g> ve <xliff:g id="TYPE_1">%2$s</xliff:g>, <b><xliff:g id="LABEL">%3$s</xliff:g></b> hizmetine kaydedilsin mi?"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"<xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> ve <xliff:g id="TYPE_2">%3$s</xliff:g>, <b><xliff:g id="LABEL">%4$s</xliff:g></b> hizmetine kaydedilsin mi?"</string>
+ <!-- no translation found for autofill_update_title (4879673117448810818) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_type (339733442087186755) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) -->
+ <skip />
<string name="autofill_save_yes" msgid="6398026094049005921">"Kaydet"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"Hayır, teşekkürler"</string>
+ <!-- no translation found for autofill_update_yes (310358413273276958) -->
+ <skip />
<string name="autofill_save_type_password" msgid="5288448918465971568">"şifre"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"adres"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"kredi kartı"</string>
diff --git a/core/res/res/values-uk/strings.xml b/core/res/res/values-uk/strings.xml
index 6476134..45b8dd4 100644
--- a/core/res/res/values-uk/strings.xml
+++ b/core/res/res/values-uk/strings.xml
@@ -306,6 +306,12 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"Датчики на тілі"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"отримувати доступ до інформації датчиків про ваші життєві показники"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"Надати додатку <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> доступ до життєвих показників із датчиків?"</string>
+ <string name="permgrouplab_aural" msgid="965607064083134896">"Музика"</string>
+ <string name="permgroupdesc_aural" msgid="4870189506255958055">"доступ до музики"</string>
+ <string name="permgrouprequest_aural" msgid="6787926123071735620">"Надати додатку <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> доступ до музики?"</string>
+ <string name="permgrouplab_visual" msgid="8030190588123857921">"Фото й відео"</string>
+ <string name="permgroupdesc_visual" msgid="3415827902566663546">"доступ до фото й відео"</string>
+ <string name="permgrouprequest_visual" msgid="6907523945030290376">"Надати додатку <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> доступ до фото й відео?"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Отримувати вміст вікна"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Перевіряти вміст вікна, з яким ви взаємодієте."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Увімкнути функцію дослідження дотиком"</string>
@@ -500,6 +506,20 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"Увімкнути в додатку функції для додавання й видалення шаблонів цифрових відбитків."</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"використання сканера цифрових відбитків"</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"Дозволити додатку використовувати апаратне забезпечення для автентифікації"</string>
+ <string name="permlab_audioRead" msgid="6617225220728465565">"розпізнавати колекцію музики"</string>
+ <string name="permdesc_audioRead" msgid="5034032570243484805">"Додаток зможе розпізнавати вашу колекцію музики."</string>
+ <string name="permlab_audioWrite" msgid="2661772059799779292">"змінювати колекцію музики"</string>
+ <string name="permdesc_audioWrite" msgid="8888544708166230494">"Додаток зможе змінювати вашу колекцію музики."</string>
+ <string name="permlab_videoRead" msgid="9182618678674737229">"розпізнавати колекцію відео"</string>
+ <string name="permdesc_videoRead" msgid="7045676429859396194">"Додаток зможе розпізнавати вашу колекцію відео."</string>
+ <string name="permlab_videoWrite" msgid="128769316366746446">"змінювати колекцію відео"</string>
+ <string name="permdesc_videoWrite" msgid="5448565757490640841">"Додаток зможе змінювати вашу колекцію відео."</string>
+ <string name="permlab_imagesRead" msgid="3015078545742665304">"розпізнавати колекцію фотографій"</string>
+ <string name="permdesc_imagesRead" msgid="3144263806038695580">"Додаток зможе розпізнавати вашу колекцію фотографій."</string>
+ <string name="permlab_imagesWrite" msgid="3391306186247235510">"змінювати колекцію фотографій"</string>
+ <string name="permdesc_imagesWrite" msgid="7073662756617474375">"Додаток зможе змінювати вашу колекцію фотографій."</string>
+ <string name="permlab_mediaLocation" msgid="8675148183726247864">"розпізнавати геодані з колекції медіа-вмісту"</string>
+ <string name="permdesc_mediaLocation" msgid="2237023389178865130">"Додаток зможе розпізнавати геодані з вашої колекції медіа-вмісту."</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Відбиток розпізнано частково. Повторіть спробу."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Не вдалось обробити відбиток. Повторіть спробу."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Датчик відбитків забруднився. Очистьте його та повторіть спробу."</string>
@@ -1942,8 +1962,13 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"Зберегти дані (<xliff:g id="TYPE">%1$s</xliff:g>) у службі <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Зберегти дані (<xliff:g id="TYPE_0">%1$s</xliff:g> і <xliff:g id="TYPE_1">%2$s</xliff:g>) у службі <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Зберегти дані (<xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> і <xliff:g id="TYPE_2">%3$s</xliff:g>) у службі <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string>
+ <string name="autofill_update_title" msgid="4879673117448810818">"Оновити дані в сервісі <b><xliff:g id="LABEL">%1$s</xliff:g></b>?"</string>
+ <string name="autofill_update_title_with_type" msgid="339733442087186755">"Оновити дані (<xliff:g id="TYPE">%1$s</xliff:g>) у сервісі <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string>
+ <string name="autofill_update_title_with_2types" msgid="6321714204167424745">"Оновити дані (<xliff:g id="TYPE_0">%1$s</xliff:g> і <xliff:g id="TYPE_1">%2$s</xliff:g>) у сервісі <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string>
+ <string name="autofill_update_title_with_3types" msgid="5866735124066629287">"Оновити дані (<xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> і <xliff:g id="TYPE_2">%3$s</xliff:g>) у сервісі <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string>
<string name="autofill_save_yes" msgid="6398026094049005921">"Зберегти"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"Ні, дякую"</string>
+ <string name="autofill_update_yes" msgid="310358413273276958">"Оновити"</string>
<string name="autofill_save_type_password" msgid="5288448918465971568">"пароль"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"адреса"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"кредитна картка"</string>
diff --git a/core/res/res/values-ur/strings.xml b/core/res/res/values-ur/strings.xml
index 2ed0e6c..3c92c3d 100644
--- a/core/res/res/values-ur/strings.xml
+++ b/core/res/res/values-ur/strings.xml
@@ -300,6 +300,18 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"باڈی سینسرز"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"اپنی علامات حیات کے متعلق سنسر ڈیٹا تک رسائی حاصل کریں"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> کو آپ کے اہم اشاروں کے متعلق سینسر ڈیٹا تک رسائی کی اجازت دیں؟"</string>
+ <!-- no translation found for permgrouplab_aural (965607064083134896) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_aural (4870189506255958055) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_aural (6787926123071735620) -->
+ <skip />
+ <!-- no translation found for permgrouplab_visual (8030190588123857921) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_visual (3415827902566663546) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_visual (6907523945030290376) -->
+ <skip />
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"ونڈو مواد بازیافت کرنے کی"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"کسی ایسی ونڈو کے مواد کا معائنہ کریں جس کے ساتھ آپ تعامل کر رہے ہیں۔"</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"ٹچ کے ذریعے دریافت کریں کو آن کرنے کی"</string>
@@ -494,6 +506,34 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"ایپ کو استعمال کیلئے فنگر پرنٹ کی تمثیلات شامل کرنے اور حذف کرنے کیلئے طریقوں کو کالعدم قرار دینے کی اجازت دیتا ہے۔"</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"فنگر پرنٹ ہارڈ ویئر استعمال کریں"</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"ایپ کو توثیق کیلئے فنگر پرنٹ ہارڈ ویئر استعمال کرنے کی اجازت دیتا ہے"</string>
+ <!-- no translation found for permlab_audioRead (6617225220728465565) -->
+ <skip />
+ <!-- no translation found for permdesc_audioRead (5034032570243484805) -->
+ <skip />
+ <!-- no translation found for permlab_audioWrite (2661772059799779292) -->
+ <skip />
+ <!-- no translation found for permdesc_audioWrite (8888544708166230494) -->
+ <skip />
+ <!-- no translation found for permlab_videoRead (9182618678674737229) -->
+ <skip />
+ <!-- no translation found for permdesc_videoRead (7045676429859396194) -->
+ <skip />
+ <!-- no translation found for permlab_videoWrite (128769316366746446) -->
+ <skip />
+ <!-- no translation found for permdesc_videoWrite (5448565757490640841) -->
+ <skip />
+ <!-- no translation found for permlab_imagesRead (3015078545742665304) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesRead (3144263806038695580) -->
+ <skip />
+ <!-- no translation found for permlab_imagesWrite (3391306186247235510) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesWrite (7073662756617474375) -->
+ <skip />
+ <!-- no translation found for permlab_mediaLocation (8675148183726247864) -->
+ <skip />
+ <!-- no translation found for permdesc_mediaLocation (2237023389178865130) -->
+ <skip />
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"جزوی فنگر پرنٹ کی شناخت ہوئی۔ براہ کرم دوبارہ کوشش کریں۔"</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"فنگر پرنٹ پر کارروائی نہیں کی جا سکی۔ براہ کرم دوبارہ کوشش کریں۔"</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"فنگر پرنٹ سینسر گندا ہے۔ براہ کرم صاف کریں اور دوبارہ کوشش کریں۔"</string>
@@ -1873,8 +1913,18 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"<xliff:g id="TYPE">%1$s</xliff:g> کو <b><xliff:g id="LABEL">%2$s</xliff:g></b> میں محفوظ کریں؟"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"<xliff:g id="TYPE_0">%1$s</xliff:g> اور <xliff:g id="TYPE_1">%2$s</xliff:g> کو <b><xliff:g id="LABEL">%3$s</xliff:g></b> میں محفوظ کریں؟"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"<xliff:g id="TYPE_0">%1$s</xliff:g>،<xliff:g id="TYPE_1">%2$s</xliff:g>، اور <xliff:g id="TYPE_2">%3$s</xliff:g> کو <b><xliff:g id="LABEL">%4$s</xliff:g></b> میں محفوظ کریں؟"</string>
+ <!-- no translation found for autofill_update_title (4879673117448810818) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_type (339733442087186755) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) -->
+ <skip />
<string name="autofill_save_yes" msgid="6398026094049005921">"محفوظ کریں"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"نہیں، شکریہ"</string>
+ <!-- no translation found for autofill_update_yes (310358413273276958) -->
+ <skip />
<string name="autofill_save_type_password" msgid="5288448918465971568">"پاس ورڈ"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"پتہ"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"کریڈٹ کارڈ"</string>
diff --git a/core/res/res/values-uz/strings.xml b/core/res/res/values-uz/strings.xml
index 1d4c074..684e78a 100644
--- a/core/res/res/values-uz/strings.xml
+++ b/core/res/res/values-uz/strings.xml
@@ -300,6 +300,12 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"Tana sezgichlari"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"organizm holati haqidagi sezgich ma’lumotlariga kirish"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> uchun organizm holati haqidagi sezgichlar axborotlariga ruxsat berilsinmi?"</string>
+ <string name="permgrouplab_aural" msgid="965607064083134896">"Musiqa"</string>
+ <string name="permgroupdesc_aural" msgid="4870189506255958055">"musiqaga kirish"</string>
+ <string name="permgrouprequest_aural" msgid="6787926123071735620">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> uchun musiqangizga kirishga ruxsat berilsinmi?"</string>
+ <string name="permgrouplab_visual" msgid="8030190588123857921">"Surat va videolar"</string>
+ <string name="permgroupdesc_visual" msgid="3415827902566663546">"surat va videolarga kirish"</string>
+ <string name="permgrouprequest_visual" msgid="6907523945030290376">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> uchun surat va videolaringizga kirishga ruxsat berilsinmi?"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Oynadagi kontentni o‘qiydi"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Joriy oynadagi kontent mazmunini aniqlaydi."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Teginib o‘rganish xizmatini yoqadi"</string>
@@ -494,6 +500,20 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"Ilova foydalanish uchun barmoq izi namunalarini qo‘shish va o‘chirish usullarini qo‘llashi mumkin."</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"barmoq izi sensoridan foydalanish"</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"Ilova haqiqiylikni tekshirish uchun barmoq izi sensoridan foydalanishi mumkin"</string>
+ <string name="permlab_audioRead" msgid="6617225220728465565">"musiqiy to‘plamni o‘qish"</string>
+ <string name="permdesc_audioRead" msgid="5034032570243484805">"Ilovaga musiqiy to‘plamingizni o‘qishga ruxsat beradi."</string>
+ <string name="permlab_audioWrite" msgid="2661772059799779292">"musiqiy to‘plamni o‘zgartirish"</string>
+ <string name="permdesc_audioWrite" msgid="8888544708166230494">"Ilovaga musiqiy to‘plamni o‘zgartirishga ruxsat beradi."</string>
+ <string name="permlab_videoRead" msgid="9182618678674737229">"video to‘plamni o‘qish"</string>
+ <string name="permdesc_videoRead" msgid="7045676429859396194">"Ilovaga video to‘plamingizni o‘qishga ruxsat beradi."</string>
+ <string name="permlab_videoWrite" msgid="128769316366746446">"video to‘plamni o‘zgartirish"</string>
+ <string name="permdesc_videoWrite" msgid="5448565757490640841">"Ilovaga video to‘plamingizni o‘zgartirishga ruxsat beradi."</string>
+ <string name="permlab_imagesRead" msgid="3015078545742665304">"suratlar to‘plamini o‘qish"</string>
+ <string name="permdesc_imagesRead" msgid="3144263806038695580">"Ilovaga suratlar to‘plamingizni o‘qishga ruxsat beradi."</string>
+ <string name="permlab_imagesWrite" msgid="3391306186247235510">"suratlar to‘plamini o‘zgartirish"</string>
+ <string name="permdesc_imagesWrite" msgid="7073662756617474375">"Ilovaga suratlar to‘plamingizni o‘zgartirishga ruxsat beradi."</string>
+ <string name="permlab_mediaLocation" msgid="8675148183726247864">"multimedia to‘plamidan joylashuv axborotini o‘qish"</string>
+ <string name="permdesc_mediaLocation" msgid="2237023389178865130">"Ilovaga multimedia to‘plamingizdan joylashuv axborotini o‘qishga ruxsat beradi."</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Barmoq izi qisman aniqlandi. Qayta urinib ko‘ring."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Barmoq izi aniqlanmadi. Qayta urinib ko‘ring."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Barmoq izi skaneri kirlangan. Uni tozalab, keyin qayta urinib ko‘ring."</string>
@@ -1873,8 +1893,13 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"<xliff:g id="TYPE">%1$s</xliff:g> <b><xliff:g id="LABEL">%2$s</xliff:g></b> xizmatiga saqlansinmi?"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"<xliff:g id="TYPE_0">%1$s</xliff:g> va <xliff:g id="TYPE_1">%2$s</xliff:g> <b><xliff:g id="LABEL">%3$s</xliff:g></b> xizmatiga saqlansinmi?"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"<xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> va <xliff:g id="TYPE_2">%3$s</xliff:g> <b><xliff:g id="LABEL">%4$s</xliff:g></b> xizmatiga saqlansinmi?"</string>
+ <string name="autofill_update_title" msgid="4879673117448810818">"<b><xliff:g id="LABEL">%1$s</xliff:g></b> xizmatidagi ma’lumot yangilansinmi?"</string>
+ <string name="autofill_update_title_with_type" msgid="339733442087186755">"<b><xliff:g id="LABEL">%2$s</xliff:g></b> xizmatida <xliff:g id="TYPE">%1$s</xliff:g> ma’lumotlari yangilansinmi?"</string>
+ <string name="autofill_update_title_with_2types" msgid="6321714204167424745">"<b><xliff:g id="LABEL">%3$s</xliff:g></b> xizmatidagi <xliff:g id="TYPE_0">%1$s</xliff:g> va <xliff:g id="TYPE_1">%2$s</xliff:g> ma’lumotlari yangilansinmi?"</string>
+ <string name="autofill_update_title_with_3types" msgid="5866735124066629287">"<b><xliff:g id="LABEL">%4$s</xliff:g></b> xizmatidagi <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> va <xliff:g id="TYPE_2">%3$s</xliff:g> ma’lumotlari yangilansinmi?"</string>
<string name="autofill_save_yes" msgid="6398026094049005921">"Saqlash"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"Kerak emas"</string>
+ <string name="autofill_update_yes" msgid="310358413273276958">"Yangilash"</string>
<string name="autofill_save_type_password" msgid="5288448918465971568">"parol"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"manzil"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"kredit karta"</string>
diff --git a/core/res/res/values-vi/strings.xml b/core/res/res/values-vi/strings.xml
index a45118f..4e84f62 100644
--- a/core/res/res/values-vi/strings.xml
+++ b/core/res/res/values-vi/strings.xml
@@ -300,6 +300,18 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"Cảm biến cơ thể"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"truy cập dữ liệu cảm biến về dấu hiệu sinh tồn của bạn"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"Cho phép <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> truy cập vào dữ liệu cảm biến về các dấu hiệu sinh tồn của bạn?"</string>
+ <!-- no translation found for permgrouplab_aural (965607064083134896) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_aural (4870189506255958055) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_aural (6787926123071735620) -->
+ <skip />
+ <!-- no translation found for permgrouplab_visual (8030190588123857921) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_visual (3415827902566663546) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_visual (6907523945030290376) -->
+ <skip />
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Truy xuất nội dung cửa sổ"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Kiểm tra nội dung của cửa sổ bạn đang tương tác."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Bật Khám phá bằng cách chạm"</string>
@@ -494,6 +506,34 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"Cho phép ứng dụng gọi các phương pháp để thêm và xóa các mẫu vân tay để sử dụng."</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"sử dụng phần cứng vân tay"</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"Cho phép ứng dụng sử dụng phần cứng vân tay để xác thực"</string>
+ <!-- no translation found for permlab_audioRead (6617225220728465565) -->
+ <skip />
+ <!-- no translation found for permdesc_audioRead (5034032570243484805) -->
+ <skip />
+ <!-- no translation found for permlab_audioWrite (2661772059799779292) -->
+ <skip />
+ <!-- no translation found for permdesc_audioWrite (8888544708166230494) -->
+ <skip />
+ <!-- no translation found for permlab_videoRead (9182618678674737229) -->
+ <skip />
+ <!-- no translation found for permdesc_videoRead (7045676429859396194) -->
+ <skip />
+ <!-- no translation found for permlab_videoWrite (128769316366746446) -->
+ <skip />
+ <!-- no translation found for permdesc_videoWrite (5448565757490640841) -->
+ <skip />
+ <!-- no translation found for permlab_imagesRead (3015078545742665304) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesRead (3144263806038695580) -->
+ <skip />
+ <!-- no translation found for permlab_imagesWrite (3391306186247235510) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesWrite (7073662756617474375) -->
+ <skip />
+ <!-- no translation found for permlab_mediaLocation (8675148183726247864) -->
+ <skip />
+ <!-- no translation found for permdesc_mediaLocation (2237023389178865130) -->
+ <skip />
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Đã phát hiện được một phần vân tay. Vui lòng thử lại."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Không thể xử lý vân tay. Vui lòng thử lại."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Cảm biến vân tay bị bẩn. Hãy làm sạch và thử lại."</string>
@@ -1872,8 +1912,18 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"Lưu <xliff:g id="TYPE">%1$s</xliff:g> vào <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Lưu <xliff:g id="TYPE_0">%1$s</xliff:g> và <xliff:g id="TYPE_1">%2$s</xliff:g> vào <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Lưu <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> và <xliff:g id="TYPE_2">%3$s</xliff:g> vào <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string>
+ <!-- no translation found for autofill_update_title (4879673117448810818) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_type (339733442087186755) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) -->
+ <skip />
<string name="autofill_save_yes" msgid="6398026094049005921">"Lưu"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"Không, cảm ơn"</string>
+ <!-- no translation found for autofill_update_yes (310358413273276958) -->
+ <skip />
<string name="autofill_save_type_password" msgid="5288448918465971568">"mật khẩu"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"địa chỉ"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"thẻ tín dụng"</string>
diff --git a/core/res/res/values-zh-rCN/strings.xml b/core/res/res/values-zh-rCN/strings.xml
index 8a55d01..0de78ce 100644
--- a/core/res/res/values-zh-rCN/strings.xml
+++ b/core/res/res/values-zh-rCN/strings.xml
@@ -300,6 +300,18 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"身体传感器"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"访问与您的生命体征相关的传感器数据"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"允许<b><xliff:g id="APP_NAME">%1$s</xliff:g></b>访问与您的生命体征相关的传感器数据吗?"</string>
+ <!-- no translation found for permgrouplab_aural (965607064083134896) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_aural (4870189506255958055) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_aural (6787926123071735620) -->
+ <skip />
+ <!-- no translation found for permgrouplab_visual (8030190588123857921) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_visual (3415827902566663546) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_visual (6907523945030290376) -->
+ <skip />
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"检索窗口内容"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"检测您正访问的窗口的内容。"</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"启用触摸浏览"</string>
@@ -494,6 +506,34 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"允许该应用调用方法来添加和删除可用的指纹模板。"</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"使用指纹硬件"</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"允许该应用使用指纹硬件进行身份验证"</string>
+ <!-- no translation found for permlab_audioRead (6617225220728465565) -->
+ <skip />
+ <!-- no translation found for permdesc_audioRead (5034032570243484805) -->
+ <skip />
+ <!-- no translation found for permlab_audioWrite (2661772059799779292) -->
+ <skip />
+ <!-- no translation found for permdesc_audioWrite (8888544708166230494) -->
+ <skip />
+ <!-- no translation found for permlab_videoRead (9182618678674737229) -->
+ <skip />
+ <!-- no translation found for permdesc_videoRead (7045676429859396194) -->
+ <skip />
+ <!-- no translation found for permlab_videoWrite (128769316366746446) -->
+ <skip />
+ <!-- no translation found for permdesc_videoWrite (5448565757490640841) -->
+ <skip />
+ <!-- no translation found for permlab_imagesRead (3015078545742665304) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesRead (3144263806038695580) -->
+ <skip />
+ <!-- no translation found for permlab_imagesWrite (3391306186247235510) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesWrite (7073662756617474375) -->
+ <skip />
+ <!-- no translation found for permlab_mediaLocation (8675148183726247864) -->
+ <skip />
+ <!-- no translation found for permdesc_mediaLocation (2237023389178865130) -->
+ <skip />
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"仅检测到部分指纹,请重试。"</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"无法处理指纹,请重试。"</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"指纹传感器有脏污。请擦拭干净,然后重试。"</string>
@@ -1872,8 +1912,18 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"要将<xliff:g id="TYPE">%1$s</xliff:g>保存到<b><xliff:g id="LABEL">%2$s</xliff:g></b>吗?"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"要将<xliff:g id="TYPE_0">%1$s</xliff:g>和<xliff:g id="TYPE_1">%2$s</xliff:g>保存到<b><xliff:g id="LABEL">%3$s</xliff:g></b>吗?"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"要将<xliff:g id="TYPE_0">%1$s</xliff:g>、<xliff:g id="TYPE_1">%2$s</xliff:g>和<xliff:g id="TYPE_2">%3$s</xliff:g>保存到<b><xliff:g id="LABEL">%4$s</xliff:g></b>吗?"</string>
+ <!-- no translation found for autofill_update_title (4879673117448810818) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_type (339733442087186755) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) -->
+ <skip />
<string name="autofill_save_yes" msgid="6398026094049005921">"保存"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"不用了"</string>
+ <!-- no translation found for autofill_update_yes (310358413273276958) -->
+ <skip />
<string name="autofill_save_type_password" msgid="5288448918465971568">"密码"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"地址"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"信用卡"</string>
diff --git a/core/res/res/values-zh-rHK/strings.xml b/core/res/res/values-zh-rHK/strings.xml
index 0b75202..91633cd 100644
--- a/core/res/res/values-zh-rHK/strings.xml
+++ b/core/res/res/values-zh-rHK/strings.xml
@@ -300,6 +300,12 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"人體感應器"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"存取與您生命體徵相關的感應器資料"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"允許「<xliff:g id="APP_NAME">%1$s</xliff:g>」<b></b>存取與您身體機能相關的感應器資料嗎?"</string>
+ <string name="permgrouplab_aural" msgid="965607064083134896">"音樂"</string>
+ <string name="permgroupdesc_aural" msgid="4870189506255958055">"存取你的音樂"</string>
+ <string name="permgrouprequest_aural" msgid="6787926123071735620">"要允許「<xliff:g id="APP_NAME">%1$s</xliff:g>」<b></b>存取你的音樂嗎?"</string>
+ <string name="permgrouplab_visual" msgid="8030190588123857921">"相片和影片"</string>
+ <string name="permgroupdesc_visual" msgid="3415827902566663546">"存取你的相片和影片"</string>
+ <string name="permgrouprequest_visual" msgid="6907523945030290376">"要允許「<xliff:g id="APP_NAME">%1$s</xliff:g>」<b></b>存取你的相片和影片嗎?"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"擷取視窗內容"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"檢查您使用中的視窗內容。"</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"開啟「輕觸探索」功能"</string>
@@ -494,6 +500,20 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"允許應用程式調用加入和刪除指紋模板的方法以供使用。"</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"使用指紋硬件"</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"允許應用程式使用指紋硬件驗證"</string>
+ <string name="permlab_audioRead" msgid="6617225220728465565">"讀取你的音樂收藏"</string>
+ <string name="permdesc_audioRead" msgid="5034032570243484805">"允許應用程式讀取你的音樂收藏。"</string>
+ <string name="permlab_audioWrite" msgid="2661772059799779292">"修改你的音樂收藏"</string>
+ <string name="permdesc_audioWrite" msgid="8888544708166230494">"允許應用程式修改你的音樂收藏。"</string>
+ <string name="permlab_videoRead" msgid="9182618678674737229">"讀取你的影片收藏"</string>
+ <string name="permdesc_videoRead" msgid="7045676429859396194">"允許應用程式讀取你的影片收藏。"</string>
+ <string name="permlab_videoWrite" msgid="128769316366746446">"修改你的影片收藏"</string>
+ <string name="permdesc_videoWrite" msgid="5448565757490640841">"允許應用程式修改你的影片收藏。"</string>
+ <string name="permlab_imagesRead" msgid="3015078545742665304">"讀取你的相片收藏"</string>
+ <string name="permdesc_imagesRead" msgid="3144263806038695580">"允許應用程式讀取你的相片收藏。"</string>
+ <string name="permlab_imagesWrite" msgid="3391306186247235510">"修改你的相片收藏"</string>
+ <string name="permdesc_imagesWrite" msgid="7073662756617474375">"允許應用程式修改你的相片收藏。"</string>
+ <string name="permlab_mediaLocation" msgid="8675148183726247864">"讀取你的媒體收藏的位置資訊"</string>
+ <string name="permdesc_mediaLocation" msgid="2237023389178865130">"允許應用程式讀取你的媒體收藏的位置資訊。"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"只偵測到部分指紋。請再試一次。"</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"無法處理指紋。請再試一次。"</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"指紋感應器不乾淨。請清潔後再試一次。"</string>
@@ -1872,8 +1892,13 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"要將<xliff:g id="TYPE">%1$s</xliff:g>儲存至「<b><xliff:g id="LABEL">%2$s</xliff:g></b>」嗎?"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"要將<xliff:g id="TYPE_0">%1$s</xliff:g>和<xliff:g id="TYPE_1">%2$s</xliff:g>儲存至「<b><xliff:g id="LABEL">%3$s</xliff:g></b>」嗎?"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"要將<xliff:g id="TYPE_0">%1$s</xliff:g>、<xliff:g id="TYPE_1">%2$s</xliff:g>和<xliff:g id="TYPE_2">%3$s</xliff:g>儲存至「<b><xliff:g id="LABEL">%4$s</xliff:g></b>」嗎?"</string>
+ <string name="autofill_update_title" msgid="4879673117448810818">"要更新為「<xliff:g id="LABEL">%1$s</xliff:g>」<b></b>嗎?"</string>
+ <string name="autofill_update_title_with_type" msgid="339733442087186755">"要將<xliff:g id="TYPE">%1$s</xliff:g>更新為「<xliff:g id="LABEL">%2$s</xliff:g>」<b></b>嗎?"</string>
+ <string name="autofill_update_title_with_2types" msgid="6321714204167424745">"要將<xliff:g id="TYPE_0">%1$s</xliff:g>和<xliff:g id="TYPE_1">%2$s</xliff:g>更新為「<xliff:g id="LABEL">%3$s</xliff:g>」<b></b>嗎?"</string>
+ <string name="autofill_update_title_with_3types" msgid="5866735124066629287">"要將<xliff:g id="TYPE_0">%1$s</xliff:g>、<xliff:g id="TYPE_1">%2$s</xliff:g>和<xliff:g id="TYPE_2">%3$s</xliff:g>更新為「<xliff:g id="LABEL">%4$s</xliff:g>」<b></b>嗎?"</string>
<string name="autofill_save_yes" msgid="6398026094049005921">"儲存"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"不用了,謝謝"</string>
+ <string name="autofill_update_yes" msgid="310358413273276958">"更新"</string>
<string name="autofill_save_type_password" msgid="5288448918465971568">"密碼"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"地址"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"信用卡"</string>
diff --git a/core/res/res/values-zh-rTW/strings.xml b/core/res/res/values-zh-rTW/strings.xml
index d130fba..219f137 100644
--- a/core/res/res/values-zh-rTW/strings.xml
+++ b/core/res/res/values-zh-rTW/strings.xml
@@ -300,6 +300,12 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"人體感應器"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"存取與你生命徵象相關的感應器資料"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"要允許「<xliff:g id="APP_NAME">%1$s</xliff:g>」存取與你生命徵象相關的感應器資料嗎?"</string>
+ <string name="permgrouplab_aural" msgid="965607064083134896">"音樂"</string>
+ <string name="permgroupdesc_aural" msgid="4870189506255958055">"存取你的音樂"</string>
+ <string name="permgrouprequest_aural" msgid="6787926123071735620">"要允許「<xliff:g id="APP_NAME">%1$s</xliff:g>」<b></b>存取你的音樂嗎?"</string>
+ <string name="permgrouplab_visual" msgid="8030190588123857921">"相片和影片"</string>
+ <string name="permgroupdesc_visual" msgid="3415827902566663546">"存取你的相片和影片"</string>
+ <string name="permgrouprequest_visual" msgid="6907523945030290376">"要允許「<xliff:g id="APP_NAME">%1$s</xliff:g>」<b></b>存取你的相片和影片嗎?"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"擷取視窗內容"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"檢查你存取的視窗內容。"</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"啟用輕觸探索功能"</string>
@@ -494,6 +500,20 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"允許應用程式呼叫方法來新增及移除可用的指紋範本"</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"使用指紋硬體"</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"允許應用程式使用指紋硬體進行驗證"</string>
+ <string name="permlab_audioRead" msgid="6617225220728465565">"讀取你的音樂收藏"</string>
+ <string name="permdesc_audioRead" msgid="5034032570243484805">"允許應用程式讀取你的音樂收藏。"</string>
+ <string name="permlab_audioWrite" msgid="2661772059799779292">"修改你的音樂收藏"</string>
+ <string name="permdesc_audioWrite" msgid="8888544708166230494">"允許應用程式修改你的音樂收藏。"</string>
+ <string name="permlab_videoRead" msgid="9182618678674737229">"讀取你的影片收藏"</string>
+ <string name="permdesc_videoRead" msgid="7045676429859396194">"允許應用程式讀取你的影片收藏。"</string>
+ <string name="permlab_videoWrite" msgid="128769316366746446">"修改你的影片收藏"</string>
+ <string name="permdesc_videoWrite" msgid="5448565757490640841">"允許應用程式修改你的影片收藏。"</string>
+ <string name="permlab_imagesRead" msgid="3015078545742665304">"讀取你的相片收藏"</string>
+ <string name="permdesc_imagesRead" msgid="3144263806038695580">"允許應用程式讀取你的相片收藏。"</string>
+ <string name="permlab_imagesWrite" msgid="3391306186247235510">"修改你的相片收藏"</string>
+ <string name="permdesc_imagesWrite" msgid="7073662756617474375">"允許應用程式修改你的相片收藏。"</string>
+ <string name="permlab_mediaLocation" msgid="8675148183726247864">"讀取你的媒體收藏的位置資訊"</string>
+ <string name="permdesc_mediaLocation" msgid="2237023389178865130">"允許應用程式讀取你的媒體收藏的位置資訊。"</string>
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"僅偵測到部分指紋,請再試一次。"</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"無法處理指紋,請再試一次。"</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"指紋感應器有髒汙。請清潔感應器,然後再試一次。"</string>
@@ -1872,8 +1892,13 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"要將<xliff:g id="TYPE">%1$s</xliff:g>儲存到「<xliff:g id="LABEL">%2$s</xliff:g>」嗎?"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"要將<xliff:g id="TYPE_0">%1$s</xliff:g>和<xliff:g id="TYPE_1">%2$s</xliff:g>儲存到「<xliff:g id="LABEL">%3$s</xliff:g>」嗎?"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"要將<xliff:g id="TYPE_0">%1$s</xliff:g>、<xliff:g id="TYPE_1">%2$s</xliff:g>和<xliff:g id="TYPE_2">%3$s</xliff:g>儲存到「<xliff:g id="LABEL">%4$s</xliff:g>」嗎?"</string>
+ <string name="autofill_update_title" msgid="4879673117448810818">"要更新為「<xliff:g id="LABEL">%1$s</xliff:g>」<b></b>嗎?"</string>
+ <string name="autofill_update_title_with_type" msgid="339733442087186755">"要將<xliff:g id="TYPE">%1$s</xliff:g>更新為「<xliff:g id="LABEL">%2$s</xliff:g>」<b></b>嗎?"</string>
+ <string name="autofill_update_title_with_2types" msgid="6321714204167424745">"要將<xliff:g id="TYPE_0">%1$s</xliff:g>和<xliff:g id="TYPE_1">%2$s</xliff:g>更新為「<xliff:g id="LABEL">%3$s</xliff:g>」<b></b>嗎?"</string>
+ <string name="autofill_update_title_with_3types" msgid="5866735124066629287">"要將<xliff:g id="TYPE_0">%1$s</xliff:g>、<xliff:g id="TYPE_1">%2$s</xliff:g>和<xliff:g id="TYPE_2">%3$s</xliff:g>更新為「<xliff:g id="LABEL">%4$s</xliff:g>」<b></b>嗎?"</string>
<string name="autofill_save_yes" msgid="6398026094049005921">"儲存"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"不用了,謝謝"</string>
+ <string name="autofill_update_yes" msgid="310358413273276958">"更新"</string>
<string name="autofill_save_type_password" msgid="5288448918465971568">"密碼"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"地址"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"信用卡"</string>
diff --git a/core/res/res/values-zu/strings.xml b/core/res/res/values-zu/strings.xml
index fed4824..37a2e20 100644
--- a/core/res/res/values-zu/strings.xml
+++ b/core/res/res/values-zu/strings.xml
@@ -300,6 +300,18 @@
<string name="permgrouplab_sensors" msgid="416037179223226722">"Izinzwa zomzimba"</string>
<string name="permgroupdesc_sensors" msgid="7147968539346634043">"finyelela idatha yesizweli mayelana nezimpawu zakho ezibalulekile"</string>
<string name="permgrouprequest_sensors" msgid="6349806962814556786">"Vumela i-<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ukuthi ifinyelele kudatha yenzwa emayelana nezimpawu zakho ezibalulekile?"</string>
+ <!-- no translation found for permgrouplab_aural (965607064083134896) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_aural (4870189506255958055) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_aural (6787926123071735620) -->
+ <skip />
+ <!-- no translation found for permgrouplab_visual (8030190588123857921) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_visual (3415827902566663546) -->
+ <skip />
+ <!-- no translation found for permgrouprequest_visual (6907523945030290376) -->
+ <skip />
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Thola okuqukethwe kwewindi"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Hlola okuqukethwe kwewindi ohlanganyela nalo."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Vula ukuhlola ngokuthinta"</string>
@@ -494,6 +506,34 @@
<string name="permdesc_manageFingerprint" msgid="178208705828055464">"Ivumela uhlelo lokusebenza ukuthi libuyisele izindlela zokungeza nokususa izifanekiso zezigxivizo zeminwe ngokusetshenziswa."</string>
<string name="permlab_useFingerprint" msgid="3150478619915124905">"sebenzisa izingxenyekazi zekhompyutha zezigxivizo zeminwe"</string>
<string name="permdesc_useFingerprint" msgid="9165097460730684114">"Ivumela uhlelo lokusebenza ukuthi lusebenzise izingxenyekazi zekhompyutha zezigxivizo zeminwe ukuze kuqinisekiswe"</string>
+ <!-- no translation found for permlab_audioRead (6617225220728465565) -->
+ <skip />
+ <!-- no translation found for permdesc_audioRead (5034032570243484805) -->
+ <skip />
+ <!-- no translation found for permlab_audioWrite (2661772059799779292) -->
+ <skip />
+ <!-- no translation found for permdesc_audioWrite (8888544708166230494) -->
+ <skip />
+ <!-- no translation found for permlab_videoRead (9182618678674737229) -->
+ <skip />
+ <!-- no translation found for permdesc_videoRead (7045676429859396194) -->
+ <skip />
+ <!-- no translation found for permlab_videoWrite (128769316366746446) -->
+ <skip />
+ <!-- no translation found for permdesc_videoWrite (5448565757490640841) -->
+ <skip />
+ <!-- no translation found for permlab_imagesRead (3015078545742665304) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesRead (3144263806038695580) -->
+ <skip />
+ <!-- no translation found for permlab_imagesWrite (3391306186247235510) -->
+ <skip />
+ <!-- no translation found for permdesc_imagesWrite (7073662756617474375) -->
+ <skip />
+ <!-- no translation found for permlab_mediaLocation (8675148183726247864) -->
+ <skip />
+ <!-- no translation found for permdesc_mediaLocation (2237023389178865130) -->
+ <skip />
<string name="fingerprint_acquired_partial" msgid="735082772341716043">"Izigxivizo zeminwe ezincane zitholiwe. Sicela uzame futhi."</string>
<string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Ayikwazanga ukucubungula izigxivizo zeminwe. Sicela uzame futhi."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Inzwa yezigxivizo zeminwe ingcolile. Sicela uyihlanze uphinde uzame futhi."</string>
@@ -1872,8 +1912,18 @@
<string name="autofill_save_title_with_type" msgid="8637809388029313305">"Londoloza i-<xliff:g id="TYPE">%1$s</xliff:g> ku-<b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Londoloza i-<xliff:g id="TYPE_0">%1$s</xliff:g> ne-<xliff:g id="TYPE_1">%2$s</xliff:g> ku-<b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string>
<string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Londoloza i-<xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g>, ne-<xliff:g id="TYPE_2">%3$s</xliff:g> ku-<b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string>
+ <!-- no translation found for autofill_update_title (4879673117448810818) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_type (339733442087186755) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) -->
+ <skip />
+ <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) -->
+ <skip />
<string name="autofill_save_yes" msgid="6398026094049005921">"Londoloza"</string>
<string name="autofill_save_no" msgid="2625132258725581787">"Cha ngiyabonga"</string>
+ <!-- no translation found for autofill_update_yes (310358413273276958) -->
+ <skip />
<string name="autofill_save_type_password" msgid="5288448918465971568">"iphasiwedi"</string>
<string name="autofill_save_type_address" msgid="4936707762193009542">"ikheli"</string>
<string name="autofill_save_type_credit_card" msgid="7127694776265563071">"ikhadi lesikweletu"</string>
diff --git a/core/res/res/values/themes.xml b/core/res/res/values/themes.xml
index 4833816..090f9af 100644
--- a/core/res/res/values/themes.xml
+++ b/core/res/res/values/themes.xml
@@ -306,6 +306,7 @@
<item name="quickContactBadgeStyleSmallWindowLarge">@style/Widget.QuickContactBadgeSmall.WindowLarge</item>
<item name="listPopupWindowStyle">@style/Widget.ListPopupWindow</item>
<item name="popupMenuStyle">@style/Widget.PopupMenu</item>
+ <item name="popupTheme">@null</item>
<item name="activityChooserViewStyle">@style/Widget.ActivityChooserView</item>
<item name="fragmentBreadCrumbsStyle">@style/Widget.FragmentBreadCrumbs</item>
<item name="contextPopupMenuStyle">?attr/popupMenuStyle</item>
diff --git a/core/res/res/values/themes_holo.xml b/core/res/res/values/themes_holo.xml
index cb5b93d..33832d4 100644
--- a/core/res/res/values/themes_holo.xml
+++ b/core/res/res/values/themes_holo.xml
@@ -296,6 +296,7 @@
<item name="quickContactBadgeStyleSmallWindowLarge">@style/Widget.Holo.QuickContactBadgeSmall.WindowLarge</item>
<item name="listPopupWindowStyle">@style/Widget.Holo.ListPopupWindow</item>
<item name="popupMenuStyle">@style/Widget.Holo.PopupMenu</item>
+ <item name="popupTheme">@null</item>
<item name="stackViewStyle">@style/Widget.Holo.StackView</item>
<item name="activityChooserViewStyle">@style/Widget.Holo.ActivityChooserView</item>
<item name="fragmentBreadCrumbsStyle">@style/Widget.Holo.FragmentBreadCrumbs</item>
@@ -658,9 +659,11 @@
<item name="quickContactBadgeStyleSmallWindowLarge">@style/Widget.Holo.QuickContactBadgeSmall.WindowLarge</item>
<item name="listPopupWindowStyle">@style/Widget.Holo.Light.ListPopupWindow</item>
<item name="popupMenuStyle">@style/Widget.Holo.Light.PopupMenu</item>
+ <item name="popupTheme">@null</item>
<item name="stackViewStyle">@style/Widget.Holo.StackView</item>
<item name="activityChooserViewStyle">@style/Widget.Holo.Light.ActivityChooserView</item>
<item name="fragmentBreadCrumbsStyle">@style/Widget.Holo.Light.FragmentBreadCrumbs</item>
+ <item name="contextPopupMenuStyle">?attr/popupMenuStyle</item>
<!-- Preference styles -->
<item name="preferenceScreenStyle">@style/Preference.Holo.PreferenceScreen</item>
diff --git a/data/etc/platform.xml b/data/etc/platform.xml
index b3f05dc..6f52fbd 100644
--- a/data/etc/platform.xml
+++ b/data/etc/platform.xml
@@ -182,11 +182,11 @@
code to link against. -->
<library name="android.test.base"
- file="/system/framework/android.test.base.jar" />
+ file="/system/framework/android.test.base.impl.jar" />
<library name="android.test.mock"
- file="/system/framework/android.test.mock.jar" />
+ file="/system/framework/android.test.mock.impl.jar" />
<library name="android.test.runner"
- file="/system/framework/android.test.runner.jar" />
+ file="/system/framework/android.test.runner.impl.jar" />
<!-- These are the standard packages that are white-listed to always have internet
access while in power save mode, even if they aren't in the foreground. -->
diff --git a/graphics/java/android/graphics/fonts/Font.java b/graphics/java/android/graphics/fonts/Font.java
index 9d94a64..f0c5199 100644
--- a/graphics/java/android/graphics/fonts/Font.java
+++ b/graphics/java/android/graphics/fonts/Font.java
@@ -36,11 +36,13 @@
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
+import java.util.Arrays;
+import java.util.Objects;
/**
* A font class can be used for creating FontFamily.
*/
-public class Font {
+public final class Font {
private static final String TAG = "Font";
private static final int NOT_SPECIFIED = -1;
@@ -109,6 +111,7 @@
private @IntRange(from = -1, to = 1) int mItalic = NOT_SPECIFIED;
private @IntRange(from = 0) int mTtcIndex = 0;
private @Nullable FontVariationAxis[] mAxes = null;
+ private @Nullable IOException mException;
/**
* Constructs a builder with a byte buffer.
@@ -132,11 +135,13 @@
*
* @param path a file path to the font file
*/
- public Builder(@NonNull File path) throws IOException {
+ public Builder(@NonNull File path) {
Preconditions.checkNotNull(path, "path can not be null");
try (FileInputStream fis = new FileInputStream(path)) {
final FileChannel fc = fis.getChannel();
mBuffer = fc.map(FileChannel.MapMode.READ_ONLY, 0, fc.size());
+ } catch (IOException e) {
+ mException = e;
}
}
@@ -145,7 +150,7 @@
*
* @param fd a file descriptor
*/
- public Builder(@NonNull FileDescriptor fd) throws IOException {
+ public Builder(@NonNull FileDescriptor fd) {
this(fd, 0, -1);
}
@@ -157,11 +162,13 @@
* @param size a size of the font data. If -1 is passed, use until end of the file.
*/
public Builder(@NonNull FileDescriptor fd, @IntRange(from = 0) long offset,
- @IntRange(from = -1) long size) throws IOException {
+ @IntRange(from = -1) long size) {
try (FileInputStream fis = new FileInputStream(fd)) {
final FileChannel fc = fis.getChannel();
size = (size == -1) ? fc.size() - offset : size;
mBuffer = fc.map(FileChannel.MapMode.READ_ONLY, offset, size);
+ } catch (IOException e) {
+ mException = e;
}
}
@@ -171,15 +178,17 @@
* @param am the application's asset manager
* @param path the file name of the font data in the asset directory
*/
- public Builder(@NonNull AssetManager am, @NonNull String path) throws IOException {
+ public Builder(@NonNull AssetManager am, @NonNull String path) {
final long nativeAsset = nGetNativeAsset(am, path, true /* is asset */, 0 /* cookie */);
if (nativeAsset == 0) {
- throw new FileNotFoundException("Unable to open " + path);
+ mException = new FileNotFoundException("Unable to open " + path);
+ return;
}
final ByteBuffer b = nGetAssetBuffer(nativeAsset);
sAssetByteBufferRegistroy.registerNativeAllocation(b, nativeAsset);
if (b == null) {
- throw new FileNotFoundException(path + " not found");
+ mException = new FileNotFoundException(path + " not found");
+ return;
}
mBuffer = b;
}
@@ -192,25 +201,29 @@
* @param res the resource of this application.
* @param resId the resource ID of font file.
*/
- public Builder(@NonNull Resources res, int resId) throws IOException {
+ public Builder(@NonNull Resources res, int resId) {
final TypedValue value = new TypedValue();
res.getValue(resId, value, true);
if (value.string == null) {
- throw new FileNotFoundException(resId + " not found");
+ mException = new FileNotFoundException(resId + " not found");
+ return;
}
final String str = value.string.toString();
if (str.toLowerCase().endsWith(".xml")) {
- throw new FileNotFoundException(resId + " must be font file.");
+ mException = new FileNotFoundException(resId + " must be font file.");
+ return;
}
final long nativeAsset = nGetNativeAsset(res.getAssets(), str, false /* is asset */,
value.assetCookie);
if (nativeAsset == 0) {
- throw new FileNotFoundException("Unable to open " + str);
+ mException = new FileNotFoundException("Unable to open " + str);
+ return;
}
final ByteBuffer b = nGetAssetBuffer(nativeAsset);
sAssetByteBufferRegistroy.registerNativeAllocation(b, nativeAsset);
if (b == null) {
- throw new FileNotFoundException(str + " not found");
+ mException = new FileNotFoundException(str + " not found");
+ return;
}
mBuffer = b;
}
@@ -347,7 +360,7 @@
* @return this builder
*/
public @NonNull Builder setFontVariationSettings(@Nullable FontVariationAxis[] axes) {
- mAxes = axes;
+ mAxes = axes == null ? null : axes.clone();
return this;
}
@@ -355,7 +368,10 @@
* Creates the font based on the configured values.
* @return the Font object
*/
- public @Nullable Font build() {
+ public @Nullable Font build() throws IOException {
+ if (mException != null) {
+ throw new IOException("Failed to read font contents", mException);
+ }
if (mWeight == NOT_SPECIFIED || mItalic == NOT_SPECIFIED) {
final int packed = FontFileUtil.analyzeStyle(mBuffer, mTtcIndex, mAxes);
if (FontFileUtil.isSuccess(packed)) {
@@ -378,7 +394,7 @@
}
}
final long ptr = nBuild(builderPtr, mBuffer, mWeight, italic, mTtcIndex);
- final Font font = new Font(ptr, mWeight, italic, mTtcIndex, mAxes);
+ final Font font = new Font(ptr, mBuffer, mWeight, italic, mTtcIndex, mAxes);
sFontRegistory.registerNativeAllocation(font, ptr);
return font;
}
@@ -405,6 +421,7 @@
}
private final long mNativePtr; // address of the shared ptr of minikin::Font
+ private final @NonNull ByteBuffer mBuffer;
private final @IntRange(from = 0, to = 1000) int mWeight;
private final boolean mItalic;
private final @IntRange(from = 0) int mTtcIndex;
@@ -413,8 +430,10 @@
/**
* Use Builder instead
*/
- private Font(long nativePtr, @IntRange(from = 0, to = 1000) int weight, boolean italic,
+ private Font(long nativePtr, @NonNull ByteBuffer buffer,
+ @IntRange(from = 0, to = 1000) int weight, boolean italic,
@IntRange(from = 0) int ttcIndex, @Nullable FontVariationAxis[] axes) {
+ mBuffer = buffer;
mWeight = weight;
mItalic = italic;
mNativePtr = nativePtr;
@@ -462,7 +481,7 @@
* @return font variation settings
*/
public @Nullable FontVariationAxis[] getAxes() {
- return mAxes;
+ return mAxes == null ? null : mAxes.clone();
}
/** @hide */
@@ -471,6 +490,24 @@
}
@Override
+ public boolean equals(@Nullable Object o) {
+ if (o == this) {
+ return true;
+ }
+ if (o == null || !(o instanceof Font)) {
+ return false;
+ }
+ Font f = (Font) o;
+ return f.mWeight == mWeight && f.mItalic == mItalic && f.mTtcIndex == mTtcIndex
+ && Arrays.equals(f.mAxes, mAxes) && f.mBuffer.equals(mBuffer);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(mWeight, mItalic, mTtcIndex, mAxes, mBuffer);
+ }
+
+ @Override
public String toString() {
return "Font {weight=" + mWeight + ", italic=" + mItalic + "}";
}
diff --git a/graphics/java/android/graphics/fonts/FontFamily.java b/graphics/java/android/graphics/fonts/FontFamily.java
index dc213ea..c914ece 100644
--- a/graphics/java/android/graphics/fonts/FontFamily.java
+++ b/graphics/java/android/graphics/fonts/FontFamily.java
@@ -57,7 +57,7 @@
* </p>
*
*/
-public class FontFamily {
+public final class FontFamily {
private static final String TAG = "FontFamily";
/**
@@ -170,7 +170,7 @@
*
* @return the number of fonts registered in this family.
*/
- public int getFontCount() {
+ public int getSize() {
return mFonts.size();
}
diff --git a/graphics/java/android/graphics/fonts/FontVariationAxis.java b/graphics/java/android/graphics/fonts/FontVariationAxis.java
index 2a902c5..242cbb8 100644
--- a/graphics/java/android/graphics/fonts/FontVariationAxis.java
+++ b/graphics/java/android/graphics/fonts/FontVariationAxis.java
@@ -22,6 +22,7 @@
import android.text.TextUtils;
import java.util.ArrayList;
+import java.util.Objects;
import java.util.regex.Pattern;
/**
@@ -186,5 +187,22 @@
}
return TextUtils.join(",", axes);
}
+
+ @Override
+ public boolean equals(@Nullable Object o) {
+ if (o == this) {
+ return true;
+ }
+ if (o == null || !(o instanceof FontVariationAxis)) {
+ return false;
+ }
+ FontVariationAxis axis = (FontVariationAxis) o;
+ return axis.mTag == mTag && axis.mStyleValue == mStyleValue;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(mTag, mStyleValue);
+ }
}
diff --git a/graphics/java/android/graphics/fonts/SystemFonts.java b/graphics/java/android/graphics/fonts/SystemFonts.java
index bd49130..dae48f8 100644
--- a/graphics/java/android/graphics/fonts/SystemFonts.java
+++ b/graphics/java/android/graphics/fonts/SystemFonts.java
@@ -169,12 +169,17 @@
}
}
- final Font font = new Font.Builder(buffer)
- .setWeight(fontConfig.getWeight())
- .setItalic(fontConfig.isItalic())
- .setTtcIndex(fontConfig.getTtcIndex())
- .setFontVariationSettings(fontConfig.getAxes())
- .build();
+ final Font font;
+ try {
+ font = new Font.Builder(buffer)
+ .setWeight(fontConfig.getWeight())
+ .setItalic(fontConfig.isItalic())
+ .setTtcIndex(fontConfig.getTtcIndex())
+ .setFontVariationSettings(fontConfig.getAxes())
+ .build();
+ } catch (IOException e) {
+ throw new RuntimeException(e); // Never reaches here
+ }
if (b == null) {
b = new FontFamily.Builder(font);
diff --git a/packages/PrintRecommendationService/src/com/android/printservice/recommendation/RemotePrintServicePlugin.java b/packages/PrintRecommendationService/src/com/android/printservice/recommendation/RemotePrintServicePlugin.java
index ef93d4a..3cfb865 100644
--- a/packages/PrintRecommendationService/src/com/android/printservice/recommendation/RemotePrintServicePlugin.java
+++ b/packages/PrintRecommendationService/src/com/android/printservice/recommendation/RemotePrintServicePlugin.java
@@ -19,7 +19,8 @@
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.StringRes;
-import androidx.core.util.Preconditions;
+
+import com.android.printservice.recommendation.util.Preconditions;
import java.net.InetAddress;
import java.util.Collections;
diff --git a/packages/PrintRecommendationService/src/com/android/printservice/recommendation/plugin/mdnsFilter/VendorConfig.java b/packages/PrintRecommendationService/src/com/android/printservice/recommendation/plugin/mdnsFilter/VendorConfig.java
index 5d735a8..dece2d4 100644
--- a/packages/PrintRecommendationService/src/com/android/printservice/recommendation/plugin/mdnsFilter/VendorConfig.java
+++ b/packages/PrintRecommendationService/src/com/android/printservice/recommendation/plugin/mdnsFilter/VendorConfig.java
@@ -22,9 +22,9 @@
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
-import androidx.core.util.Preconditions;
import com.android.printservice.recommendation.R;
+import com.android.printservice.recommendation.util.Preconditions;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
diff --git a/packages/PrintRecommendationService/src/com/android/printservice/recommendation/util/MDNSFilteredDiscovery.java b/packages/PrintRecommendationService/src/com/android/printservice/recommendation/util/MDNSFilteredDiscovery.java
index 65cef94..a6d59cb 100644
--- a/packages/PrintRecommendationService/src/com/android/printservice/recommendation/util/MDNSFilteredDiscovery.java
+++ b/packages/PrintRecommendationService/src/com/android/printservice/recommendation/util/MDNSFilteredDiscovery.java
@@ -24,7 +24,6 @@
import androidx.annotation.GuardedBy;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
-import androidx.core.util.Preconditions;
import com.android.printservice.recommendation.PrintServicePlugin;
diff --git a/packages/PrintRecommendationService/src/com/android/printservice/recommendation/util/Preconditions.java b/packages/PrintRecommendationService/src/com/android/printservice/recommendation/util/Preconditions.java
new file mode 100644
index 0000000..9bba66c
--- /dev/null
+++ b/packages/PrintRecommendationService/src/com/android/printservice/recommendation/util/Preconditions.java
@@ -0,0 +1,532 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.printservice.recommendation.util;
+
+import android.text.TextUtils;
+
+import androidx.annotation.IntRange;
+import androidx.annotation.NonNull;
+
+import java.util.Collection;
+
+/**
+ * Simple static methods to be called at the start of your own methods to verify
+ * correct arguments and state.
+ */
+public class Preconditions {
+
+ public static void checkArgument(boolean expression) {
+ if (!expression) {
+ throw new IllegalArgumentException();
+ }
+ }
+
+ /**
+ * Ensures that an expression checking an argument is true.
+ *
+ * @param expression the expression to check
+ * @param errorMessage the exception message to use if the check fails; will
+ * be converted to a string using {@link String#valueOf(Object)}
+ * @throws IllegalArgumentException if {@code expression} is false
+ */
+ public static void checkArgument(boolean expression, final Object errorMessage) {
+ if (!expression) {
+ throw new IllegalArgumentException(String.valueOf(errorMessage));
+ }
+ }
+
+ /**
+ * Ensures that an expression checking an argument is true.
+ *
+ * @param expression the expression to check
+ * @param messageTemplate a printf-style message template to use if the check fails; will
+ * be converted to a string using {@link String#format(String, Object...)}
+ * @param messageArgs arguments for {@code messageTemplate}
+ * @throws IllegalArgumentException if {@code expression} is false
+ */
+ public static void checkArgument(boolean expression,
+ final String messageTemplate,
+ final Object... messageArgs) {
+ if (!expression) {
+ throw new IllegalArgumentException(String.format(messageTemplate, messageArgs));
+ }
+ }
+
+ /**
+ * Ensures that an string reference passed as a parameter to the calling
+ * method is not empty.
+ *
+ * @param string an string reference
+ * @return the string reference that was validated
+ * @throws IllegalArgumentException if {@code string} is empty
+ */
+ public static @NonNull <T extends CharSequence> T checkStringNotEmpty(final T string) {
+ if (TextUtils.isEmpty(string)) {
+ throw new IllegalArgumentException();
+ }
+ return string;
+ }
+
+ /**
+ * Ensures that an string reference passed as a parameter to the calling
+ * method is not empty.
+ *
+ * @param string an string reference
+ * @param errorMessage the exception message to use if the check fails; will
+ * be converted to a string using {@link String#valueOf(Object)}
+ * @return the string reference that was validated
+ * @throws IllegalArgumentException if {@code string} is empty
+ */
+ public static @NonNull <T extends CharSequence> T checkStringNotEmpty(final T string,
+ final Object errorMessage) {
+ if (TextUtils.isEmpty(string)) {
+ throw new IllegalArgumentException(String.valueOf(errorMessage));
+ }
+ return string;
+ }
+
+ /**
+ * Ensures that an object reference passed as a parameter to the calling
+ * method is not null.
+ *
+ * @param reference an object reference
+ * @return the non-null reference that was validated
+ * @throws NullPointerException if {@code reference} is null
+ */
+ public static @NonNull <T> T checkNotNull(final T reference) {
+ if (reference == null) {
+ throw new NullPointerException();
+ }
+ return reference;
+ }
+
+ /**
+ * Ensures that an object reference passed as a parameter to the calling
+ * method is not null.
+ *
+ * @param reference an object reference
+ * @param errorMessage the exception message to use if the check fails; will
+ * be converted to a string using {@link String#valueOf(Object)}
+ * @return the non-null reference that was validated
+ * @throws NullPointerException if {@code reference} is null
+ */
+ public static @NonNull <T> T checkNotNull(final T reference, final Object errorMessage) {
+ if (reference == null) {
+ throw new NullPointerException(String.valueOf(errorMessage));
+ }
+ return reference;
+ }
+
+ /**
+ * Ensures that an object reference passed as a parameter to the calling
+ * method is not null.
+ *
+ * @param reference an object reference
+ * @param messageTemplate a printf-style message template to use if the check fails; will
+ * be converted to a string using {@link String#format(String, Object...)}
+ * @param messageArgs arguments for {@code messageTemplate}
+ * @return the non-null reference that was validated
+ * @throws NullPointerException if {@code reference} is null
+ */
+ public static @NonNull <T> T checkNotNull(final T reference,
+ final String messageTemplate,
+ final Object... messageArgs) {
+ if (reference == null) {
+ throw new NullPointerException(String.format(messageTemplate, messageArgs));
+ }
+ return reference;
+ }
+
+ /**
+ * Ensures the truth of an expression involving the state of the calling
+ * instance, but not involving any parameters to the calling method.
+ *
+ * @param expression a boolean expression
+ * @param message exception message
+ * @throws IllegalStateException if {@code expression} is false
+ */
+ public static void checkState(final boolean expression, String message) {
+ if (!expression) {
+ throw new IllegalStateException(message);
+ }
+ }
+
+ /**
+ * Ensures the truth of an expression involving the state of the calling
+ * instance, but not involving any parameters to the calling method.
+ *
+ * @param expression a boolean expression
+ * @throws IllegalStateException if {@code expression} is false
+ */
+ public static void checkState(final boolean expression) {
+ checkState(expression, null);
+ }
+
+ /**
+ * Check the requested flags, throwing if any requested flags are outside
+ * the allowed set.
+ *
+ * @return the validated requested flags.
+ */
+ public static int checkFlagsArgument(final int requestedFlags, final int allowedFlags) {
+ if ((requestedFlags & allowedFlags) != requestedFlags) {
+ throw new IllegalArgumentException("Requested flags 0x"
+ + Integer.toHexString(requestedFlags) + ", but only 0x"
+ + Integer.toHexString(allowedFlags) + " are allowed");
+ }
+
+ return requestedFlags;
+ }
+
+ /**
+ * Ensures that that the argument numeric value is non-negative.
+ *
+ * @param value a numeric int value
+ * @param errorMessage the exception message to use if the check fails
+ * @return the validated numeric value
+ * @throws IllegalArgumentException if {@code value} was negative
+ */
+ public static @IntRange(from = 0) int checkArgumentNonnegative(final int value,
+ final String errorMessage) {
+ if (value < 0) {
+ throw new IllegalArgumentException(errorMessage);
+ }
+
+ return value;
+ }
+
+ /**
+ * Ensures that that the argument numeric value is non-negative.
+ *
+ * @param value a numeric int value
+ *
+ * @return the validated numeric value
+ * @throws IllegalArgumentException if {@code value} was negative
+ */
+ public static @IntRange(from = 0) int checkArgumentNonnegative(final int value) {
+ if (value < 0) {
+ throw new IllegalArgumentException();
+ }
+
+ return value;
+ }
+
+ /**
+ * Ensures that that the argument numeric value is non-negative.
+ *
+ * @param value a numeric long value
+ * @return the validated numeric value
+ * @throws IllegalArgumentException if {@code value} was negative
+ */
+ public static long checkArgumentNonnegative(final long value) {
+ if (value < 0) {
+ throw new IllegalArgumentException();
+ }
+
+ return value;
+ }
+
+ /**
+ * Ensures that that the argument numeric value is non-negative.
+ *
+ * @param value a numeric long value
+ * @param errorMessage the exception message to use if the check fails
+ * @return the validated numeric value
+ * @throws IllegalArgumentException if {@code value} was negative
+ */
+ public static long checkArgumentNonnegative(final long value, final String errorMessage) {
+ if (value < 0) {
+ throw new IllegalArgumentException(errorMessage);
+ }
+
+ return value;
+ }
+
+ /**
+ * Ensures that that the argument numeric value is positive.
+ *
+ * @param value a numeric int value
+ * @param errorMessage the exception message to use if the check fails
+ * @return the validated numeric value
+ * @throws IllegalArgumentException if {@code value} was not positive
+ */
+ public static int checkArgumentPositive(final int value, final String errorMessage) {
+ if (value <= 0) {
+ throw new IllegalArgumentException(errorMessage);
+ }
+
+ return value;
+ }
+
+ /**
+ * Ensures that the argument floating point value is a finite number.
+ *
+ * <p>A finite number is defined to be both representable (that is, not NaN) and
+ * not infinite (that is neither positive or negative infinity).</p>
+ *
+ * @param value a floating point value
+ * @param valueName the name of the argument to use if the check fails
+ *
+ * @return the validated floating point value
+ *
+ * @throws IllegalArgumentException if {@code value} was not finite
+ */
+ public static float checkArgumentFinite(final float value, final String valueName) {
+ if (Float.isNaN(value)) {
+ throw new IllegalArgumentException(valueName + " must not be NaN");
+ } else if (Float.isInfinite(value)) {
+ throw new IllegalArgumentException(valueName + " must not be infinite");
+ }
+
+ return value;
+ }
+
+ /**
+ * Ensures that the argument floating point value is within the inclusive range.
+ *
+ * <p>While this can be used to range check against +/- infinity, note that all NaN numbers
+ * will always be out of range.</p>
+ *
+ * @param value a floating point value
+ * @param lower the lower endpoint of the inclusive range
+ * @param upper the upper endpoint of the inclusive range
+ * @param valueName the name of the argument to use if the check fails
+ *
+ * @return the validated floating point value
+ *
+ * @throws IllegalArgumentException if {@code value} was not within the range
+ */
+ public static float checkArgumentInRange(float value, float lower, float upper,
+ String valueName) {
+ if (Float.isNaN(value)) {
+ throw new IllegalArgumentException(valueName + " must not be NaN");
+ } else if (value < lower) {
+ throw new IllegalArgumentException(
+ String.format(
+ "%s is out of range of [%f, %f] (too low)", valueName, lower, upper));
+ } else if (value > upper) {
+ throw new IllegalArgumentException(
+ String.format(
+ "%s is out of range of [%f, %f] (too high)", valueName, lower, upper));
+ }
+
+ return value;
+ }
+
+ /**
+ * Ensures that the argument int value is within the inclusive range.
+ *
+ * @param value a int value
+ * @param lower the lower endpoint of the inclusive range
+ * @param upper the upper endpoint of the inclusive range
+ * @param valueName the name of the argument to use if the check fails
+ *
+ * @return the validated int value
+ *
+ * @throws IllegalArgumentException if {@code value} was not within the range
+ */
+ public static int checkArgumentInRange(int value, int lower, int upper,
+ String valueName) {
+ if (value < lower) {
+ throw new IllegalArgumentException(
+ String.format(
+ "%s is out of range of [%d, %d] (too low)", valueName, lower, upper));
+ } else if (value > upper) {
+ throw new IllegalArgumentException(
+ String.format(
+ "%s is out of range of [%d, %d] (too high)", valueName, lower, upper));
+ }
+
+ return value;
+ }
+
+ /**
+ * Ensures that the argument long value is within the inclusive range.
+ *
+ * @param value a long value
+ * @param lower the lower endpoint of the inclusive range
+ * @param upper the upper endpoint of the inclusive range
+ * @param valueName the name of the argument to use if the check fails
+ *
+ * @return the validated long value
+ *
+ * @throws IllegalArgumentException if {@code value} was not within the range
+ */
+ public static long checkArgumentInRange(long value, long lower, long upper,
+ String valueName) {
+ if (value < lower) {
+ throw new IllegalArgumentException(
+ String.format(
+ "%s is out of range of [%d, %d] (too low)", valueName, lower, upper));
+ } else if (value > upper) {
+ throw new IllegalArgumentException(
+ String.format(
+ "%s is out of range of [%d, %d] (too high)", valueName, lower, upper));
+ }
+
+ return value;
+ }
+
+ /**
+ * Ensures that the array is not {@code null}, and none of its elements are {@code null}.
+ *
+ * @param value an array of boxed objects
+ * @param valueName the name of the argument to use if the check fails
+ *
+ * @return the validated array
+ *
+ * @throws NullPointerException if the {@code value} or any of its elements were {@code null}
+ */
+ public static <T> T[] checkArrayElementsNotNull(final T[] value, final String valueName) {
+ if (value == null) {
+ throw new NullPointerException(valueName + " must not be null");
+ }
+
+ for (int i = 0; i < value.length; ++i) {
+ if (value[i] == null) {
+ throw new NullPointerException(
+ String.format("%s[%d] must not be null", valueName, i));
+ }
+ }
+
+ return value;
+ }
+
+ /**
+ * Ensures that the {@link Collection} is not {@code null}, and none of its elements are
+ * {@code null}.
+ *
+ * @param value a {@link Collection} of boxed objects
+ * @param valueName the name of the argument to use if the check fails
+ *
+ * @return the validated {@link Collection}
+ *
+ * @throws NullPointerException if the {@code value} or any of its elements were {@code null}
+ */
+ public static @NonNull <C extends Collection<T>, T> C checkCollectionElementsNotNull(
+ final C value, final String valueName) {
+ if (value == null) {
+ throw new NullPointerException(valueName + " must not be null");
+ }
+
+ long ctr = 0;
+ for (T elem : value) {
+ if (elem == null) {
+ throw new NullPointerException(
+ String.format("%s[%d] must not be null", valueName, ctr));
+ }
+ ++ctr;
+ }
+
+ return value;
+ }
+
+ /**
+ * Ensures that the {@link Collection} is not {@code null}, and contains at least one element.
+ *
+ * @param value a {@link Collection} of boxed elements.
+ * @param valueName the name of the argument to use if the check fails.
+
+ * @return the validated {@link Collection}
+ *
+ * @throws NullPointerException if the {@code value} was {@code null}
+ * @throws IllegalArgumentException if the {@code value} was empty
+ */
+ public static <T> Collection<T> checkCollectionNotEmpty(final Collection<T> value,
+ final String valueName) {
+ if (value == null) {
+ throw new NullPointerException(valueName + " must not be null");
+ }
+ if (value.isEmpty()) {
+ throw new IllegalArgumentException(valueName + " is empty");
+ }
+ return value;
+ }
+
+ /**
+ * Ensures that all elements in the argument floating point array are within the inclusive range
+ *
+ * <p>While this can be used to range check against +/- infinity, note that all NaN numbers
+ * will always be out of range.</p>
+ *
+ * @param value a floating point array of values
+ * @param lower the lower endpoint of the inclusive range
+ * @param upper the upper endpoint of the inclusive range
+ * @param valueName the name of the argument to use if the check fails
+ *
+ * @return the validated floating point value
+ *
+ * @throws IllegalArgumentException if any of the elements in {@code value} were out of range
+ * @throws NullPointerException if the {@code value} was {@code null}
+ */
+ public static float[] checkArrayElementsInRange(float[] value, float lower, float upper,
+ String valueName) {
+ checkNotNull(value, valueName + " must not be null");
+
+ for (int i = 0; i < value.length; ++i) {
+ float v = value[i];
+
+ if (Float.isNaN(v)) {
+ throw new IllegalArgumentException(valueName + "[" + i + "] must not be NaN");
+ } else if (v < lower) {
+ throw new IllegalArgumentException(
+ String.format("%s[%d] is out of range of [%f, %f] (too low)",
+ valueName, i, lower, upper));
+ } else if (v > upper) {
+ throw new IllegalArgumentException(
+ String.format("%s[%d] is out of range of [%f, %f] (too high)",
+ valueName, i, lower, upper));
+ }
+ }
+
+ return value;
+ }
+
+ /**
+ * Ensures that all elements in the argument integer array are within the inclusive range
+ *
+ * @param value an integer array of values
+ * @param lower the lower endpoint of the inclusive range
+ * @param upper the upper endpoint of the inclusive range
+ * @param valueName the name of the argument to use if the check fails
+ *
+ * @return the validated integer array
+ *
+ * @throws IllegalArgumentException if any of the elements in {@code value} were out of range
+ * @throws NullPointerException if the {@code value} was {@code null}
+ */
+ public static int[] checkArrayElementsInRange(int[] value, int lower, int upper,
+ String valueName) {
+ checkNotNull(value, valueName + " must not be null");
+
+ for (int i = 0; i < value.length; ++i) {
+ int v = value[i];
+
+ if (v < lower) {
+ throw new IllegalArgumentException(
+ String.format("%s[%d] is out of range of [%d, %d] (too low)",
+ valueName, i, lower, upper));
+ } else if (v > upper) {
+ throw new IllegalArgumentException(
+ String.format("%s[%d] is out of range of [%d, %d] (too high)",
+ valueName, i, lower, upper));
+ }
+ }
+
+ return value;
+ }
+}
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/A2dpProfile.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/A2dpProfile.java
index f2c2b08..a710410 100644
--- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/A2dpProfile.java
+++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/A2dpProfile.java
@@ -42,7 +42,6 @@
private BluetoothA2dp mService;
private boolean mIsProfileReady;
- private final LocalBluetoothAdapter mLocalAdapter;
private final CachedBluetoothDeviceManager mDeviceManager;
static final ParcelUuid[] SINK_UUIDS = {
@@ -71,7 +70,7 @@
// we may add a new device here, but generally this should not happen
if (device == null) {
Log.w(TAG, "A2dpProfile found new device: " + nextDevice);
- device = mDeviceManager.addDevice(mLocalAdapter, nextDevice);
+ device = mDeviceManager.addDevice(nextDevice);
}
device.onProfileStateChanged(A2dpProfile.this, BluetoothProfile.STATE_CONNECTED);
device.refresh();
@@ -94,14 +93,12 @@
return BluetoothProfile.A2DP;
}
- A2dpProfile(Context context, LocalBluetoothAdapter adapter,
- CachedBluetoothDeviceManager deviceManager,
+ A2dpProfile(Context context, CachedBluetoothDeviceManager deviceManager,
LocalBluetoothProfileManager profileManager) {
mContext = context;
- mLocalAdapter = adapter;
mDeviceManager = deviceManager;
mProfileManager = profileManager;
- mLocalAdapter.getProfileProxy(context, new A2dpServiceListener(),
+ BluetoothAdapter.getDefaultAdapter().getProfileProxy(context, new A2dpServiceListener(),
BluetoothProfile.A2DP);
}
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/A2dpSinkProfile.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/A2dpSinkProfile.java
index 6a4aa0a..0c4e02b 100644
--- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/A2dpSinkProfile.java
+++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/A2dpSinkProfile.java
@@ -38,7 +38,6 @@
private BluetoothA2dpSink mService;
private boolean mIsProfileReady;
- private final LocalBluetoothAdapter mLocalAdapter;
private final CachedBluetoothDeviceManager mDeviceManager;
static final ParcelUuid[] SRC_UUIDS = {
@@ -67,7 +66,7 @@
// we may add a new device here, but generally this should not happen
if (device == null) {
Log.w(TAG, "A2dpSinkProfile found new device: " + nextDevice);
- device = mDeviceManager.addDevice(mLocalAdapter, nextDevice);
+ device = mDeviceManager.addDevice(nextDevice);
}
device.onProfileStateChanged(A2dpSinkProfile.this, BluetoothProfile.STATE_CONNECTED);
device.refresh();
@@ -90,13 +89,11 @@
return BluetoothProfile.A2DP_SINK;
}
- A2dpSinkProfile(Context context, LocalBluetoothAdapter adapter,
- CachedBluetoothDeviceManager deviceManager,
+ A2dpSinkProfile(Context context, CachedBluetoothDeviceManager deviceManager,
LocalBluetoothProfileManager profileManager) {
- mLocalAdapter = adapter;
mDeviceManager = deviceManager;
mProfileManager = profileManager;
- mLocalAdapter.getProfileProxy(context, new A2dpSinkServiceListener(),
+ BluetoothAdapter.getDefaultAdapter().getProfileProxy(context, new A2dpSinkServiceListener(),
BluetoothProfile.A2DP_SINK);
}
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/BluetoothEventManager.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/BluetoothEventManager.java
index a3f3b59..466d02b 100644
--- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/BluetoothEventManager.java
+++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/BluetoothEventManager.java
@@ -150,7 +150,7 @@
for (BluetoothDevice device : bondedDevices) {
CachedBluetoothDevice cachedDevice = mDeviceManager.findDevice(device);
if (cachedDevice == null) {
- cachedDevice = mDeviceManager.addDevice(mLocalAdapter, device);
+ cachedDevice = mDeviceManager.addDevice(device);
dispatchDeviceAdded(cachedDevice);
deviceAdded = true;
}
@@ -282,7 +282,7 @@
// Skip for now, there's a bluez problem and we are not getting uuids even for 2.1.
CachedBluetoothDevice cachedDevice = mDeviceManager.findDevice(device);
if (cachedDevice == null) {
- cachedDevice = mDeviceManager.addDevice(mLocalAdapter, device);
+ cachedDevice = mDeviceManager.addDevice(device);
Log.d(TAG, "DeviceFoundHandler created new CachedBluetoothDevice: "
+ cachedDevice);
}
@@ -348,8 +348,7 @@
if (cachedDevice == null) {
Log.w(TAG, "Got bonding state changed for " + device +
", but we have no record of that device.");
-
- cachedDevice = mDeviceManager.addDevice(mLocalAdapter, device);
+ cachedDevice = mDeviceManager.addDevice(device);
dispatchDeviceAdded(cachedDevice);
}
}
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDevice.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDevice.java
index b0ff9e3..5ecbe80 100644
--- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDevice.java
+++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDevice.java
@@ -48,7 +48,7 @@
private static final String TAG = "CachedBluetoothDevice";
private final Context mContext;
- private final LocalBluetoothAdapter mLocalAdapter;
+ private final BluetoothAdapter mLocalAdapter;
private final LocalBluetoothProfileManager mProfileManager;
private final BluetoothDevice mDevice;
//TODO: consider remove, BluetoothDevice.getName() is already cached
@@ -143,7 +143,7 @@
Log.d(TAG, "onProfileStateChanged: profile " + profile +
" newProfileState " + newProfileState);
}
- if (mLocalAdapter.getBluetoothState() == BluetoothAdapter.STATE_TURNING_OFF)
+ if (mLocalAdapter.getState() == BluetoothAdapter.STATE_TURNING_OFF)
{
if (BluetoothUtils.D) {
Log.d(TAG, " BT Turninig Off...Profile conn state change ignored...");
@@ -179,11 +179,10 @@
}
CachedBluetoothDevice(Context context,
- LocalBluetoothAdapter adapter,
LocalBluetoothProfileManager profileManager,
BluetoothDevice device) {
mContext = context;
- mLocalAdapter = adapter;
+ mLocalAdapter = BluetoothAdapter.getDefaultAdapter();
mProfileManager = profileManager;
mDevice = device;
mProfileConnectionState = new HashMap<LocalBluetoothProfile, Integer>();
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDeviceManager.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDeviceManager.java
index 475ece8..f8543fc 100644
--- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDeviceManager.java
+++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDeviceManager.java
@@ -107,10 +107,10 @@
* @param device the address of the new Bluetooth device
* @return the newly created CachedBluetoothDevice object
*/
- public CachedBluetoothDevice addDevice(LocalBluetoothAdapter adapter, BluetoothDevice device) {
+ public CachedBluetoothDevice addDevice(BluetoothDevice device) {
LocalBluetoothProfileManager profileManager = mBtManager.getProfileManager();
- CachedBluetoothDevice newDevice = new CachedBluetoothDevice(mContext, adapter,
- profileManager, device);
+ CachedBluetoothDevice newDevice = new CachedBluetoothDevice(mContext, profileManager,
+ device);
if (profileManager.getHearingAidProfile() != null
&& profileManager.getHearingAidProfile().getHiSyncId(newDevice.getDevice())
!= BluetoothHearingAid.HI_SYNC_ID_INVALID) {
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/HeadsetProfile.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/HeadsetProfile.java
index e284382..99f550b 100644
--- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/HeadsetProfile.java
+++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/HeadsetProfile.java
@@ -41,7 +41,6 @@
private BluetoothHeadset mService;
private boolean mIsProfileReady;
- private final LocalBluetoothAdapter mLocalAdapter;
private final CachedBluetoothDeviceManager mDeviceManager;
private final LocalBluetoothProfileManager mProfileManager;
@@ -70,7 +69,7 @@
// we may add a new device here, but generally this should not happen
if (device == null) {
Log.w(TAG, "HeadsetProfile found new device: " + nextDevice);
- device = mDeviceManager.addDevice(mLocalAdapter, nextDevice);
+ device = mDeviceManager.addDevice(nextDevice);
}
device.onProfileStateChanged(HeadsetProfile.this,
BluetoothProfile.STATE_CONNECTED);
@@ -97,13 +96,11 @@
return BluetoothProfile.HEADSET;
}
- HeadsetProfile(Context context, LocalBluetoothAdapter adapter,
- CachedBluetoothDeviceManager deviceManager,
+ HeadsetProfile(Context context, CachedBluetoothDeviceManager deviceManager,
LocalBluetoothProfileManager profileManager) {
- mLocalAdapter = adapter;
mDeviceManager = deviceManager;
mProfileManager = profileManager;
- mLocalAdapter.getProfileProxy(context, new HeadsetServiceListener(),
+ BluetoothAdapter.getDefaultAdapter().getProfileProxy(context, new HeadsetServiceListener(),
BluetoothProfile.HEADSET);
}
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/HearingAidProfile.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/HearingAidProfile.java
index a0cf105..6eaa620 100644
--- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/HearingAidProfile.java
+++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/HearingAidProfile.java
@@ -38,7 +38,6 @@
private BluetoothHearingAid mService;
private boolean mIsProfileReady;
- private final LocalBluetoothAdapter mLocalAdapter;
private final CachedBluetoothDeviceManager mDeviceManager;
static final String NAME = "HearingAid";
@@ -64,7 +63,7 @@
if (V) {
Log.d(TAG, "HearingAidProfile found new device: " + nextDevice);
}
- device = mDeviceManager.addDevice(mLocalAdapter, nextDevice);
+ device = mDeviceManager.addDevice(nextDevice);
}
device.onProfileStateChanged(HearingAidProfile.this,
BluetoothProfile.STATE_CONNECTED);
@@ -92,15 +91,13 @@
return BluetoothProfile.HEARING_AID;
}
- HearingAidProfile(Context context, LocalBluetoothAdapter adapter,
- CachedBluetoothDeviceManager deviceManager,
+ HearingAidProfile(Context context, CachedBluetoothDeviceManager deviceManager,
LocalBluetoothProfileManager profileManager) {
mContext = context;
- mLocalAdapter = adapter;
mDeviceManager = deviceManager;
mProfileManager = profileManager;
- mLocalAdapter.getProfileProxy(context, new HearingAidServiceListener(),
- BluetoothProfile.HEARING_AID);
+ BluetoothAdapter.getDefaultAdapter().getProfileProxy(context,
+ new HearingAidServiceListener(), BluetoothProfile.HEARING_AID);
}
public boolean isConnectable() {
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/HfpClientProfile.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/HfpClientProfile.java
index b8c72fb..4b4db75 100644
--- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/HfpClientProfile.java
+++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/HfpClientProfile.java
@@ -41,7 +41,6 @@
private BluetoothHeadsetClient mService;
private boolean mIsProfileReady;
- private final LocalBluetoothAdapter mLocalAdapter;
private final CachedBluetoothDeviceManager mDeviceManager;
static final ParcelUuid[] SRC_UUIDS = {
@@ -71,7 +70,7 @@
// we may add a new device here, but generally this should not happen
if (device == null) {
Log.w(TAG, "HfpClient profile found new device: " + nextDevice);
- device = mDeviceManager.addDevice(mLocalAdapter, nextDevice);
+ device = mDeviceManager.addDevice(nextDevice);
}
device.onProfileStateChanged(
HfpClientProfile.this, BluetoothProfile.STATE_CONNECTED);
@@ -97,14 +96,12 @@
return BluetoothProfile.HEADSET_CLIENT;
}
- HfpClientProfile(Context context, LocalBluetoothAdapter adapter,
- CachedBluetoothDeviceManager deviceManager,
+ HfpClientProfile(Context context, CachedBluetoothDeviceManager deviceManager,
LocalBluetoothProfileManager profileManager) {
- mLocalAdapter = adapter;
mDeviceManager = deviceManager;
mProfileManager = profileManager;
- mLocalAdapter.getProfileProxy(context, new HfpClientServiceListener(),
- BluetoothProfile.HEADSET_CLIENT);
+ BluetoothAdapter.getDefaultAdapter().getProfileProxy(context,
+ new HfpClientServiceListener(), BluetoothProfile.HEADSET_CLIENT);
}
@Override
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/HidDeviceProfile.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/HidDeviceProfile.java
index f9da109..8c4bff5 100644
--- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/HidDeviceProfile.java
+++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/HidDeviceProfile.java
@@ -39,7 +39,6 @@
private static final int PREFERRED_VALUE = -1;
private static final boolean DEBUG = true;
- private final LocalBluetoothAdapter mLocalAdapter;
private final CachedBluetoothDeviceManager mDeviceManager;
private final LocalBluetoothProfileManager mProfileManager;
static final String NAME = "HID DEVICE";
@@ -47,14 +46,12 @@
private BluetoothHidDevice mService;
private boolean mIsProfileReady;
- HidDeviceProfile(Context context, LocalBluetoothAdapter adapter,
- CachedBluetoothDeviceManager deviceManager,
+ HidDeviceProfile(Context context,CachedBluetoothDeviceManager deviceManager,
LocalBluetoothProfileManager profileManager) {
- mLocalAdapter = adapter;
mDeviceManager = deviceManager;
mProfileManager = profileManager;
- adapter.getProfileProxy(context, new HidDeviceServiceListener(),
- BluetoothProfile.HID_DEVICE);
+ BluetoothAdapter.getDefaultAdapter().getProfileProxy(context,
+ new HidDeviceServiceListener(), BluetoothProfile.HID_DEVICE);
}
// These callbacks run on the main thread.
@@ -73,7 +70,7 @@
// we may add a new device here, but generally this should not happen
if (device == null) {
Log.w(TAG, "HidProfile found new device: " + nextDevice);
- device = mDeviceManager.addDevice(mLocalAdapter, nextDevice);
+ device = mDeviceManager.addDevice(nextDevice);
}
Log.d(TAG, "Connection status changed: " + device);
device.onProfileStateChanged(HidDeviceProfile.this,
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/HidProfile.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/HidProfile.java
index c5ba58c..701ef00 100644
--- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/HidProfile.java
+++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/HidProfile.java
@@ -38,7 +38,6 @@
private BluetoothHidHost mService;
private boolean mIsProfileReady;
- private final LocalBluetoothAdapter mLocalAdapter;
private final CachedBluetoothDeviceManager mDeviceManager;
private final LocalBluetoothProfileManager mProfileManager;
@@ -62,7 +61,7 @@
// we may add a new device here, but generally this should not happen
if (device == null) {
Log.w(TAG, "HidProfile found new device: " + nextDevice);
- device = mDeviceManager.addDevice(mLocalAdapter, nextDevice);
+ device = mDeviceManager.addDevice(nextDevice);
}
device.onProfileStateChanged(HidProfile.this, BluetoothProfile.STATE_CONNECTED);
device.refresh();
@@ -85,13 +84,12 @@
return BluetoothProfile.HID_HOST;
}
- HidProfile(Context context, LocalBluetoothAdapter adapter,
+ HidProfile(Context context,
CachedBluetoothDeviceManager deviceManager,
LocalBluetoothProfileManager profileManager) {
- mLocalAdapter = adapter;
mDeviceManager = deviceManager;
mProfileManager = profileManager;
- adapter.getProfileProxy(context, new HidHostServiceListener(),
+ BluetoothAdapter.getDefaultAdapter().getProfileProxy(context, new HidHostServiceListener(),
BluetoothProfile.HID_HOST);
}
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothProfileManager.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothProfileManager.java
index 3ebbf7e..8bb8210 100644
--- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothProfileManager.java
+++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothProfileManager.java
@@ -18,6 +18,7 @@
import android.bluetooth.BluetoothA2dp;
import android.bluetooth.BluetoothA2dpSink;
+import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothHeadset;
import android.bluetooth.BluetoothHeadsetClient;
@@ -79,7 +80,6 @@
}
private final Context mContext;
- private final LocalBluetoothAdapter mLocalAdapter;
private final CachedBluetoothDeviceManager mDeviceManager;
private final BluetoothEventManager mEventManager;
@@ -111,14 +111,13 @@
BluetoothEventManager eventManager) {
mContext = context;
- mLocalAdapter = adapter;
mDeviceManager = deviceManager;
mEventManager = eventManager;
mUsePbapPce = mContext.getResources().getBoolean(R.bool.enable_pbap_pce_profile);
// MAP Client is typically used in the same situations as PBAP Client
mUseMapClient = mContext.getResources().getBoolean(R.bool.enable_pbap_pce_profile);
// pass this reference to adapter and event manager (circular dependency)
- mLocalAdapter.setProfileManager(this);
+ adapter.setProfileManager(this);
updateLocalProfiles();
if (DEBUG) Log.d(TAG, "LocalBluetoothProfileManager construction complete");
@@ -128,26 +127,26 @@
* create profile instance according to bluetooth supported profile list
*/
void updateLocalProfiles() {
- List<Integer> supportedList = mLocalAdapter.getSupportedProfiles();
+ List<Integer> supportedList = BluetoothAdapter.getDefaultAdapter().getSupportedProfiles();
if (CollectionUtils.isEmpty(supportedList)) {
if(DEBUG) Log.d(TAG, "supportedList is null");
return;
}
if (mA2dpProfile == null && supportedList.contains(BluetoothProfile.A2DP)) {
if(DEBUG) Log.d(TAG, "Adding local A2DP profile");
- mA2dpProfile = new A2dpProfile(mContext, mLocalAdapter, mDeviceManager, this);
+ mA2dpProfile = new A2dpProfile(mContext, mDeviceManager, this);
addProfile(mA2dpProfile, A2dpProfile.NAME,
BluetoothA2dp.ACTION_CONNECTION_STATE_CHANGED);
}
if (mA2dpSinkProfile == null && supportedList.contains(BluetoothProfile.A2DP_SINK)) {
if(DEBUG) Log.d(TAG, "Adding local A2DP SINK profile");
- mA2dpSinkProfile = new A2dpSinkProfile(mContext, mLocalAdapter, mDeviceManager, this);
+ mA2dpSinkProfile = new A2dpSinkProfile(mContext, mDeviceManager, this);
addProfile(mA2dpSinkProfile, A2dpSinkProfile.NAME,
BluetoothA2dpSink.ACTION_CONNECTION_STATE_CHANGED);
}
if (mHeadsetProfile == null && supportedList.contains(BluetoothProfile.HEADSET)) {
if (DEBUG) Log.d(TAG, "Adding local HEADSET profile");
- mHeadsetProfile = new HeadsetProfile(mContext, mLocalAdapter, mDeviceManager, this);
+ mHeadsetProfile = new HeadsetProfile(mContext, mDeviceManager, this);
addHeadsetProfile(mHeadsetProfile, HeadsetProfile.NAME,
BluetoothHeadset.ACTION_CONNECTION_STATE_CHANGED,
BluetoothHeadset.ACTION_AUDIO_STATE_CHANGED,
@@ -155,7 +154,7 @@
}
if (mHfpClientProfile == null && supportedList.contains(BluetoothProfile.HEADSET_CLIENT)) {
if(DEBUG) Log.d(TAG, "Adding local HfpClient profile");
- mHfpClientProfile = new HfpClientProfile(mContext, mLocalAdapter, mDeviceManager, this);
+ mHfpClientProfile = new HfpClientProfile(mContext, mDeviceManager, this);
addHeadsetProfile(mHfpClientProfile, HfpClientProfile.NAME,
BluetoothHeadsetClient.ACTION_CONNECTION_STATE_CHANGED,
BluetoothHeadsetClient.ACTION_AUDIO_STATE_CHANGED,
@@ -165,13 +164,13 @@
if (mMapClientProfile == null && supportedList.contains(BluetoothProfile.MAP_CLIENT)) {
if(DEBUG) Log.d(TAG, "Adding local MAP CLIENT profile");
mMapClientProfile =
- new MapClientProfile(mContext, mLocalAdapter, mDeviceManager,this);
+ new MapClientProfile(mContext, mDeviceManager,this);
addProfile(mMapClientProfile, MapClientProfile.NAME,
BluetoothMapClient.ACTION_CONNECTION_STATE_CHANGED);
}
} else if (mMapProfile == null && supportedList.contains(BluetoothProfile.MAP)) {
if(DEBUG) Log.d(TAG, "Adding local MAP profile");
- mMapProfile = new MapProfile(mContext, mLocalAdapter, mDeviceManager, this);
+ mMapProfile = new MapProfile(mContext, mDeviceManager, this);
addProfile(mMapProfile, MapProfile.NAME, BluetoothMap.ACTION_CONNECTION_STATE_CHANGED);
}
if (mOppProfile == null && supportedList.contains(BluetoothProfile.OPP)) {
@@ -182,26 +181,26 @@
}
if (mHearingAidProfile == null && supportedList.contains(BluetoothProfile.HEARING_AID)) {
if(DEBUG) Log.d(TAG, "Adding local Hearing Aid profile");
- mHearingAidProfile = new HearingAidProfile(mContext, mLocalAdapter, mDeviceManager,
+ mHearingAidProfile = new HearingAidProfile(mContext, mDeviceManager,
this);
addProfile(mHearingAidProfile, HearingAidProfile.NAME,
BluetoothHearingAid.ACTION_CONNECTION_STATE_CHANGED);
}
if (mHidProfile == null && supportedList.contains(BluetoothProfile.HID_HOST)) {
if(DEBUG) Log.d(TAG, "Adding local HID_HOST profile");
- mHidProfile = new HidProfile(mContext, mLocalAdapter, mDeviceManager, this);
+ mHidProfile = new HidProfile(mContext, mDeviceManager, this);
addProfile(mHidProfile, HidProfile.NAME,
BluetoothHidHost.ACTION_CONNECTION_STATE_CHANGED);
}
if (mHidDeviceProfile == null && supportedList.contains(BluetoothProfile.HID_DEVICE)) {
if(DEBUG) Log.d(TAG, "Adding local HID_DEVICE profile");
- mHidDeviceProfile = new HidDeviceProfile(mContext, mLocalAdapter, mDeviceManager, this);
+ mHidDeviceProfile = new HidDeviceProfile(mContext, mDeviceManager, this);
addProfile(mHidDeviceProfile, HidDeviceProfile.NAME,
BluetoothHidDevice.ACTION_CONNECTION_STATE_CHANGED);
}
if (mPanProfile == null && supportedList.contains(BluetoothProfile.PAN)) {
if(DEBUG) Log.d(TAG, "Adding local PAN profile");
- mPanProfile = new PanProfile(mContext, mLocalAdapter);
+ mPanProfile = new PanProfile(mContext);
addPanProfile(mPanProfile, PanProfile.NAME,
BluetoothPan.ACTION_CONNECTION_STATE_CHANGED);
}
@@ -214,8 +213,7 @@
if (mUsePbapPce && mPbapClientProfile == null && supportedList.contains(
BluetoothProfile.PBAP_CLIENT)) {
if(DEBUG) Log.d(TAG, "Adding local PBAP Client profile");
- mPbapClientProfile = new PbapClientProfile(mContext, mLocalAdapter, mDeviceManager,
- this);
+ mPbapClientProfile = new PbapClientProfile(mContext, mDeviceManager,this);
addProfile(mPbapClientProfile, PbapClientProfile.NAME,
BluetoothPbapClient.ACTION_CONNECTION_STATE_CHANGED);
}
@@ -271,7 +269,7 @@
CachedBluetoothDevice cachedDevice = mDeviceManager.findDevice(device);
if (cachedDevice == null) {
Log.w(TAG, "StateChangedHandler found new device: " + device);
- cachedDevice = mDeviceManager.addDevice(mLocalAdapter, device);
+ cachedDevice = mDeviceManager.addDevice(device);
}
onReceiveInternal(intent, cachedDevice);
}
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/MapClientProfile.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/MapClientProfile.java
index 63af24c..7d334eb 100644
--- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/MapClientProfile.java
+++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/MapClientProfile.java
@@ -41,7 +41,6 @@
private BluetoothMapClient mService;
private boolean mIsProfileReady;
- private final LocalBluetoothAdapter mLocalAdapter;
private final CachedBluetoothDeviceManager mDeviceManager;
private final LocalBluetoothProfileManager mProfileManager;
@@ -71,7 +70,7 @@
// we may add a new device here, but generally this should not happen
if (device == null) {
Log.w(TAG, "MapProfile found new device: " + nextDevice);
- device = mDeviceManager.addDevice(mLocalAdapter, nextDevice);
+ device = mDeviceManager.addDevice(nextDevice);
}
device.onProfileStateChanged(MapClientProfile.this,
BluetoothProfile.STATE_CONNECTED);
@@ -99,14 +98,12 @@
return BluetoothProfile.MAP_CLIENT;
}
- MapClientProfile(Context context, LocalBluetoothAdapter adapter,
- CachedBluetoothDeviceManager deviceManager,
+ MapClientProfile(Context context, CachedBluetoothDeviceManager deviceManager,
LocalBluetoothProfileManager profileManager) {
- mLocalAdapter = adapter;
mDeviceManager = deviceManager;
mProfileManager = profileManager;
- mLocalAdapter.getProfileProxy(context, new MapClientServiceListener(),
- BluetoothProfile.MAP_CLIENT);
+ BluetoothAdapter.getDefaultAdapter().getProfileProxy(context,
+ new MapClientServiceListener(), BluetoothProfile.MAP_CLIENT);
}
public boolean isConnectable() {
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/MapProfile.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/MapProfile.java
index 2c63d50..689669f 100644
--- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/MapProfile.java
+++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/MapProfile.java
@@ -41,7 +41,6 @@
private BluetoothMap mService;
private boolean mIsProfileReady;
- private final LocalBluetoothAdapter mLocalAdapter;
private final CachedBluetoothDeviceManager mDeviceManager;
private final LocalBluetoothProfileManager mProfileManager;
@@ -70,7 +69,7 @@
// we may add a new device here, but generally this should not happen
if (device == null) {
Log.w(TAG, "MapProfile found new device: " + nextDevice);
- device = mDeviceManager.addDevice(mLocalAdapter, nextDevice);
+ device = mDeviceManager.addDevice(nextDevice);
}
device.onProfileStateChanged(MapProfile.this,
BluetoothProfile.STATE_CONNECTED);
@@ -98,13 +97,11 @@
return BluetoothProfile.MAP;
}
- MapProfile(Context context, LocalBluetoothAdapter adapter,
- CachedBluetoothDeviceManager deviceManager,
+ MapProfile(Context context, CachedBluetoothDeviceManager deviceManager,
LocalBluetoothProfileManager profileManager) {
- mLocalAdapter = adapter;
mDeviceManager = deviceManager;
mProfileManager = profileManager;
- mLocalAdapter.getProfileProxy(context, new MapServiceListener(),
+ BluetoothAdapter.getDefaultAdapter().getProfileProxy(context, new MapServiceListener(),
BluetoothProfile.MAP);
}
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/PanProfile.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/PanProfile.java
index e204d03..02afe8d 100644
--- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/PanProfile.java
+++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/PanProfile.java
@@ -38,7 +38,6 @@
private BluetoothPan mService;
private boolean mIsProfileReady;
- private final LocalBluetoothAdapter mLocalAdapter;
// Tethering direction for each device
private final HashMap<BluetoothDevice, Integer> mDeviceRoleMap =
@@ -74,9 +73,8 @@
return BluetoothProfile.PAN;
}
- PanProfile(Context context, LocalBluetoothAdapter adapter) {
- mLocalAdapter = adapter;
- mLocalAdapter.getProfileProxy(context, new PanServiceListener(),
+ PanProfile(Context context) {
+ BluetoothAdapter.getDefaultAdapter().getProfileProxy(context, new PanServiceListener(),
BluetoothProfile.PAN);
}
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/PbapClientProfile.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/PbapClientProfile.java
index d34ad30..ad3506f 100644
--- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/PbapClientProfile.java
+++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/PbapClientProfile.java
@@ -39,7 +39,6 @@
private BluetoothPbapClient mService;
private boolean mIsProfileReady;
- private final LocalBluetoothAdapter mLocalAdapter;
private final CachedBluetoothDeviceManager mDeviceManager;
static final ParcelUuid[] SRC_UUIDS = {
@@ -69,7 +68,7 @@
// we may add a new device here, but generally this should not happen
if (device == null) {
Log.w(TAG, "PbapClientProfile found new device: " + nextDevice);
- device = mDeviceManager.addDevice(mLocalAdapter, nextDevice);
+ device = mDeviceManager.addDevice(nextDevice);
}
device.onProfileStateChanged(PbapClientProfile.this, BluetoothProfile.STATE_CONNECTED);
device.refresh();
@@ -105,14 +104,12 @@
return BluetoothProfile.PBAP_CLIENT;
}
- PbapClientProfile(Context context, LocalBluetoothAdapter adapter,
- CachedBluetoothDeviceManager deviceManager,
+ PbapClientProfile(Context context, CachedBluetoothDeviceManager deviceManager,
LocalBluetoothProfileManager profileManager) {
- mLocalAdapter = adapter;
mDeviceManager = deviceManager;
mProfileManager = profileManager;
- mLocalAdapter.getProfileProxy(context, new PbapClientServiceListener(),
- BluetoothProfile.PBAP_CLIENT);
+ BluetoothAdapter.getDefaultAdapter().getProfileProxy(context,
+ new PbapClientServiceListener(), BluetoothProfile.PBAP_CLIENT);
}
public boolean isConnectable() {
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/SapProfile.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/SapProfile.java
index f1d73ed..f0e259e 100644
--- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/SapProfile.java
+++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/SapProfile.java
@@ -69,7 +69,7 @@
// we may add a new device here, but generally this should not happen
if (device == null) {
Log.w(TAG, "SapProfile found new device: " + nextDevice);
- device = mDeviceManager.addDevice(mLocalAdapter, nextDevice);
+ device = mDeviceManager.addDevice(nextDevice);
}
device.onProfileStateChanged(SapProfile.this,
BluetoothProfile.STATE_CONNECTED);
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/A2dpProfileTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/A2dpProfileTest.java
index b2ab45c..29831a8 100644
--- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/A2dpProfileTest.java
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/A2dpProfileTest.java
@@ -19,11 +19,11 @@
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.eq;
-import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import android.bluetooth.BluetoothA2dp;
+import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothCodecConfig;
import android.bluetooth.BluetoothCodecStatus;
import android.bluetooth.BluetoothDevice;
@@ -33,21 +33,23 @@
import com.android.settingslib.R;
import com.android.settingslib.SettingsLibRobolectricTestRunner;
+import com.android.settingslib.testutils.shadow.ShadowBluetoothAdapter;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadow.api.Shadow;
@RunWith(SettingsLibRobolectricTestRunner.class)
+@Config(shadows = {ShadowBluetoothAdapter.class})
public class A2dpProfileTest {
@Mock
Context mContext;
@Mock
- LocalBluetoothAdapter mAdapter;
- @Mock
CachedBluetoothDeviceManager mDeviceManager;
@Mock
LocalBluetoothProfileManager mProfileManager;
@@ -58,20 +60,14 @@
BluetoothProfile.ServiceListener mServiceListener;
A2dpProfile mProfile;
+ private ShadowBluetoothAdapter mShadowBluetoothAdapter;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
-
- // Capture the A2dpServiceListener our A2dpProfile will pass during its constructor, so that
- // we can call its onServiceConnected method and get it to use our mock BluetoothA2dp
- // object.
- doAnswer((invocation) -> {
- mServiceListener = (BluetoothProfile.ServiceListener) invocation.getArguments()[1];
- return null;
- }).when(mAdapter).getProfileProxy(any(Context.class), any(), eq(BluetoothProfile.A2DP));
-
- mProfile = new A2dpProfile(mContext, mAdapter, mDeviceManager, mProfileManager);
+ mShadowBluetoothAdapter = Shadow.extract(BluetoothAdapter.getDefaultAdapter());
+ mProfile = new A2dpProfile(mContext, mDeviceManager, mProfileManager);
+ mServiceListener = mShadowBluetoothAdapter.getServiceListener();
mServiceListener.onServiceConnected(BluetoothProfile.A2DP, mBluetoothA2dp);
}
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/CachedBluetoothDeviceManagerTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/CachedBluetoothDeviceManagerTest.java
index b33e9c3..2d34f23 100644
--- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/CachedBluetoothDeviceManagerTest.java
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/CachedBluetoothDeviceManagerTest.java
@@ -21,7 +21,6 @@
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.when;
-import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothClass;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothProfile;
@@ -59,8 +58,6 @@
private final BluetoothClass DEVICE_CLASS_2 =
new BluetoothClass(BluetoothClass.Device.AUDIO_VIDEO_HANDSFREE);
@Mock
- private LocalBluetoothAdapter mLocalAdapter;
- @Mock
private LocalBluetoothProfileManager mLocalProfileManager;
@Mock
private LocalBluetoothManager mLocalBluetoothManager;
@@ -110,18 +107,17 @@
when(mLocalBluetoothManager.getEventManager()).thenReturn(mBluetoothEventManager);
when(mLocalBluetoothManager.getProfileManager()).thenReturn(mLocalProfileManager);
- when(mLocalAdapter.getBluetoothState()).thenReturn(BluetoothAdapter.STATE_ON);
when(mHfpProfile.isProfileReady()).thenReturn(true);
when(mA2dpProfile.isProfileReady()).thenReturn(true);
when(mPanProfile.isProfileReady()).thenReturn(true);
when(mHearingAidProfile.isProfileReady()).thenReturn(true);
mCachedDeviceManager = new CachedBluetoothDeviceManager(mContext, mLocalBluetoothManager);
mCachedDevice1 = spy(
- new CachedBluetoothDevice(mContext, mLocalAdapter, mLocalProfileManager, mDevice1));
+ new CachedBluetoothDevice(mContext, mLocalProfileManager, mDevice1));
mCachedDevice2 = spy(
- new CachedBluetoothDevice(mContext, mLocalAdapter, mLocalProfileManager, mDevice2));
+ new CachedBluetoothDevice(mContext, mLocalProfileManager, mDevice2));
mCachedDevice3 = spy(
- new CachedBluetoothDevice(mContext, mLocalAdapter, mLocalProfileManager, mDevice3));
+ new CachedBluetoothDevice(mContext, mLocalProfileManager, mDevice3));
}
/**
@@ -129,11 +125,9 @@
*/
@Test
public void testAddDevice_validCachedDevices_devicesAdded() {
- CachedBluetoothDevice cachedDevice1 = mCachedDeviceManager.addDevice(mLocalAdapter,
- mDevice1);
+ CachedBluetoothDevice cachedDevice1 = mCachedDeviceManager.addDevice(mDevice1);
assertThat(cachedDevice1).isNotNull();
- CachedBluetoothDevice cachedDevice2 = mCachedDeviceManager.addDevice(mLocalAdapter,
- mDevice2);
+ CachedBluetoothDevice cachedDevice2 = mCachedDeviceManager.addDevice(mDevice2);
assertThat(cachedDevice2).isNotNull();
Collection<CachedBluetoothDevice> devices = mCachedDeviceManager.getCachedDevicesCopy();
@@ -149,8 +143,7 @@
*/
@Test
public void testGetName_validCachedDevice_nameFound() {
- CachedBluetoothDevice cachedDevice1 = mCachedDeviceManager.addDevice(mLocalAdapter,
- mDevice1);
+ CachedBluetoothDevice cachedDevice1 = mCachedDeviceManager.addDevice(mDevice1);
assertThat(cachedDevice1).isNotNull();
assertThat(mCachedDeviceManager.getName(mDevice1)).isEqualTo(DEVICE_ALIAS_1);
}
@@ -160,8 +153,7 @@
*/
@Test
public void testOnDeviceNameUpdated_validName_nameUpdated() {
- CachedBluetoothDevice cachedDevice1 = mCachedDeviceManager.addDevice(mLocalAdapter,
- mDevice1);
+ CachedBluetoothDevice cachedDevice1 = mCachedDeviceManager.addDevice(mDevice1);
assertThat(cachedDevice1).isNotNull();
assertThat(cachedDevice1.getName()).isEqualTo(DEVICE_ALIAS_1);
@@ -176,11 +168,9 @@
*/
@Test
public void testClearNonBondedDevices_bondedAndNonBondedDevices_nonBondedDevicesCleared() {
- CachedBluetoothDevice cachedDevice1 = mCachedDeviceManager.addDevice(mLocalAdapter,
- mDevice1);
+ CachedBluetoothDevice cachedDevice1 = mCachedDeviceManager.addDevice(mDevice1);
assertThat(cachedDevice1).isNotNull();
- CachedBluetoothDevice cachedDevice2 = mCachedDeviceManager.addDevice(mLocalAdapter,
- mDevice2);
+ CachedBluetoothDevice cachedDevice2 = mCachedDeviceManager.addDevice(mDevice2);
assertThat(cachedDevice2).isNotNull();
when(mDevice1.getBondState()).thenReturn(BluetoothDevice.BOND_BONDED);
@@ -231,11 +221,9 @@
*/
@Test
public void testOnHiSyncIdChanged_sameHiSyncId_populateInDifferentLists() {
- CachedBluetoothDevice cachedDevice1 = mCachedDeviceManager.addDevice(mLocalAdapter,
- mDevice1);
+ CachedBluetoothDevice cachedDevice1 = mCachedDeviceManager.addDevice(mDevice1);
assertThat(cachedDevice1).isNotNull();
- CachedBluetoothDevice cachedDevice2 = mCachedDeviceManager.addDevice(mLocalAdapter,
- mDevice2);
+ CachedBluetoothDevice cachedDevice2 = mCachedDeviceManager.addDevice(mDevice2);
assertThat(cachedDevice2).isNotNull();
// Since both devices do not have hiSyncId, they should be added in mCachedDevices.
@@ -266,11 +254,9 @@
*/
@Test
public void testOnHiSyncIdChanged_sameHiSyncIdAndOneConnected_chooseConnectedDevice() {
- CachedBluetoothDevice cachedDevice1 = mCachedDeviceManager.addDevice(mLocalAdapter,
- mDevice1);
+ CachedBluetoothDevice cachedDevice1 = mCachedDeviceManager.addDevice(mDevice1);
assertThat(cachedDevice1).isNotNull();
- CachedBluetoothDevice cachedDevice2 = mCachedDeviceManager.addDevice(mLocalAdapter,
- mDevice2);
+ CachedBluetoothDevice cachedDevice2 = mCachedDeviceManager.addDevice(mDevice2);
assertThat(cachedDevice2).isNotNull();
cachedDevice1.onProfileStateChanged(mHearingAidProfile, BluetoothProfile.STATE_CONNECTED);
cachedDevice2.onProfileStateChanged(mHearingAidProfile, BluetoothProfile.STATE_CONNECTED);
@@ -303,11 +289,9 @@
*/
@Test
public void testOnHiSyncIdChanged_differentHiSyncId_populateInSameList() {
- CachedBluetoothDevice cachedDevice1 = mCachedDeviceManager.addDevice(mLocalAdapter,
- mDevice1);
+ CachedBluetoothDevice cachedDevice1 = mCachedDeviceManager.addDevice(mDevice1);
assertThat(cachedDevice1).isNotNull();
- CachedBluetoothDevice cachedDevice2 = mCachedDeviceManager.addDevice(mLocalAdapter,
- mDevice2);
+ CachedBluetoothDevice cachedDevice2 = mCachedDeviceManager.addDevice(mDevice2);
assertThat(cachedDevice2).isNotNull();
// Since both devices do not have hiSyncId, they should be added in mCachedDevices.
@@ -339,8 +323,7 @@
*/
@Test
public void testOnProfileConnectionStateChanged_singleDeviceConnected_visible() {
- CachedBluetoothDevice cachedDevice1 = mCachedDeviceManager.addDevice(mLocalAdapter,
- mDevice1);
+ CachedBluetoothDevice cachedDevice1 = mCachedDeviceManager.addDevice(mDevice1);
assertThat(cachedDevice1).isNotNull();
cachedDevice1.onProfileStateChanged(mHearingAidProfile, BluetoothProfile.STATE_CONNECTED);
@@ -377,11 +360,9 @@
*/
@Test
public void testOnProfileConnectionStateChanged_twoDevicesConnected_oneDeviceVisible() {
- CachedBluetoothDevice cachedDevice1 = mCachedDeviceManager.addDevice(mLocalAdapter,
- mDevice1);
+ CachedBluetoothDevice cachedDevice1 = mCachedDeviceManager.addDevice(mDevice1);
assertThat(cachedDevice1).isNotNull();
- CachedBluetoothDevice cachedDevice2 = mCachedDeviceManager.addDevice(mLocalAdapter,
- mDevice2);
+ CachedBluetoothDevice cachedDevice2 = mCachedDeviceManager.addDevice(mDevice2);
assertThat(cachedDevice2).isNotNull();
cachedDevice1.onProfileStateChanged(mHearingAidProfile, BluetoothProfile.STATE_CONNECTED);
cachedDevice2.onProfileStateChanged(mHearingAidProfile, BluetoothProfile.STATE_CONNECTED);
@@ -431,11 +412,9 @@
*/
@Test
public void testOnProfileConnectionStateChanged_twoDevicesDisconnected_oneDeviceVisible() {
- CachedBluetoothDevice cachedDevice1 = mCachedDeviceManager.addDevice(mLocalAdapter,
- mDevice1);
+ CachedBluetoothDevice cachedDevice1 = mCachedDeviceManager.addDevice(mDevice1);
assertThat(cachedDevice1).isNotNull();
- CachedBluetoothDevice cachedDevice2 = mCachedDeviceManager.addDevice(mLocalAdapter,
- mDevice2);
+ CachedBluetoothDevice cachedDevice2 = mCachedDeviceManager.addDevice(mDevice2);
assertThat(cachedDevice2).isNotNull();
cachedDevice1.onProfileStateChanged(mHearingAidProfile, BluetoothProfile.STATE_CONNECTED);
cachedDevice2.onProfileStateChanged(mHearingAidProfile, BluetoothProfile.STATE_CONNECTED);
@@ -486,11 +465,9 @@
*/
@Test
public void testOnDeviceUnpaired_bothHearingAidsPaired_removesItsPairFromList() {
- CachedBluetoothDevice cachedDevice1 = mCachedDeviceManager.addDevice(mLocalAdapter,
- mDevice1);
+ CachedBluetoothDevice cachedDevice1 = mCachedDeviceManager.addDevice(mDevice1);
assertThat(cachedDevice1).isNotNull();
- CachedBluetoothDevice cachedDevice2 = mCachedDeviceManager.addDevice(mLocalAdapter,
- mDevice2);
+ CachedBluetoothDevice cachedDevice2 = mCachedDeviceManager.addDevice(mDevice2);
assertThat(cachedDevice2).isNotNull();
cachedDevice1.setHiSyncId(HISYNCID1);
@@ -518,14 +495,11 @@
*/
@Test
public void testOnDeviceUnpaired_bothHearingAidsNotPaired_doesNotRemoveAnyDeviceFromList() {
- CachedBluetoothDevice cachedDevice1 = mCachedDeviceManager.addDevice(mLocalAdapter,
- mDevice1);
+ CachedBluetoothDevice cachedDevice1 = mCachedDeviceManager.addDevice(mDevice1);
assertThat(cachedDevice1).isNotNull();
- CachedBluetoothDevice cachedDevice2 = mCachedDeviceManager.addDevice(mLocalAdapter,
- mDevice2);
+ CachedBluetoothDevice cachedDevice2 = mCachedDeviceManager.addDevice(mDevice2);
assertThat(cachedDevice2).isNotNull();
- CachedBluetoothDevice cachedDevice3 = mCachedDeviceManager.addDevice(mLocalAdapter,
- mDevice3);
+ CachedBluetoothDevice cachedDevice3 = mCachedDeviceManager.addDevice(mDevice3);
assertThat(cachedDevice2).isNotNull();
cachedDevice1.setHiSyncId(HISYNCID1);
@@ -570,8 +544,7 @@
doAnswer((invocation) -> HISYNCID1).when(mHearingAidProfile).getHiSyncId(mDevice1);
doAnswer((invocation) -> HISYNCID1).when(mHearingAidProfile).getHiSyncId(mDevice2);
- CachedBluetoothDevice cachedDevice1 = mCachedDeviceManager.addDevice(mLocalAdapter,
- mDevice1);
+ CachedBluetoothDevice cachedDevice1 = mCachedDeviceManager.addDevice(mDevice1);
assertThat(cachedDevice1).isNotNull();
// The first hearing aid device should be populated in mCachedDevice and
// mCachedDevicesMapForHearingAids.
@@ -581,8 +554,7 @@
assertThat(mCachedDeviceManager.mCachedDevicesMapForHearingAids.values())
.contains(cachedDevice1);
- CachedBluetoothDevice cachedDevice2 = mCachedDeviceManager.addDevice(mLocalAdapter,
- mDevice2);
+ CachedBluetoothDevice cachedDevice2 = mCachedDeviceManager.addDevice(mDevice2);
assertThat(cachedDevice2).isNotNull();
// The second hearing aid device should be populated in mHearingAidDevicesNotAddedInCache.
assertThat(mCachedDeviceManager.getCachedDevicesCopy()).hasSize(1);
@@ -599,8 +571,7 @@
.getHearingAidProfile();
doAnswer((invocation) -> HISYNCID1).when(mHearingAidProfile).getHiSyncId(mDevice1);
doAnswer((invocation) -> HISYNCID2).when(mHearingAidProfile).getHiSyncId(mDevice2);
- CachedBluetoothDevice cachedDevice1 = mCachedDeviceManager.addDevice(mLocalAdapter,
- mDevice1);
+ CachedBluetoothDevice cachedDevice1 = mCachedDeviceManager.addDevice(mDevice1);
assertThat(cachedDevice1).isNotNull();
// The first hearing aid device should be populated in mCachedDevice and
// mCachedDevicesMapForHearingAids.
@@ -610,8 +581,7 @@
assertThat(mCachedDeviceManager.mCachedDevicesMapForHearingAids.values())
.contains(cachedDevice1);
- CachedBluetoothDevice cachedDevice2 = mCachedDeviceManager.addDevice(mLocalAdapter,
- mDevice2);
+ CachedBluetoothDevice cachedDevice2 = mCachedDeviceManager.addDevice(mDevice2);
assertThat(cachedDevice2).isNotNull();
// The second hearing aid device should also be populated in mCachedDevice
// and mCachedDevicesMapForHearingAids as its not a pair of the first one.
@@ -680,8 +650,7 @@
*/
@Test
public void testOnBtClassChanged_validBtClass_classChanged() {
- CachedBluetoothDevice cachedDevice1 = mCachedDeviceManager.addDevice(mLocalAdapter,
- mDevice1);
+ CachedBluetoothDevice cachedDevice1 = mCachedDeviceManager.addDevice(mDevice1);
assertThat(cachedDevice1).isNotNull();
assertThat(cachedDevice1.getBtClass()).isEqualTo(DEVICE_CLASS_1);
@@ -696,8 +665,7 @@
*/
@Test
public void testOnDeviceDisappeared_deviceBondedUnbonded_unbondedDeviceDisappeared() {
- CachedBluetoothDevice cachedDevice1 = mCachedDeviceManager.addDevice(mLocalAdapter,
- mDevice1);
+ CachedBluetoothDevice cachedDevice1 = mCachedDeviceManager.addDevice(mDevice1);
assertThat(cachedDevice1).isNotNull();
when(mDevice1.getBondState()).thenReturn(BluetoothDevice.BOND_BONDED);
@@ -712,11 +680,9 @@
*/
@Test
public void testOnActiveDeviceChanged_connectedDevices_activeDeviceChanged() {
- CachedBluetoothDevice cachedDevice1 = mCachedDeviceManager.addDevice(mLocalAdapter,
- mDevice1);
+ CachedBluetoothDevice cachedDevice1 = mCachedDeviceManager.addDevice(mDevice1);
assertThat(cachedDevice1).isNotNull();
- CachedBluetoothDevice cachedDevice2 = mCachedDeviceManager.addDevice(mLocalAdapter,
- mDevice2);
+ CachedBluetoothDevice cachedDevice2 = mCachedDeviceManager.addDevice(mDevice2);
assertThat(cachedDevice2).isNotNull();
when(mDevice1.getBondState()).thenReturn(BluetoothDevice.BOND_BONDED);
@@ -777,11 +743,9 @@
*/
@Test
public void testOnActiveDeviceChanged_withA2dpAndHearingAid() {
- CachedBluetoothDevice cachedDevice1 = mCachedDeviceManager.addDevice(mLocalAdapter,
- mDevice1);
+ CachedBluetoothDevice cachedDevice1 = mCachedDeviceManager.addDevice(mDevice1);
assertThat(cachedDevice1).isNotNull();
- CachedBluetoothDevice cachedDevice2 = mCachedDeviceManager.addDevice(mLocalAdapter,
- mDevice2);
+ CachedBluetoothDevice cachedDevice2 = mCachedDeviceManager.addDevice(mDevice2);
assertThat(cachedDevice2).isNotNull();
when(mDevice1.getBondState()).thenReturn(BluetoothDevice.BOND_BONDED);
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/CachedBluetoothDeviceTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/CachedBluetoothDeviceTest.java
index c39fb85..034574f 100644
--- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/CachedBluetoothDeviceTest.java
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/CachedBluetoothDeviceTest.java
@@ -26,7 +26,6 @@
import static org.mockito.Mockito.when;
import static org.robolectric.Shadows.shadowOf;
-import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothProfile;
import android.content.Context;
@@ -49,8 +48,6 @@
private final static String DEVICE_ADDRESS = "AA:BB:CC:DD:EE:FF";
private final static String DEVICE_ALIAS_NEW = "TestAliasNew";
@Mock
- private LocalBluetoothAdapter mAdapter;
- @Mock
private LocalBluetoothProfileManager mProfileManager;
@Mock
private HeadsetProfile mHfpProfile;
@@ -73,13 +70,11 @@
mContext = RuntimeEnvironment.application;
mShadowAudioManager = shadowOf(mContext.getSystemService(AudioManager.class));
when(mDevice.getAddress()).thenReturn(DEVICE_ADDRESS);
- when(mAdapter.getBluetoothState()).thenReturn(BluetoothAdapter.STATE_ON);
when(mHfpProfile.isProfileReady()).thenReturn(true);
when(mA2dpProfile.isProfileReady()).thenReturn(true);
when(mPanProfile.isProfileReady()).thenReturn(true);
when(mHearingAidProfile.isProfileReady()).thenReturn(true);
- mCachedDevice = spy(
- new CachedBluetoothDevice(mContext, mAdapter, mProfileManager, mDevice));
+ mCachedDevice = spy(new CachedBluetoothDevice(mContext, mProfileManager, mDevice));
doAnswer((invocation) -> mBatteryLevel).when(mCachedDevice).getBatteryLevel();
}
@@ -477,7 +472,7 @@
when(mDevice.getAliasName()).thenReturn(DEVICE_ALIAS);
when(mDevice.getName()).thenReturn(DEVICE_NAME);
CachedBluetoothDevice cachedBluetoothDevice =
- new CachedBluetoothDevice(mContext, mAdapter, mProfileManager, mDevice);
+ new CachedBluetoothDevice(mContext, mProfileManager, mDevice);
// Verify alias is returned on getName
assertThat(cachedBluetoothDevice.getName()).isEqualTo(DEVICE_ALIAS);
// Verify device is visible
@@ -487,7 +482,7 @@
@Test
public void testDeviceName_testNameNotAvailable() {
CachedBluetoothDevice cachedBluetoothDevice =
- new CachedBluetoothDevice(mContext, mAdapter, mProfileManager, mDevice);
+ new CachedBluetoothDevice(mContext, mProfileManager, mDevice);
// Verify device address is returned on getName
assertThat(cachedBluetoothDevice.getName()).isEqualTo(DEVICE_ADDRESS);
// Verify device is not visible
@@ -504,7 +499,7 @@
}).when(mDevice).setAlias(anyString());
when(mDevice.getName()).thenReturn(DEVICE_NAME);
CachedBluetoothDevice cachedBluetoothDevice =
- new CachedBluetoothDevice(mContext, mAdapter, mProfileManager, mDevice);
+ new CachedBluetoothDevice(mContext, mProfileManager, mDevice);
// Verify alias is returned on getName
assertThat(cachedBluetoothDevice.getName()).isEqualTo(DEVICE_ALIAS);
// Verify null name does not get set
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/HeadsetProfileTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/HeadsetProfileTest.java
index bc8be4d..c0a1f0c 100644
--- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/HeadsetProfileTest.java
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/HeadsetProfileTest.java
@@ -2,18 +2,17 @@
import static com.google.common.truth.Truth.assertThat;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.when;
+import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothHeadset;
import android.bluetooth.BluetoothProfile;
import android.content.Context;
import com.android.settingslib.SettingsLibRobolectricTestRunner;
+import com.android.settingslib.testutils.shadow.ShadowBluetoothAdapter;
import org.junit.Before;
import org.junit.Test;
@@ -21,13 +20,14 @@
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadow.api.Shadow;
@RunWith(SettingsLibRobolectricTestRunner.class)
+@Config(shadows = {ShadowBluetoothAdapter.class})
public class HeadsetProfileTest {
@Mock
- private LocalBluetoothAdapter mAdapter;
- @Mock
private CachedBluetoothDeviceManager mDeviceManager;
@Mock
private LocalBluetoothProfileManager mProfileManager;
@@ -39,19 +39,18 @@
private BluetoothDevice mBluetoothDevice;
private BluetoothProfile.ServiceListener mServiceListener;
private HeadsetProfile mProfile;
+ private ShadowBluetoothAdapter mShadowBluetoothAdapter;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
Context context = spy(RuntimeEnvironment.application);
+ mShadowBluetoothAdapter = Shadow.extract(BluetoothAdapter.getDefaultAdapter());
- doAnswer((invocation) -> {
- mServiceListener = (BluetoothProfile.ServiceListener) invocation.getArguments()[1];
- return null;
- }).when(mAdapter).getProfileProxy(any(Context.class), any(), eq(BluetoothProfile.HEADSET));
when(mCachedBluetoothDevice.getDevice()).thenReturn(mBluetoothDevice);
- mProfile = new HeadsetProfile(context, mAdapter, mDeviceManager, mProfileManager);
+ mProfile = new HeadsetProfile(context, mDeviceManager, mProfileManager);
+ mServiceListener = mShadowBluetoothAdapter.getServiceListener();
mServiceListener.onServiceConnected(BluetoothProfile.HEADSET, mService);
}
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/LocalBluetoothProfileManagerTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/LocalBluetoothProfileManagerTest.java
index af66f7a..f223176 100644
--- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/LocalBluetoothProfileManagerTest.java
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/LocalBluetoothProfileManagerTest.java
@@ -38,6 +38,7 @@
import android.os.ParcelUuid;
import com.android.settingslib.SettingsLibRobolectricTestRunner;
+import com.android.settingslib.testutils.shadow.ShadowBluetoothAdapter;
import org.junit.Before;
import org.junit.Test;
@@ -45,34 +46,38 @@
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadow.api.Shadow;
import java.util.ArrayList;
import java.util.List;
@RunWith(SettingsLibRobolectricTestRunner.class)
+@Config(shadows = {ShadowBluetoothAdapter.class})
public class LocalBluetoothProfileManagerTest {
@Mock
private CachedBluetoothDeviceManager mDeviceManager;
@Mock
private BluetoothEventManager mEventManager;
@Mock
- private LocalBluetoothAdapter mAdapter;
- @Mock
private BluetoothDevice mDevice;
@Mock
private CachedBluetoothDevice mCachedBluetoothDevice;
private Context mContext;
- private LocalBluetoothProfileManager mProfileManager;
private Intent mIntent;
+ private LocalBluetoothAdapter mLocalBluetoothAdapter;
+ private LocalBluetoothProfileManager mProfileManager;
+ private ShadowBluetoothAdapter mShadowBluetoothAdapter;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
mContext = spy(RuntimeEnvironment.application);
- mEventManager = spy(new BluetoothEventManager(mAdapter,
- mDeviceManager, mContext));
- when(mAdapter.getBluetoothState()).thenReturn(BluetoothAdapter.STATE_ON);
+ mLocalBluetoothAdapter = LocalBluetoothAdapter.getInstance();
+ mEventManager = spy(new BluetoothEventManager(mLocalBluetoothAdapter, mDeviceManager,
+ mContext));
+ mShadowBluetoothAdapter = Shadow.extract(BluetoothAdapter.getDefaultAdapter());
when(mDeviceManager.findDevice(mDevice)).thenReturn(mCachedBluetoothDevice);
}
@@ -81,12 +86,10 @@
*/
@Test
public void constructor_initiateHidAndHidDeviceProfile() {
- when(mAdapter.getSupportedProfiles()).thenReturn(
- generateList(new int[] {BluetoothProfile.HID_HOST}));
- when(mAdapter.getSupportedProfiles()).thenReturn(
- generateList(new int[] {BluetoothProfile.HID_HOST, BluetoothProfile.HID_DEVICE}));
- mProfileManager =
- new LocalBluetoothProfileManager(mContext, mAdapter, mDeviceManager, mEventManager);
+ mShadowBluetoothAdapter.setSupportedProfiles(generateList(
+ new int[] {BluetoothProfile.HID_HOST, BluetoothProfile.HID_DEVICE}));
+ mProfileManager = new LocalBluetoothProfileManager(mContext, mLocalBluetoothAdapter,
+ mDeviceManager, mEventManager);
assertThat(mProfileManager.getHidProfile()).isNotNull();
assertThat(mProfileManager.getHidDeviceProfile()).isNotNull();
@@ -97,12 +100,12 @@
*/
@Test
public void updateLocalProfiles_addA2dpToLocalProfiles() {
- mProfileManager =
- new LocalBluetoothProfileManager(mContext, mAdapter, mDeviceManager, mEventManager);
+ mProfileManager = new LocalBluetoothProfileManager(mContext, mLocalBluetoothAdapter,
+ mDeviceManager, mEventManager);
assertThat(mProfileManager.getA2dpProfile()).isNull();
assertThat(mProfileManager.getHeadsetProfile()).isNull();
- when(mAdapter.getSupportedProfiles()).thenReturn(generateList(
+ mShadowBluetoothAdapter.setSupportedProfiles(generateList(
new int[] {BluetoothProfile.A2DP}));
mProfileManager.updateLocalProfiles();
@@ -115,10 +118,10 @@
*/
@Test
public void updateProfiles_addHidProfileForRemoteDevice() {
- when(mAdapter.getSupportedProfiles()).thenReturn(generateList(
+ mShadowBluetoothAdapter.setSupportedProfiles(generateList(
new int[] {BluetoothProfile.HID_HOST}));
- mProfileManager =
- new LocalBluetoothProfileManager(mContext, mAdapter, mDeviceManager, mEventManager);
+ mProfileManager = new LocalBluetoothProfileManager(mContext, mLocalBluetoothAdapter,
+ mDeviceManager, mEventManager);
ParcelUuid[] uuids = new ParcelUuid[]{BluetoothUuid.Hid};
ParcelUuid[] localUuids = new ParcelUuid[]{};
List<LocalBluetoothProfile> profiles = new ArrayList<>();
@@ -138,10 +141,10 @@
*/
@Test
public void stateChangedHandler_receiveA2dpConnectionStateChanged_shouldDispatchCallback() {
- when(mAdapter.getSupportedProfiles()).thenReturn(generateList(
+ mShadowBluetoothAdapter.setSupportedProfiles(generateList(
new int[] {BluetoothProfile.A2DP}));
- mProfileManager = new LocalBluetoothProfileManager(mContext, mAdapter, mDeviceManager,
- mEventManager);
+ mProfileManager = new LocalBluetoothProfileManager(mContext, mLocalBluetoothAdapter,
+ mDeviceManager, mEventManager);
// Refer to BluetoothControllerImpl, it will call setReceiverHandler after
// LocalBluetoothProfileManager created.
mEventManager.setReceiverHandler(null);
@@ -162,10 +165,10 @@
*/
@Test
public void stateChangedHandler_receiveHeadsetConnectionStateChanged_shouldDispatchCallback() {
- when(mAdapter.getSupportedProfiles()).thenReturn(generateList(
+ mShadowBluetoothAdapter.setSupportedProfiles(generateList(
new int[] {BluetoothProfile.HEADSET}));
- mProfileManager = new LocalBluetoothProfileManager(mContext, mAdapter, mDeviceManager,
- mEventManager);
+ mProfileManager = new LocalBluetoothProfileManager(mContext, mLocalBluetoothAdapter,
+ mDeviceManager, mEventManager);
// Refer to BluetoothControllerImpl, it will call setReceiverHandler after
// LocalBluetoothProfileManager created.
mEventManager.setReceiverHandler(null);
@@ -186,12 +189,10 @@
*/
@Test
public void stateChangedHandler_receiveHAPConnectionStateChanged_shouldDispatchCallback() {
- ArrayList<Integer> supportProfiles = new ArrayList<>();
- supportProfiles.add(BluetoothProfile.HEARING_AID);
- when(mAdapter.getSupportedProfiles()).thenReturn(supportProfiles);
- when(mAdapter.getUuids()).thenReturn(new ParcelUuid[]{BluetoothUuid.HearingAid});
- mProfileManager = new LocalBluetoothProfileManager(mContext, mAdapter, mDeviceManager,
- mEventManager);
+ mShadowBluetoothAdapter.setSupportedProfiles(generateList(
+ new int[] {BluetoothProfile.HEARING_AID}));
+ mProfileManager = new LocalBluetoothProfileManager(mContext, mLocalBluetoothAdapter,
+ mDeviceManager, mEventManager);
// Refer to BluetoothControllerImpl, it will call setReceiverHandler after
// LocalBluetoothProfileManager created.
mEventManager.setReceiverHandler(null);
@@ -212,10 +213,10 @@
*/
@Test
public void stateChangedHandler_receivePanConnectionStateChanged_shouldNotDispatchCallback() {
- when(mAdapter.getSupportedProfiles()).thenReturn(
- generateList(new int[] {BluetoothProfile.PAN}));
- mProfileManager = new LocalBluetoothProfileManager(mContext, mAdapter, mDeviceManager,
- mEventManager);
+ mShadowBluetoothAdapter.setSupportedProfiles(generateList(
+ new int[] {BluetoothProfile.PAN}));
+ mProfileManager = new LocalBluetoothProfileManager(mContext, mLocalBluetoothAdapter,
+ mDeviceManager, mEventManager);
// Refer to BluetoothControllerImpl, it will call setReceiverHandler after
// LocalBluetoothProfileManager created.
mEventManager.setReceiverHandler(null);
@@ -237,9 +238,9 @@
@Test
public void stateChangedHandler_receivePanConnectionStateChangedWithoutProfile_shouldNotRefresh
() {
- when(mAdapter.getSupportedProfiles()).thenReturn(null);
- mProfileManager = new LocalBluetoothProfileManager(mContext, mAdapter, mDeviceManager,
- mEventManager);
+ mShadowBluetoothAdapter.setSupportedProfiles(null);
+ mProfileManager = new LocalBluetoothProfileManager(mContext, mLocalBluetoothAdapter,
+ mDeviceManager, mEventManager);
// Refer to BluetoothControllerImpl, it will call setReceiverHandler after
// LocalBluetoothProfileManager created.
mEventManager.setReceiverHandler(null);
@@ -259,10 +260,10 @@
*/
@Test
public void stateChangedHandler_receivePanConnectionStateChangedWithProfile_shouldRefresh() {
- when(mAdapter.getSupportedProfiles()).thenReturn(generateList(
+ mShadowBluetoothAdapter.setSupportedProfiles(generateList(
new int[] {BluetoothProfile.PAN}));
- mProfileManager = new LocalBluetoothProfileManager(mContext, mAdapter, mDeviceManager,
- mEventManager);
+ mProfileManager = new LocalBluetoothProfileManager(mContext, mLocalBluetoothAdapter,
+ mDeviceManager, mEventManager);
// Refer to BluetoothControllerImpl, it will call setReceiverHandler after
// LocalBluetoothProfileManager created.
mEventManager.setReceiverHandler(null);
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/testutils/shadow/ShadowBluetoothAdapter.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/testutils/shadow/ShadowBluetoothAdapter.java
new file mode 100644
index 0000000..9b8c230
--- /dev/null
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/testutils/shadow/ShadowBluetoothAdapter.java
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settingslib.testutils.shadow;
+
+import android.bluetooth.BluetoothAdapter;
+import android.bluetooth.BluetoothProfile;
+import android.content.Context;
+
+import org.robolectric.annotation.Implementation;
+import org.robolectric.annotation.Implements;
+
+import java.util.List;
+
+@Implements(value = BluetoothAdapter.class, inheritImplementationMethods = true)
+public class ShadowBluetoothAdapter extends org.robolectric.shadows.ShadowBluetoothAdapter {
+
+ private List<Integer> mSupportedProfiles;
+ private BluetoothProfile.ServiceListener mServiceListener;
+
+ @Implementation
+ public boolean getProfileProxy(Context context, BluetoothProfile.ServiceListener listener,
+ int profile) {
+ mServiceListener = listener;
+ return true;
+ }
+
+ public BluetoothProfile.ServiceListener getServiceListener() {
+ return mServiceListener;
+ }
+
+ @Implementation
+ public List<Integer> getSupportedProfiles() {
+ return mSupportedProfiles;
+ }
+
+ public void setSupportedProfiles(List<Integer> supportedProfiles) {
+ mSupportedProfiles = supportedProfiles;
+ }
+}
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardSliceView.java b/packages/SystemUI/src/com/android/keyguard/KeyguardSliceView.java
index 9603562..7479152 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardSliceView.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardSliceView.java
@@ -16,6 +16,8 @@
package com.android.keyguard;
+import static android.app.slice.Slice.HINT_LIST_ITEM;
+
import android.animation.LayoutTransition;
import android.animation.ObjectAnimator;
import android.animation.PropertyValuesHolder;
@@ -64,6 +66,7 @@
import androidx.slice.core.SliceQuery;
import androidx.slice.widget.ListContent;
import androidx.slice.widget.RowContent;
+import androidx.slice.widget.SliceContent;
import androidx.slice.widget.SliceLiveData;
/**
@@ -159,12 +162,13 @@
return;
}
- ListContent lc = new ListContent(getContext(), mSlice, null, 0, 0);
- mHasHeader = lc.hasHeader();
- List<SliceItem> subItems = new ArrayList<SliceItem>();
+ ListContent lc = new ListContent(getContext(), mSlice);
+ SliceContent headerContent = lc.getHeader();
+ mHasHeader = headerContent != null && !headerContent.getSliceItem().hasHint(HINT_LIST_ITEM);
+ List<SliceContent> subItems = new ArrayList<SliceContent>();
for (int i = 0; i < lc.getRowItems().size(); i++) {
- SliceItem subItem = lc.getRowItems().get(i);
- String itemUri = subItem.getSlice().getUri().toString();
+ SliceContent subItem = lc.getRowItems().get(i);
+ String itemUri = subItem.getSliceItem().getSlice().getUri().toString();
// Filter out the action row
if (!KeyguardSliceProvider.KEYGUARD_ACTION_URI.equals(itemUri)) {
subItems.add(subItem);
@@ -175,9 +179,7 @@
} else {
mTitle.setVisibility(VISIBLE);
- // If there's a header it'll be the first subitem
- RowContent header = new RowContent(getContext(), subItems.get(0),
- true /* showStartItem */);
+ RowContent header = lc.getHeader();
SliceItem mainTitle = header.getTitleItem();
CharSequence title = mainTitle != null ? mainTitle.getText() : null;
mTitle.setText(title);
@@ -189,8 +191,8 @@
final int startIndex = mHasHeader ? 1 : 0; // First item is header; skip it
mRow.setVisibility(subItemsCount > 0 ? VISIBLE : GONE);
for (int i = startIndex; i < subItemsCount; i++) {
- SliceItem item = subItems.get(i);
- RowContent rc = new RowContent(getContext(), item, true /* showStartItem */);
+ RowContent rc = (RowContent) subItems.get(i);
+ SliceItem item = rc.getSliceItem();
final Uri itemTag = item.getSlice().getUri();
// Try to reuse the view if already exists in the layout
KeyguardSliceButton button = mRow.findViewWithTag(itemTag);
diff --git a/packages/SystemUI/src/com/android/systemui/ScreenDecorations.java b/packages/SystemUI/src/com/android/systemui/ScreenDecorations.java
index 520e40a..9bbcfbc 100644
--- a/packages/SystemUI/src/com/android/systemui/ScreenDecorations.java
+++ b/packages/SystemUI/src/com/android/systemui/ScreenDecorations.java
@@ -43,9 +43,12 @@
import android.graphics.Rect;
import android.graphics.Region;
import android.hardware.display.DisplayManager;
+import android.os.Handler;
+import android.os.HandlerThread;
import android.os.SystemProperties;
import android.provider.Settings.Secure;
import android.util.DisplayMetrics;
+import android.util.Log;
import android.view.DisplayCutout;
import android.view.DisplayInfo;
import android.view.Gravity;
@@ -60,6 +63,7 @@
import android.widget.FrameLayout;
import android.widget.ImageView;
+import com.android.internal.util.Preconditions;
import com.android.systemui.RegionInterceptingFrameLayout.RegionInterceptableView;
import com.android.systemui.fragments.FragmentHostManager;
import com.android.systemui.fragments.FragmentHostManager.FragmentListener;
@@ -79,6 +83,9 @@
* for antialiasing and emulation purposes.
*/
public class ScreenDecorations extends SystemUI implements Tunable {
+ private static final boolean DEBUG = false;
+ private static final String TAG = "ScreenDecorations";
+
public static final String SIZE = "sysui_rounded_size";
public static final String PADDING = "sysui_rounded_content_padding";
private static final boolean DEBUG_SCREENSHOT_ROUNDED_CORNERS =
@@ -99,9 +106,24 @@
private DisplayCutoutView mCutoutBottom;
private SecureSetting mColorInversionSetting;
private boolean mPendingRotationChange;
+ private Handler mHandler;
@Override
public void start() {
+ mHandler = startHandlerThread();
+ mHandler.post(this::startOnScreenDecorationsThread);
+ setupStatusBarPaddingIfNeeded();
+ }
+
+ @VisibleForTesting
+ Handler startHandlerThread() {
+ HandlerThread thread = new HandlerThread("ScreenDecorations");
+ thread.start();
+ return thread.getThreadHandler();
+ }
+
+ private void startOnScreenDecorationsThread() {
+ mRotation = RotationUtils.getExactRotation(mContext);
mWindowManager = mContext.getSystemService(WindowManager.class);
mRoundedDefault = mContext.getResources().getDimensionPixelSize(
R.dimen.rounded_corner_radius);
@@ -113,12 +135,6 @@
setupDecorations();
}
- int padding = mContext.getResources().getDimensionPixelSize(
- R.dimen.rounded_corner_content_padding);
- if (padding != 0) {
- setupPadding(padding);
- }
-
mDisplayListener = new DisplayManager.DisplayListener() {
@Override
public void onDisplayAdded(int displayId) {
@@ -132,8 +148,8 @@
@Override
public void onDisplayChanged(int displayId) {
- if ((hasRoundedCorners() || shouldDrawCutout()) &&
- mRotation != RotationUtils.getExactRotation(mContext)) {
+ final int newRotation = RotationUtils.getExactRotation(mContext);
+ if (mOverlay != null && mBottomOverlay != null && mRotation != newRotation) {
// We cannot immediately update the orientation. Otherwise
// WindowManager is still deferring layout until it has finished dispatching
// the config changes, which may cause divergence between what we draw
@@ -142,19 +158,24 @@
// - we are trying to redraw. This because WM resized our window and told us to.
// - the config change has been dispatched, so WM is no longer deferring layout.
mPendingRotationChange = true;
+ if (DEBUG) {
+ Log.i(TAG, "Rotation changed, deferring " + newRotation + ", staying at "
+ + mRotation);
+ }
+
mOverlay.getViewTreeObserver().addOnPreDrawListener(
- new RestartingPreDrawListener(mOverlay));
+ new RestartingPreDrawListener(mOverlay, newRotation));
mBottomOverlay.getViewTreeObserver().addOnPreDrawListener(
- new RestartingPreDrawListener(mBottomOverlay));
+ new RestartingPreDrawListener(mBottomOverlay, newRotation));
}
updateOrientation();
}
};
- mRotation = -1;
mDisplayManager = (DisplayManager) mContext.getSystemService(
Context.DISPLAY_SERVICE);
- mDisplayManager.registerDisplayListener(mDisplayListener, null);
+ mDisplayManager.registerDisplayListener(mDisplayListener, mHandler);
+ updateOrientation();
}
private void setupDecorations() {
@@ -184,10 +205,11 @@
mWindowManager.getDefaultDisplay().getMetrics(metrics);
mDensity = metrics.density;
- Dependency.get(TunerService.class).addTunable(this, SIZE);
+ Dependency.get(Dependency.MAIN_HANDLER).post(
+ () -> Dependency.get(TunerService.class).addTunable(this, SIZE));
// Watch color inversion and invert the overlay as needed.
- mColorInversionSetting = new SecureSetting(mContext, Dependency.get(Dependency.MAIN_HANDLER),
+ mColorInversionSetting = new SecureSetting(mContext, mHandler,
Secure.ACCESSIBILITY_DISPLAY_INVERSION_ENABLED) {
@Override
protected void handleValueChanged(int value, boolean observedChange) {
@@ -199,7 +221,7 @@
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_USER_SWITCHED);
- mContext.registerReceiver(mIntentReceiver, filter);
+ mContext.registerReceiver(mIntentReceiver, filter, null /* permission */, mHandler);
mOverlay.addOnLayoutChangeListener(new OnLayoutChangeListener() {
@Override
@@ -217,6 +239,11 @@
.start();
}
});
+
+ mOverlay.getViewTreeObserver().addOnPreDrawListener(
+ new ValidatingPreDrawListener(mOverlay));
+ mBottomOverlay.getViewTreeObserver().addOnPreDrawListener(
+ new ValidatingPreDrawListener(mBottomOverlay));
}
private final BroadcastReceiver mIntentReceiver = new BroadcastReceiver() {
@@ -246,14 +273,28 @@
@Override
protected void onConfigurationChanged(Configuration newConfig) {
- mPendingRotationChange = false;
- updateOrientation();
- if (shouldDrawCutout() && mOverlay == null) {
- setupDecorations();
- }
+ mHandler.post(() -> {
+ int oldRotation = mRotation;
+ mPendingRotationChange = false;
+ updateOrientation();
+ if (DEBUG) Log.i(TAG, "onConfigChanged from rot " + oldRotation + " to " + mRotation);
+ if (shouldDrawCutout() && mOverlay == null) {
+ setupDecorations();
+ }
+ if (mOverlay != null) {
+ // Updating the layout params ensures that ViewRootImpl will call relayoutWindow(),
+ // which ensures that the forced seamless rotation will end, even if we updated
+ // the rotation before window manager was ready (and was still waiting for sending
+ // the updated rotation).
+ updateLayoutParams();
+ }
+ });
}
- protected void updateOrientation() {
+ private void updateOrientation() {
+ Preconditions.checkState(mHandler.getLooper().getThread() == Thread.currentThread(),
+ "must call on " + mHandler.getLooper().getThread()
+ + ", but was " + Thread.currentThread());
if (mPendingRotationChange) {
return;
}
@@ -333,7 +374,19 @@
com.android.internal.R.bool.config_fillMainBuiltInDisplayCutout);
}
- private void setupPadding(int padding) {
+
+ private void setupStatusBarPaddingIfNeeded() {
+ // TODO: This should be moved to a more appropriate place, as it is not related to the
+ // screen decorations overlay.
+ int padding = mContext.getResources().getDimensionPixelSize(
+ R.dimen.rounded_corner_content_padding);
+ if (padding != 0) {
+ setupStatusBarPadding(padding);
+ }
+
+ }
+
+ private void setupStatusBarPadding(int padding) {
// Add some padding to all the content near the edge of the screen.
StatusBar sb = getComponent(StatusBar.class);
View statusBar = (sb != null ? sb.getStatusBarWindow() : null);
@@ -402,30 +455,32 @@
@Override
public void onTuningChanged(String key, String newValue) {
- if (mOverlay == null) return;
- if (SIZE.equals(key)) {
- int size = mRoundedDefault;
- int sizeTop = mRoundedDefaultTop;
- int sizeBottom = mRoundedDefaultBottom;
- if (newValue != null) {
- try {
- size = (int) (Integer.parseInt(newValue) * mDensity);
- } catch (Exception e) {
+ mHandler.post(() -> {
+ if (mOverlay == null) return;
+ if (SIZE.equals(key)) {
+ int size = mRoundedDefault;
+ int sizeTop = mRoundedDefaultTop;
+ int sizeBottom = mRoundedDefaultBottom;
+ if (newValue != null) {
+ try {
+ size = (int) (Integer.parseInt(newValue) * mDensity);
+ } catch (Exception e) {
+ }
}
- }
- if (sizeTop == 0) {
- sizeTop = size;
- }
- if (sizeBottom == 0) {
- sizeBottom = size;
- }
+ if (sizeTop == 0) {
+ sizeTop = size;
+ }
+ if (sizeBottom == 0) {
+ sizeBottom = size;
+ }
- setSize(mOverlay.findViewById(R.id.left), sizeTop);
- setSize(mOverlay.findViewById(R.id.right), sizeTop);
- setSize(mBottomOverlay.findViewById(R.id.left), sizeBottom);
- setSize(mBottomOverlay.findViewById(R.id.right), sizeBottom);
- }
+ setSize(mOverlay.findViewById(R.id.left), sizeTop);
+ setSize(mOverlay.findViewById(R.id.right), sizeTop);
+ setSize(mBottomOverlay.findViewById(R.id.left), sizeBottom);
+ setSize(mBottomOverlay.findViewById(R.id.right), sizeBottom);
+ }
+ });
}
private void setSize(View view, int pixelSize) {
@@ -484,6 +539,11 @@
mVisibilityChangedListener = visibilityChangedListener;
mDecorations = decorations;
setId(R.id.display_cutout);
+ if (DEBUG) {
+ getViewTreeObserver().addOnDrawListener(() -> Log.i(TAG,
+ (mInitialStart ? "OverlayTop" : "OverlayBottom")
+ + " drawn in rot " + mRotation));
+ }
}
public void setColor(int color) {
@@ -719,20 +779,66 @@
private class RestartingPreDrawListener implements ViewTreeObserver.OnPreDrawListener {
private final View mView;
+ private final int mTargetRotation;
- private RestartingPreDrawListener(View view) {
+ private RestartingPreDrawListener(View view, int targetRotation) {
+ mView = view;
+ mTargetRotation = targetRotation;
+ }
+
+ @Override
+ public boolean onPreDraw() {
+ mView.getViewTreeObserver().removeOnPreDrawListener(this);
+
+ if (mTargetRotation == mRotation) {
+ if (DEBUG) {
+ Log.i(TAG, (mView == mOverlay ? "OverlayTop" : "OverlayBottom")
+ + " already in target rot "
+ + mTargetRotation + ", allow draw without restarting it");
+ }
+ return true;
+ }
+
+ mPendingRotationChange = false;
+ // This changes the window attributes - we need to restart the traversal for them to
+ // take effect.
+ updateOrientation();
+ if (DEBUG) {
+ Log.i(TAG, (mView == mOverlay ? "OverlayTop" : "OverlayBottom")
+ + " restarting listener fired, restarting draw for rot " + mRotation);
+ }
+ mView.invalidate();
+ return false;
+ }
+ }
+
+ /**
+ * A pre-draw listener, that validates that the rotation we draw in matches the displays
+ * rotation before continuing the draw.
+ *
+ * This is to prevent a race condition, where we have not received the display changed event
+ * yet, and would thus draw in an old orientation.
+ */
+ private class ValidatingPreDrawListener implements ViewTreeObserver.OnPreDrawListener {
+
+ private final View mView;
+
+ public ValidatingPreDrawListener(View view) {
mView = view;
}
@Override
public boolean onPreDraw() {
- mPendingRotationChange = false;
- mView.getViewTreeObserver().removeOnPreDrawListener(this);
- // This changes the window attributes - we need to restart the traversal for them to
- // take effect.
- updateOrientation();
- mView.invalidate();
- return false;
+ final int displayRotation = RotationUtils.getExactRotation(mContext);
+ if (displayRotation != mRotation && !mPendingRotationChange) {
+ if (DEBUG) {
+ Log.i(TAG, "Drawing rot " + mRotation + ", but display is at rot "
+ + displayRotation + ". Restarting draw");
+ }
+ mView.invalidate();
+ return false;
+ }
+ return true;
}
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/keyboard/KeyboardUI.java b/packages/SystemUI/src/com/android/systemui/keyboard/KeyboardUI.java
index a42191c..76a1acc 100644
--- a/packages/SystemUI/src/com/android/systemui/keyboard/KeyboardUI.java
+++ b/packages/SystemUI/src/com/android/systemui/keyboard/KeyboardUI.java
@@ -318,7 +318,7 @@
private CachedBluetoothDevice getCachedBluetoothDevice(BluetoothDevice d) {
CachedBluetoothDevice cachedDevice = mCachedDeviceManager.findDevice(d);
if (cachedDevice == null) {
- cachedDevice = mCachedDeviceManager.addDevice(mLocalBluetoothAdapter, d);
+ cachedDevice = mCachedDeviceManager.addDevice(d);
}
return cachedDevice;
}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/AutoAddTracker.java b/packages/SystemUI/src/com/android/systemui/qs/AutoAddTracker.java
index 2a2bc09..dfd3f73 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/AutoAddTracker.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/AutoAddTracker.java
@@ -72,6 +72,12 @@
}
}
+ public void setTileRemoved(String tile) {
+ if (mAutoAdded.remove(tile)) {
+ saveTiles();
+ }
+ }
+
public void destroy() {
mContext.getContentResolver().unregisterContentObserver(mObserver);
}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSHost.java b/packages/SystemUI/src/com/android/systemui/qs/QSHost.java
index 84524a6..84fa700 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSHost.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSHost.java
@@ -32,6 +32,7 @@
void removeCallback(Callback callback);
TileServices getTileServices();
void removeTile(String tileSpec);
+ void unmarkTileAsAutoAdded(String tileSpec);
int indexOf(String tileSpec);
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSTileHost.java b/packages/SystemUI/src/com/android/systemui/qs/QSTileHost.java
index bb69b7a..86e69e3 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSTileHost.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSTileHost.java
@@ -231,6 +231,11 @@
changeTileSpecs(tileSpecs-> tileSpecs.remove(spec));
}
+ @Override
+ public void unmarkTileAsAutoAdded(String spec) {
+ mAutoTiles.unmarkTileAsAutoAdded(spec);
+ }
+
public void addTile(String spec) {
changeTileSpecs(tileSpecs-> tileSpecs.add(spec));
}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/DndTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/DndTile.java
index f523196..50c8698 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/DndTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/DndTile.java
@@ -145,7 +145,9 @@
int zenDuration = Settings.Secure.getInt(mContext.getContentResolver(),
Settings.Secure.ZEN_DURATION, 0);
boolean showOnboarding = Settings.Secure.getInt(mContext.getContentResolver(),
- Settings.Secure.SHOW_ZEN_UPGRADE_NOTIFICATION, 0) != 0;
+ Settings.Secure.SHOW_ZEN_UPGRADE_NOTIFICATION, 0) != 0
+ && Settings.Secure.getInt(mContext.getContentResolver(),
+ Settings.Secure.ZEN_SETTINGS_UPDATED, 0) != 1;
if (showOnboarding) {
// don't show on-boarding again or notification ever
Settings.Secure.putInt(mContext.getContentResolver(),
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/WorkModeTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/WorkModeTile.java
index 5bab3e8..3109dea 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/WorkModeTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/WorkModeTile.java
@@ -78,6 +78,7 @@
@Override
public void onManagedProfileRemoved() {
mHost.removeTile(getTileSpec());
+ mHost.unmarkTileAsAutoAdded(getTileSpec());
}
@Override
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationGutsManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationGutsManager.java
index ef0be880..ab47d33 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationGutsManager.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationGutsManager.java
@@ -280,6 +280,7 @@
mCheckSaveListener,
onSettingsClick,
onAppSettingsClick,
+ mPresenter.isDeviceProvisioned(),
row.getIsNonblockable(),
isForBlockingHelper,
row.getEntry().userSentiment == USER_SENTIMENT_NEGATIVE);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationInfo.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationInfo.java
index 3e380d1..9e2331f 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationInfo.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationInfo.java
@@ -81,6 +81,7 @@
private StatusBarNotification mSbn;
private AnimatorSet mExpandAnimation;
private boolean mIsForeground;
+ private boolean mIsDeviceProvisioned;
private CheckSaveListener mCheckSaveListener;
private OnSettingsClickListener mOnSettingsClickListener;
@@ -143,12 +144,13 @@
final CheckSaveListener checkSaveListener,
final OnSettingsClickListener onSettingsClick,
final OnAppSettingsClickListener onAppSettingsClick,
+ boolean isDeviceProvisioned,
boolean isNonblockable)
throws RemoteException {
bindNotification(pm, iNotificationManager, pkg, notificationChannel,
numUniqueChannelsInRow, sbn, checkSaveListener, onSettingsClick,
- onAppSettingsClick, isNonblockable, false /* isBlockingHelper */,
- false /* isUserSentimentNegative */);
+ onAppSettingsClick, isDeviceProvisioned, isNonblockable,
+ false /* isBlockingHelper */, false /* isUserSentimentNegative */);
}
public void bindNotification(
@@ -161,6 +163,7 @@
CheckSaveListener checkSaveListener,
OnSettingsClickListener onSettingsClick,
OnAppSettingsClickListener onAppSettingsClick,
+ boolean isDeviceProvisioned,
boolean isNonblockable,
boolean isForBlockingHelper,
boolean isUserSentimentNegative)
@@ -183,6 +186,7 @@
(mSbn.getNotification().flags & Notification.FLAG_FOREGROUND_SERVICE) != 0;
mIsForBlockingHelper = isForBlockingHelper;
mAppUid = mSbn.getUid();
+ mIsDeviceProvisioned = isDeviceProvisioned;
int numTotalChannels = mINotificationManager.getNumNotificationChannelsForPackage(
pkg, mAppUid, false /* includeDeleted */);
@@ -246,7 +250,7 @@
// Settings button.
final View settingsButton = findViewById(R.id.info);
- if (mAppUid >= 0 && mOnSettingsClickListener != null) {
+ if (mAppUid >= 0 && mOnSettingsClickListener != null && mIsDeviceProvisioned) {
settingsButton.setVisibility(View.VISIBLE);
final int appUidF = mAppUid;
settingsButton.setOnClickListener(
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/AutoTileManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/AutoTileManager.java
index 446a1d4..ab58660 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/AutoTileManager.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/AutoTileManager.java
@@ -96,6 +96,10 @@
Dependency.get(ColorDisplayController.class).setListener(null);
}
+ public void unmarkTileAsAutoAdded(String tabSpec) {
+ mAutoTracker.setTileRemoved(tabSpec);
+ }
+
private final ManagedProfileController.Callback mProfileCallback =
new ManagedProfileController.Callback() {
@Override
@@ -104,8 +108,6 @@
if (Dependency.get(ManagedProfileController.class).hasActiveProfile()) {
mHost.addTile(WORK);
mAutoTracker.setTileAdded(WORK);
- mHandler.post(() -> Dependency.get(ManagedProfileController.class)
- .removeCallback(mProfileCallback));
}
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/ScreenDecorationsTest.java b/packages/SystemUI/tests/src/com/android/systemui/ScreenDecorationsTest.java
index f1bf31d..644c0b3 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/ScreenDecorationsTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/ScreenDecorationsTest.java
@@ -34,8 +34,10 @@
import android.app.Fragment;
import android.content.res.Configuration;
+import android.os.Handler;
import android.support.test.filters.SmallTest;
import android.testing.AndroidTestingRunner;
+import android.testing.TestableLooper;
import android.testing.TestableLooper.RunWithLooper;
import android.view.Display;
import android.view.View;
@@ -60,6 +62,7 @@
@SmallTest
public class ScreenDecorationsTest extends SysuiTestCase {
+ private TestableLooper mTestableLooper;
private ScreenDecorations mScreenDecorations;
private StatusBar mStatusBar;
private WindowManager mWindowManager;
@@ -71,6 +74,10 @@
@Before
public void setup() {
+ mTestableLooper = TestableLooper.get(this);
+ mDependency.injectTestDependency(Dependency.MAIN_HANDLER,
+ new Handler(mTestableLooper.getLooper()));
+
mStatusBar = mock(StatusBar.class);
mWindowManager = mock(WindowManager.class);
mView = spy(new StatusBarWindowView(mContext, null));
@@ -88,7 +95,31 @@
mTunerService = mDependency.injectMockDependency(TunerService.class);
- mScreenDecorations = new ScreenDecorations();
+
+ mScreenDecorations = new ScreenDecorations() {
+ @Override
+ public void start() {
+ super.start();
+ mTestableLooper.processAllMessages();
+ }
+
+ @Override
+ Handler startHandlerThread() {
+ return new Handler(mTestableLooper.getLooper());
+ }
+
+ @Override
+ protected void onConfigurationChanged(Configuration newConfig) {
+ super.onConfigurationChanged(newConfig);
+ mTestableLooper.processAllMessages();
+ }
+
+ @Override
+ public void onTuningChanged(String key, String newValue) {
+ super.onTuningChanged(key, newValue);
+ mTestableLooper.processAllMessages();
+ }
+ };
mScreenDecorations.mContext = mContext;
mScreenDecorations.mComponents = mContext.getComponents();
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationGutsManagerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationGutsManagerTest.java
index e56ccef..676cb61 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationGutsManagerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationGutsManagerTest.java
@@ -286,6 +286,7 @@
any(NotificationInfo.OnSettingsClickListener.class),
any(NotificationInfo.OnAppSettingsClickListener.class),
eq(false),
+ eq(false),
eq(true) /* isForBlockingHelper */,
eq(true) /* isUserSentimentNegative */);
}
@@ -312,6 +313,35 @@
any(NotificationInfo.OnSettingsClickListener.class),
any(NotificationInfo.OnAppSettingsClickListener.class),
eq(false),
+ eq(false),
+ eq(false) /* isForBlockingHelper */,
+ eq(true) /* isUserSentimentNegative */);
+ }
+
+ @Test
+ public void testInitializeNotificationInfoView_PassesAlongProvisionedState() throws Exception {
+ NotificationInfo notificationInfoView = mock(NotificationInfo.class);
+ ExpandableNotificationRow row = spy(mHelper.createRow());
+ row.setBlockingHelperShowing(false);
+ row.getEntry().userSentiment = USER_SENTIMENT_NEGATIVE;
+ when(row.getIsNonblockable()).thenReturn(false);
+ StatusBarNotification statusBarNotification = row.getStatusBarNotification();
+ when(mPresenter.isDeviceProvisioned()).thenReturn(true);
+
+ mGutsManager.initializeNotificationInfo(row, notificationInfoView);
+
+ verify(notificationInfoView).bindNotification(
+ any(PackageManager.class),
+ any(INotificationManager.class),
+ eq(statusBarNotification.getPackageName()),
+ any(NotificationChannel.class),
+ anyInt(),
+ eq(statusBarNotification),
+ any(NotificationInfo.CheckSaveListener.class),
+ any(NotificationInfo.OnSettingsClickListener.class),
+ any(NotificationInfo.OnAppSettingsClickListener.class),
+ eq(true),
+ eq(false),
eq(false) /* isForBlockingHelper */,
eq(true) /* isUserSentimentNegative */);
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationInfoTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationInfoTest.java
index 5ce53cf..c236fbe 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationInfoTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationInfoTest.java
@@ -167,7 +167,7 @@
public void testBindNotification_SetsTextApplicationName() throws Exception {
when(mMockPackageManager.getApplicationLabel(any())).thenReturn("App Name");
mNotificationInfo.bindNotification(mMockPackageManager, mMockINotificationManager,
- TEST_PACKAGE_NAME, mNotificationChannel, 1, mSbn, null, null, null, false);
+ TEST_PACKAGE_NAME, mNotificationChannel, 1, mSbn, null, null, null, true, false);
final TextView textView = mNotificationInfo.findViewById(R.id.pkgname);
assertTrue(textView.getText().toString().contains("App Name"));
assertEquals(VISIBLE, mNotificationInfo.findViewById(R.id.header).getVisibility());
@@ -179,7 +179,7 @@
when(mMockPackageManager.getApplicationIcon(any(ApplicationInfo.class)))
.thenReturn(iconDrawable);
mNotificationInfo.bindNotification(mMockPackageManager, mMockINotificationManager,
- TEST_PACKAGE_NAME, mNotificationChannel, 1, mSbn, null, null, null, false);
+ TEST_PACKAGE_NAME, mNotificationChannel, 1, mSbn, null, null, null, true, false);
final ImageView iconView = mNotificationInfo.findViewById(R.id.pkgicon);
assertEquals(iconDrawable, iconView.getDrawable());
}
@@ -187,7 +187,7 @@
@Test
public void testBindNotification_GroupNameHiddenIfNoGroup() throws Exception {
mNotificationInfo.bindNotification(mMockPackageManager, mMockINotificationManager,
- TEST_PACKAGE_NAME, mNotificationChannel, 1, mSbn, null, null, null, false);
+ TEST_PACKAGE_NAME, mNotificationChannel, 1, mSbn, null, null, null, true, false);
final TextView groupNameView = mNotificationInfo.findViewById(R.id.group_name);
assertEquals(GONE, groupNameView.getVisibility());
final TextView groupDividerView = mNotificationInfo.findViewById(R.id.pkg_group_divider);
@@ -203,7 +203,7 @@
eq("test_group_id"), eq(TEST_PACKAGE_NAME), eq(TEST_UID)))
.thenReturn(notificationChannelGroup);
mNotificationInfo.bindNotification(mMockPackageManager, mMockINotificationManager,
- TEST_PACKAGE_NAME, mNotificationChannel, 1, mSbn, null, null, null, false);
+ TEST_PACKAGE_NAME, mNotificationChannel, 1, mSbn, null, null, null, true, false);
final TextView groupNameView = mNotificationInfo.findViewById(R.id.group_name);
assertEquals(View.VISIBLE, groupNameView.getVisibility());
assertEquals("Test Group Name", groupNameView.getText());
@@ -214,7 +214,7 @@
@Test
public void testBindNotification_SetsTextChannelName() throws Exception {
mNotificationInfo.bindNotification(mMockPackageManager, mMockINotificationManager,
- TEST_PACKAGE_NAME, mNotificationChannel, 1, mSbn, null, null, null, false);
+ TEST_PACKAGE_NAME, mNotificationChannel, 1, mSbn, null, null, null, true, false);
final TextView textView = mNotificationInfo.findViewById(R.id.channel_name);
assertEquals(TEST_CHANNEL_NAME, textView.getText());
}
@@ -222,7 +222,8 @@
@Test
public void testBindNotification_DefaultChannelDoesNotUseChannelName() throws Exception {
mNotificationInfo.bindNotification(mMockPackageManager, mMockINotificationManager,
- TEST_PACKAGE_NAME, mDefaultNotificationChannel, 1, mSbn, null, null, null, false);
+ TEST_PACKAGE_NAME, mDefaultNotificationChannel, 1, mSbn, null, null, null, true,
+ false);
final TextView textView = mNotificationInfo.findViewById(R.id.channel_name);
assertEquals(GONE, textView.getVisibility());
}
@@ -234,7 +235,8 @@
when(mMockINotificationManager.getNumNotificationChannelsForPackage(
eq(TEST_PACKAGE_NAME), eq(TEST_UID), anyBoolean())).thenReturn(10);
mNotificationInfo.bindNotification(mMockPackageManager, mMockINotificationManager,
- TEST_PACKAGE_NAME, mDefaultNotificationChannel, 1, mSbn, null, null, null, false);
+ TEST_PACKAGE_NAME, mDefaultNotificationChannel, 1, mSbn, null, null, null, true,
+ false);
final TextView textView = mNotificationInfo.findViewById(R.id.channel_name);
assertEquals(VISIBLE, textView.getVisibility());
}
@@ -242,7 +244,7 @@
@Test
public void testBindNotification_UnblockablePackageUsesChannelName() throws Exception {
mNotificationInfo.bindNotification(mMockPackageManager, mMockINotificationManager,
- TEST_PACKAGE_NAME, mNotificationChannel, 1, mSbn, null, null, null, true);
+ TEST_PACKAGE_NAME, mNotificationChannel, 1, mSbn, null, null, null, true, true);
final TextView textView = mNotificationInfo.findViewById(R.id.channel_name);
assertEquals(VISIBLE, textView.getVisibility());
}
@@ -250,7 +252,7 @@
@Test
public void testBindNotification_BlockButton() throws Exception {
mNotificationInfo.bindNotification(mMockPackageManager, mMockINotificationManager,
- TEST_PACKAGE_NAME, mNotificationChannel, 1, mSbn, null, null, null, false);
+ TEST_PACKAGE_NAME, mNotificationChannel, 1, mSbn, null, null, null, true, false);
final View block = mNotificationInfo.findViewById(R.id.block);
final View minimize = mNotificationInfo.findViewById(R.id.minimize);
assertEquals(VISIBLE, block.getVisibility());
@@ -261,7 +263,7 @@
public void testBindNotification_MinButton() throws Exception {
mSbn.getNotification().flags = Notification.FLAG_FOREGROUND_SERVICE;
mNotificationInfo.bindNotification(mMockPackageManager, mMockINotificationManager,
- TEST_PACKAGE_NAME, mNotificationChannel, 1, mSbn, null, null, null, false);
+ TEST_PACKAGE_NAME, mNotificationChannel, 1, mSbn, null, null, null, true, false);
final View block = mNotificationInfo.findViewById(R.id.block);
final View minimize = mNotificationInfo.findViewById(R.id.minimize);
assertEquals(GONE, block.getVisibility());
@@ -276,7 +278,7 @@
(View v, NotificationChannel c, int appUid) -> {
assertEquals(mNotificationChannel, c);
latch.countDown();
- }, null, false);
+ }, null, true, false);
final View settingsButton = mNotificationInfo.findViewById(R.id.info);
settingsButton.performClick();
@@ -287,7 +289,19 @@
@Test
public void testBindNotification_SettingsButtonInvisibleWhenNoClickListener() throws Exception {
mNotificationInfo.bindNotification(mMockPackageManager, mMockINotificationManager,
- TEST_PACKAGE_NAME, mNotificationChannel, 1, mSbn, null, null, null, false);
+ TEST_PACKAGE_NAME, mNotificationChannel, 1, mSbn, null, null, null, true, false);
+ final View settingsButton = mNotificationInfo.findViewById(R.id.info);
+ assertTrue(settingsButton.getVisibility() != View.VISIBLE);
+ }
+
+ @Test
+ public void testBindNotification_SettingsButtonInvisibleWhenDeviceUnprovisioned()
+ throws Exception {
+ mNotificationInfo.bindNotification(mMockPackageManager, mMockINotificationManager,
+ TEST_PACKAGE_NAME, mNotificationChannel, 1, mSbn, null,
+ (View v, NotificationChannel c, int appUid) -> {
+ assertEquals(mNotificationChannel, c);
+ }, null, false, false);
final View settingsButton = mNotificationInfo.findViewById(R.id.info);
assertTrue(settingsButton.getVisibility() != View.VISIBLE);
}
@@ -295,11 +309,11 @@
@Test
public void testBindNotification_SettingsButtonReappearsAfterSecondBind() throws Exception {
mNotificationInfo.bindNotification(mMockPackageManager, mMockINotificationManager,
- TEST_PACKAGE_NAME, mNotificationChannel, 1, mSbn, null, null, null, false);
+ TEST_PACKAGE_NAME, mNotificationChannel, 1, mSbn, null, null, null, true, false);
mNotificationInfo.bindNotification(mMockPackageManager, mMockINotificationManager,
TEST_PACKAGE_NAME, mNotificationChannel, 1, mSbn, null,
(View v, NotificationChannel c, int appUid) -> {
- }, null, false);
+ }, null, true, false);
final View settingsButton = mNotificationInfo.findViewById(R.id.info);
assertEquals(View.VISIBLE, settingsButton.getVisibility());
}
@@ -307,7 +321,7 @@
@Test
public void testLogBlockingHelperCounter_doesntLogForNormalGutsView() throws Exception {
mNotificationInfo.bindNotification(mMockPackageManager, mMockINotificationManager,
- TEST_PACKAGE_NAME, mNotificationChannel, 1, mSbn, null, null, null, false);
+ TEST_PACKAGE_NAME, mNotificationChannel, 1, mSbn, null, null, null, true, false);
mNotificationInfo.logBlockingHelperCounter("HowCanNotifsBeRealIfAppsArent");
verify(mMetricsLogger, times(0)).count(anyString(), anyInt());
}
@@ -316,7 +330,7 @@
public void testLogBlockingHelperCounter_logsForBlockingHelper() throws Exception {
mNotificationInfo.bindNotification(mMockPackageManager, mMockINotificationManager,
TEST_PACKAGE_NAME, mNotificationChannel, 1, mSbn, null, null, null, false, true,
- true);
+ true, true);
mNotificationInfo.logBlockingHelperCounter("HowCanNotifsBeRealIfAppsArent");
verify(mMetricsLogger, times(1)).count(anyString(), anyInt());
}
@@ -329,7 +343,7 @@
(View v, NotificationChannel c, int appUid) -> {
assertEquals(null, c);
latch.countDown();
- }, null, true);
+ }, null, true, true);
mNotificationInfo.findViewById(R.id.info).performClick();
// Verify that listener was triggered.
@@ -342,7 +356,7 @@
throws Exception {
mNotificationInfo.bindNotification(mMockPackageManager, mMockINotificationManager,
TEST_PACKAGE_NAME, mNotificationChannel, MULTIPLE_CHANNEL_COUNT, mSbn, null, null,
- null, true);
+ null, true, true);
final TextView channelNameView =
mNotificationInfo.findViewById(R.id.channel_name);
assertEquals(GONE, channelNameView.getVisibility());
@@ -353,7 +367,7 @@
public void testStopInvisibleIfBundleFromDifferentChannels() throws Exception {
mNotificationInfo.bindNotification(mMockPackageManager, mMockINotificationManager,
TEST_PACKAGE_NAME, mNotificationChannel, MULTIPLE_CHANNEL_COUNT, mSbn, null, null,
- null, true);
+ null, true, true);
final TextView blockView = mNotificationInfo.findViewById(R.id.block);
assertEquals(GONE, blockView.getVisibility());
}
@@ -362,7 +376,7 @@
public void testbindNotification_BlockingHelper() throws Exception {
mNotificationInfo.bindNotification(mMockPackageManager, mMockINotificationManager,
TEST_PACKAGE_NAME, mNotificationChannel, 1, mSbn, null, null, null, false, false,
- true);
+ true, true);
final TextView view = mNotificationInfo.findViewById(R.id.block_prompt);
assertEquals(View.VISIBLE, view.getVisibility());
assertEquals(mContext.getString(R.string.inline_blocking_helper), view.getText());
@@ -371,7 +385,7 @@
@Test
public void testbindNotification_UnblockableTextVisibleWhenAppUnblockable() throws Exception {
mNotificationInfo.bindNotification(mMockPackageManager, mMockINotificationManager,
- TEST_PACKAGE_NAME, mNotificationChannel, 1, mSbn, null, null, null, true);
+ TEST_PACKAGE_NAME, mNotificationChannel, 1, mSbn, null, null, null, true, true);
final TextView view = mNotificationInfo.findViewById(R.id.block_prompt);
assertEquals(View.VISIBLE, view.getVisibility());
assertEquals(mContext.getString(R.string.notification_unblockable_desc),
@@ -381,7 +395,7 @@
@Test
public void testBindNotification_DoesNotUpdateNotificationChannel() throws Exception {
mNotificationInfo.bindNotification(mMockPackageManager, mMockINotificationManager,
- TEST_PACKAGE_NAME, mNotificationChannel, 1, mSbn, null, null, null, false);
+ TEST_PACKAGE_NAME, mNotificationChannel, 1, mSbn, null, null, null, true, false);
mTestableLooper.processAllMessages();
verify(mMockINotificationManager, never()).updateNotificationChannelForPackage(
anyString(), eq(TEST_UID), any());
@@ -391,7 +405,7 @@
public void testDoesNotUpdateNotificationChannelAfterImportanceChanged() throws Exception {
mNotificationChannel.setImportance(IMPORTANCE_LOW);
mNotificationInfo.bindNotification(mMockPackageManager, mMockINotificationManager,
- TEST_PACKAGE_NAME, mNotificationChannel, 1, mSbn, null, null, null, false);
+ TEST_PACKAGE_NAME, mNotificationChannel, 1, mSbn, null, null, null, true, false);
mNotificationInfo.findViewById(R.id.block).performClick();
mTestableLooper.processAllMessages();
@@ -404,7 +418,7 @@
throws Exception {
mNotificationChannel.setImportance(IMPORTANCE_LOW);
mNotificationInfo.bindNotification(mMockPackageManager, mMockINotificationManager,
- TEST_PACKAGE_NAME, mNotificationChannel, 1, mSbn, null, null, null, false);
+ TEST_PACKAGE_NAME, mNotificationChannel, 1, mSbn, null, null, null, true, false);
mNotificationInfo.findViewById(R.id.minimize).performClick();
mTestableLooper.processAllMessages();
@@ -417,7 +431,7 @@
throws Exception {
int originalImportance = mNotificationChannel.getImportance();
mNotificationInfo.bindNotification(mMockPackageManager, mMockINotificationManager,
- TEST_PACKAGE_NAME, mNotificationChannel, 1, mSbn, null, null, null, false);
+ TEST_PACKAGE_NAME, mNotificationChannel, 1, mSbn, null, null, null, true, false);
mNotificationInfo.handleCloseControls(true, false);
mTestableLooper.processAllMessages();
@@ -431,7 +445,7 @@
throws Exception {
mNotificationChannel.setImportance(IMPORTANCE_UNSPECIFIED);
mNotificationInfo.bindNotification(mMockPackageManager, mMockINotificationManager,
- TEST_PACKAGE_NAME, mNotificationChannel, 1, mSbn, null, null, null, false);
+ TEST_PACKAGE_NAME, mNotificationChannel, 1, mSbn, null, null, null, true, false);
mNotificationInfo.handleCloseControls(true, false);
@@ -449,7 +463,7 @@
TEST_PACKAGE_NAME, mNotificationChannel /* notificationChannel */,
10 /* numUniqueChannelsInRow */, mSbn, null /* checkSaveListener */,
null /* onSettingsClick */, null /* onAppSettingsClick */ ,
- false /* isNonblockable */);
+ true, false /* isNonblockable */);
mNotificationInfo.findViewById(R.id.block).performClick();
waitForUndoButton();
@@ -470,7 +484,7 @@
TEST_PACKAGE_NAME, mNotificationChannel /* notificationChannel */,
10 /* numUniqueChannelsInRow */, mSbn, null /* checkSaveListener */,
null /* onSettingsClick */, null /* onAppSettingsClick */ ,
- false /* isNonblockable */);
+ true, false /* isNonblockable */);
mNotificationInfo.findViewById(R.id.block).performClick();
waitForUndoButton();
@@ -489,6 +503,7 @@
TEST_PACKAGE_NAME, mNotificationChannel /* notificationChannel */,
10 /* numUniqueChannelsInRow */, mSbn, null /* checkSaveListener */,
null /* onSettingsClick */, null /* onAppSettingsClick */ ,
+ true /* provisioned */,
false /* isNonblockable */, true /* isForBlockingHelper */,
true /* isUserSentimentNegative */);
@@ -516,7 +531,7 @@
mNotificationInfo.bindNotification(mMockPackageManager, mMockINotificationManager,
TEST_PACKAGE_NAME, mNotificationChannel /* notificationChannel */,
10 /* numUniqueChannelsInRow */, mSbn, listener /* checkSaveListener */,
- null /* onSettingsClick */, null /* onAppSettingsClick */ ,
+ null /* onSettingsClick */, null /* onAppSettingsClick */ , true /* provisioned */,
false /* isNonblockable */, true /* isForBlockingHelper */,
true /* isUserSentimentNegative */);
@@ -546,7 +561,7 @@
10 /* numUniqueChannelsInRow */, mSbn, listener /* checkSaveListener */,
null /* onSettingsClick */, null /* onAppSettingsClick */ ,
false /* isNonblockable */, true /* isForBlockingHelper */,
- true /* isUserSentimentNegative */);
+ true, true /* isUserSentimentNegative */);
mNotificationInfo.handleCloseControls(true /* save */, false /* force */);
@@ -562,7 +577,8 @@
mNotificationInfo.bindNotification(mMockPackageManager, mMockINotificationManager,
TEST_PACKAGE_NAME, mNotificationChannel /* notificationChannel */,
10 /* numUniqueChannelsInRow */, mSbn, listener /* checkSaveListener */,
- null /* onSettingsClick */, null /* onAppSettingsClick */ ,
+ null /* onSettingsClick */, null /* onAppSettingsClick */,
+ true /* provisioned */,
false /* isNonblockable */, true /* isForBlockingHelper */,
true /* isUserSentimentNegative */);
@@ -588,6 +604,7 @@
null /* onAppSettingsClick */,
false /* isNonblockable */,
true /* isForBlockingHelper */,
+ true,
false /* isUserSentimentNegative */);
NotificationGuts guts = mock(NotificationGuts.class);
doCallRealMethod().when(guts).closeControls(anyInt(), anyInt(), anyBoolean(), anyBoolean());
@@ -602,7 +619,7 @@
public void testNonBlockableAppDoesNotBecomeBlocked() throws Exception {
mNotificationChannel.setImportance(IMPORTANCE_LOW);
mNotificationInfo.bindNotification(mMockPackageManager, mMockINotificationManager,
- TEST_PACKAGE_NAME, mNotificationChannel, 1, mSbn, null, null, null, true);
+ TEST_PACKAGE_NAME, mNotificationChannel, 1, mSbn, null, null, null, true, true);
mNotificationInfo.findViewById(R.id.block).performClick();
waitForUndoButton();
@@ -615,7 +632,7 @@
public void testBlockChangedCallsUpdateNotificationChannel() throws Exception {
mNotificationChannel.setImportance(IMPORTANCE_LOW);
mNotificationInfo.bindNotification(mMockPackageManager, mMockINotificationManager,
- TEST_PACKAGE_NAME, mNotificationChannel, 1, mSbn, null, null, null, false);
+ TEST_PACKAGE_NAME, mNotificationChannel, 1, mSbn, null, null, null, true, false);
mNotificationInfo.findViewById(R.id.block).performClick();
waitForUndoButton();
@@ -644,6 +661,7 @@
null /* checkSaveListener */,
null /* onSettingsClick */,
null /* onAppSettingsClick */,
+ true /*provisioned */,
false /* isNonblockable */,
true /* isForBlockingHelper */,
true /* isUserSentimentNegative */);
@@ -667,7 +685,7 @@
public void testNonBlockableAppDoesNotBecomeMin() throws Exception {
mNotificationChannel.setImportance(IMPORTANCE_LOW);
mNotificationInfo.bindNotification(mMockPackageManager, mMockINotificationManager,
- TEST_PACKAGE_NAME, mNotificationChannel, 1, mSbn, null, null, null, true);
+ TEST_PACKAGE_NAME, mNotificationChannel, 1, mSbn, null, null, null, true, true);
mNotificationInfo.findViewById(R.id.minimize).performClick();
waitForUndoButton();
@@ -681,7 +699,7 @@
mNotificationChannel.setImportance(IMPORTANCE_LOW);
mSbn.getNotification().flags = Notification.FLAG_FOREGROUND_SERVICE;
mNotificationInfo.bindNotification(mMockPackageManager, mMockINotificationManager,
- TEST_PACKAGE_NAME, mNotificationChannel, 1, mSbn, null, null, null, false);
+ TEST_PACKAGE_NAME, mNotificationChannel, 1, mSbn, null, null, null, true, false);
mNotificationInfo.findViewById(R.id.minimize).performClick();
waitForUndoButton();
@@ -701,7 +719,7 @@
public void testKeepUpdatesNotificationChannel() throws Exception {
mNotificationChannel.setImportance(IMPORTANCE_LOW);
mNotificationInfo.bindNotification(mMockPackageManager, mMockINotificationManager,
- TEST_PACKAGE_NAME, mNotificationChannel, 1, mSbn, null, null, null, false);
+ TEST_PACKAGE_NAME, mNotificationChannel, 1, mSbn, null, null, null, true, false);
mNotificationInfo.handleCloseControls(true, false);
@@ -718,7 +736,7 @@
public void testBlockUndoDoesNotBlockNotificationChannel() throws Exception {
mNotificationChannel.setImportance(IMPORTANCE_LOW);
mNotificationInfo.bindNotification(mMockPackageManager, mMockINotificationManager,
- TEST_PACKAGE_NAME, mNotificationChannel, 1, mSbn, null, null, null, false);
+ TEST_PACKAGE_NAME, mNotificationChannel, 1, mSbn, null, null, null, true, false);
mNotificationInfo.findViewById(R.id.block).performClick();
waitForUndoButton();
@@ -739,7 +757,7 @@
public void testMinUndoDoesNotMinNotificationChannel() throws Exception {
mNotificationChannel.setImportance(IMPORTANCE_LOW);
mNotificationInfo.bindNotification(mMockPackageManager, mMockINotificationManager,
- TEST_PACKAGE_NAME, mNotificationChannel, 1, mSbn, null, null, null, false);
+ TEST_PACKAGE_NAME, mNotificationChannel, 1, mSbn, null, null, null, true, false);
mNotificationInfo.findViewById(R.id.minimize).performClick();
waitForUndoButton();
@@ -760,7 +778,7 @@
public void testCloseControlsDoesNotUpdateiMinIfSaveIsFalse() throws Exception {
mNotificationChannel.setImportance(IMPORTANCE_LOW);
mNotificationInfo.bindNotification(mMockPackageManager, mMockINotificationManager,
- TEST_PACKAGE_NAME, mNotificationChannel, 1, mSbn, null, null, null, true);
+ TEST_PACKAGE_NAME, mNotificationChannel, 1, mSbn, null, null, null, true, true);
mNotificationInfo.findViewById(R.id.minimize).performClick();
waitForUndoButton();
@@ -775,7 +793,7 @@
public void testCloseControlsDoesNotUpdateIfSaveIsFalse() throws Exception {
mNotificationChannel.setImportance(IMPORTANCE_LOW);
mNotificationInfo.bindNotification(mMockPackageManager, mMockINotificationManager,
- TEST_PACKAGE_NAME, mNotificationChannel, 1, mSbn, null, null, null, true);
+ TEST_PACKAGE_NAME, mNotificationChannel, 1, mSbn, null, null, null, true, true);
mNotificationInfo.findViewById(R.id.block).performClick();
waitForUndoButton();
@@ -792,7 +810,7 @@
mNotificationInfo.bindNotification(mMockPackageManager, mMockINotificationManager,
TEST_PACKAGE_NAME, mNotificationChannel, 1, mSbn,
(Runnable saveImportance, StatusBarNotification sbn) -> {
- }, null, null, true);
+ }, null, null, true, true);
mNotificationInfo.findViewById(R.id.block).performClick();
waitForUndoButton();
@@ -810,7 +828,7 @@
TEST_PACKAGE_NAME, mNotificationChannel, 1, mSbn,
(Runnable saveImportance, StatusBarNotification sbn) -> {
saveImportance.run();
- }, null, null, false);
+ }, null, null, true, false);
mNotificationInfo.findViewById(R.id.block).performClick();
waitForUndoButton();
@@ -842,7 +860,7 @@
TEST_PACKAGE_NAME, mNotificationChannel, 1, sbn, null, null,
(View v, Intent intent) -> {
latch.countDown();
- }, false);
+ }, true, false);
final TextView settingsLink = mNotificationInfo.findViewById(R.id.app_settings);
assertEquals(View.VISIBLE, settingsLink.getVisibility());
settingsLink.performClick();
@@ -870,7 +888,7 @@
TEST_PACKAGE_NAME, mNotificationChannel, MULTIPLE_CHANNEL_COUNT, sbn, null, null,
(View v, Intent intent) -> {
latch.countDown();
- }, false);
+ }, true, false);
final TextView settingsLink = mNotificationInfo.findViewById(R.id.app_settings);
assertEquals(View.VISIBLE, settingsLink.getVisibility());
settingsLink.performClick();
@@ -889,7 +907,7 @@
mNotificationInfo.bindNotification(mMockPackageManager, mMockINotificationManager,
TEST_PACKAGE_NAME, mNotificationChannel, MULTIPLE_CHANNEL_COUNT, sbn, null, null,
- null, false);
+ null, true, false);
final TextView settingsLink = mNotificationInfo.findViewById(R.id.app_settings);
assertEquals(GONE, settingsLink.getVisibility());
}
@@ -909,7 +927,7 @@
0, null, 0, 0, n, UserHandle.CURRENT, null, 0);
mNotificationInfo.bindNotification(mMockPackageManager, mMockINotificationManager,
- TEST_PACKAGE_NAME, mNotificationChannel, 1, sbn, null, null, null, false);
+ TEST_PACKAGE_NAME, mNotificationChannel, 1, sbn, null, null, null, true, false);
final TextView settingsLink = mNotificationInfo.findViewById(R.id.app_settings);
assertEquals(GONE, settingsLink.getVisibility());
}
@@ -932,7 +950,7 @@
mNotificationInfo.bindNotification(mMockPackageManager, mMockINotificationManager,
TEST_PACKAGE_NAME, mNotificationChannel, 1, sbn, null, null, null, false, true,
- true);
+ true, true);
final TextView settingsLink = mNotificationInfo.findViewById(R.id.app_settings);
assertEquals(GONE, settingsLink.getVisibility());
}
@@ -948,7 +966,7 @@
mSbn.getNotification().flags = Notification.FLAG_FOREGROUND_SERVICE;
mNotificationChannel.setImportance(IMPORTANCE_LOW);
mNotificationInfo.bindNotification(mMockPackageManager, mMockINotificationManager,
- TEST_PACKAGE_NAME, mNotificationChannel, 1, mSbn, null, null, null, true);
+ TEST_PACKAGE_NAME, mNotificationChannel, 1, mSbn, null, null, null, true, true);
mNotificationInfo.findViewById(R.id.minimize).performClick();
waitForUndoButton();
@@ -960,7 +978,7 @@
public void testUndoText_block() throws Exception {
mNotificationChannel.setImportance(IMPORTANCE_LOW);
mNotificationInfo.bindNotification(mMockPackageManager, mMockINotificationManager,
- TEST_PACKAGE_NAME, mNotificationChannel, 1, mSbn, null, null, null, true);
+ TEST_PACKAGE_NAME, mNotificationChannel, 1, mSbn, null, null, null, true, true);
mNotificationInfo.findViewById(R.id.block).performClick();
waitForUndoButton();
@@ -972,7 +990,7 @@
public void testNoHeaderOnConfirmation() throws Exception {
mNotificationChannel.setImportance(IMPORTANCE_LOW);
mNotificationInfo.bindNotification(mMockPackageManager, mMockINotificationManager,
- TEST_PACKAGE_NAME, mNotificationChannel, 1, mSbn, null, null, null, true);
+ TEST_PACKAGE_NAME, mNotificationChannel, 1, mSbn, null, null, null, true, true);
mNotificationInfo.findViewById(R.id.block).performClick();
waitForUndoButton();
@@ -983,7 +1001,7 @@
public void testHeaderOnUndo() throws Exception {
mNotificationChannel.setImportance(IMPORTANCE_LOW);
mNotificationInfo.bindNotification(mMockPackageManager, mMockINotificationManager,
- TEST_PACKAGE_NAME, mNotificationChannel, 1, mSbn, null, null, null, true);
+ TEST_PACKAGE_NAME, mNotificationChannel, 1, mSbn, null, null, null, true, true);
mNotificationInfo.findViewById(R.id.block).performClick();
waitForUndoButton();
diff --git a/services/core/java/com/android/server/am/ActivityManagerShellCommand.java b/services/core/java/com/android/server/am/ActivityManagerShellCommand.java
index 081d6f9..9de6875 100644
--- a/services/core/java/com/android/server/am/ActivityManagerShellCommand.java
+++ b/services/core/java/com/android/server/am/ActivityManagerShellCommand.java
@@ -16,6 +16,14 @@
package com.android.server.am;
+import static android.app.ActivityTaskManager.RESIZE_MODE_SYSTEM;
+import static android.app.ActivityTaskManager.RESIZE_MODE_USER;
+import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED;
+import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED;
+import static android.view.Display.INVALID_DISPLAY;
+
+import static com.android.server.am.TaskRecord.INVALID_TASK_ID;
+
import android.app.ActivityManager;
import android.app.ActivityOptions;
import android.app.ActivityTaskManager;
@@ -102,15 +110,6 @@
import javax.microedition.khronos.egl.EGLDisplay;
import javax.microedition.khronos.egl.EGLSurface;
-import static android.app.ActivityTaskManager.RESIZE_MODE_SYSTEM;
-import static android.app.ActivityTaskManager.RESIZE_MODE_USER;
-import static android.app.ActivityTaskManager.INVALID_STACK_ID;
-import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED;
-import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED;
-import static android.view.Display.INVALID_DISPLAY;
-
-import static com.android.server.am.TaskRecord.INVALID_TASK_ID;
-
final class ActivityManagerShellCommand extends ShellCommand {
public static final String NO_CLASS_ERROR_CODE = "Error type 3";
private static final String SHELL_PACKAGE_NAME = "com.android.shell";
@@ -2850,6 +2849,7 @@
pw.println(" --checkin: output checkin format, resetting data.");
pw.println(" --C: output checkin format, not resetting data.");
pw.println(" --proto: output dump in protocol buffer format.");
+ pw.println(" --autofill: dump just the autofill-related state of an activity");
} else {
pw.println("Activity manager (activity) commands:");
pw.println(" help");
diff --git a/services/core/java/com/android/server/clipboard/ClipboardService.java b/services/core/java/com/android/server/clipboard/ClipboardService.java
index e2ad5f5..c80c0f1 100644
--- a/services/core/java/com/android/server/clipboard/ClipboardService.java
+++ b/services/core/java/com/android/server/clipboard/ClipboardService.java
@@ -47,12 +47,14 @@
import android.os.SystemProperties;
import android.os.UserHandle;
import android.os.UserManager;
+import android.provider.Settings;
import android.util.Slog;
import android.util.SparseArray;
import com.android.server.LocalServices;
import com.android.server.SystemService;
import com.android.server.uri.UriGrantsManagerInternal;
+import com.android.server.wm.WindowManagerInternal;
import java.io.IOException;
import java.io.RandomAccessFile;
@@ -149,6 +151,7 @@
private final IActivityManager mAm;
private final IUriGrantsManager mUgm;
private final UriGrantsManagerInternal mUgmInternal;
+ private final WindowManagerInternal mWm;
private final IUserManager mUm;
private final PackageManager mPm;
private final AppOpsManager mAppOps;
@@ -167,6 +170,7 @@
mAm = ActivityManager.getService();
mUgm = UriGrantsManager.getService();
mUgmInternal = LocalServices.getService(UriGrantsManagerInternal.class);
+ mWm = LocalServices.getService(WindowManagerInternal.class);
mPm = getContext().getPackageManager();
mUm = (IUserManager) ServiceManager.getService(Context.USER_SERVICE);
mAppOps = (AppOpsManager) getContext().getSystemService(Context.APP_OPS_SERVICE);
@@ -623,18 +627,19 @@
if (mAppOps.noteOp(op, callingUid, callingPackage) != AppOpsManager.MODE_ALLOWED) {
return false;
}
- try {
- // Installed apps can access the clipboard at any time.
- if (!AppGlobals.getPackageManager().isInstantApp(callingPackage,
- UserHandle.getUserId(callingUid))) {
- return true;
- }
- // Instant apps can only access the clipboard if they are in the foreground.
- return mAm.isAppForeground(callingUid);
- } catch (RemoteException e) {
- Slog.e("clipboard", "Failed to get Instant App status for package " + callingPackage,
- e);
- return false;
+ // The default IME is always allowed to access the clipboard.
+ String defaultIme = Settings.Secure.getStringForUser(getContext().getContentResolver(),
+ Settings.Secure.DEFAULT_INPUT_METHOD, UserHandle.getUserId(callingUid));
+ if (defaultIme != null && defaultIme.equals(callingPackage)) {
+ return true;
}
+
+ // Otherwise only focused applications can access the clipboard.
+ boolean uidFocused = mWm.isUidFocused(callingUid);
+ if (!uidFocused) {
+ Slog.e(TAG, "Denying clipboard access to " + callingPackage
+ + ", application is not in focus.");
+ }
+ return uidFocused;
}
}
diff --git a/services/core/java/com/android/server/notification/ZenModeConditions.java b/services/core/java/com/android/server/notification/ZenModeConditions.java
index 8013f7a..b080a73 100644
--- a/services/core/java/com/android/server/notification/ZenModeConditions.java
+++ b/services/core/java/com/android/server/notification/ZenModeConditions.java
@@ -19,7 +19,6 @@
import android.content.ComponentName;
import android.net.Uri;
import android.service.notification.Condition;
-import android.service.notification.IConditionListener;
import android.service.notification.IConditionProvider;
import android.service.notification.ZenModeConfig;
import android.service.notification.ZenModeConfig.ZenRule;
@@ -27,6 +26,8 @@
import android.util.ArraySet;
import android.util.Log;
+import com.android.internal.annotations.VisibleForTesting;
+
import java.io.PrintWriter;
import java.util.Objects;
@@ -36,7 +37,9 @@
private final ZenModeHelper mHelper;
private final ConditionProviders mConditionProviders;
- private final ArrayMap<Uri, ComponentName> mSubscriptions = new ArrayMap<>();
+
+ @VisibleForTesting
+ protected final ArrayMap<Uri, ComponentName> mSubscriptions = new ArrayMap<>();
private boolean mFirstEvaluation = true;
@@ -152,7 +155,8 @@
if (current != null) {
current.add(id);
}
- if (processSubscriptions && trigger != null && trigger.equals(rule.component)) {
+ if (processSubscriptions && ((trigger != null && trigger.equals(rule.component))
+ || isSystemCondition)) {
if (DEBUG) Log.d(TAG, "Subscribing to " + rule.component);
if (mConditionProviders.subscribeIfNecessary(rule.component, rule.conditionId)) {
synchronized (mSubscriptions) {
diff --git a/services/core/java/com/android/server/notification/ZenModeHelper.java b/services/core/java/com/android/server/notification/ZenModeHelper.java
index 7149720..6ac72d3 100644
--- a/services/core/java/com/android/server/notification/ZenModeHelper.java
+++ b/services/core/java/com/android/server/notification/ZenModeHelper.java
@@ -102,7 +102,7 @@
private final ZenModeFiltering mFiltering;
protected final RingerModeDelegate mRingerModeDelegate = new
RingerModeDelegate();
- private final ZenModeConditions mConditions;
+ @VisibleForTesting protected final ZenModeConditions mConditions;
private final SparseArray<ZenModeConfig> mConfigs = new SparseArray<>();
private final Metrics mMetrics = new Metrics();
private final ConditionProviders.Config mServiceConfig;
@@ -1199,7 +1199,9 @@
&& zen != Global.ZEN_MODE_OFF
&& !isWatch
&& Settings.Global.getInt(mContext.getContentResolver(),
- Settings.Secure.SHOW_ZEN_UPGRADE_NOTIFICATION, 0) != 0;
+ Settings.Secure.SHOW_ZEN_UPGRADE_NOTIFICATION, 0) != 0
+ && Settings.Global.getInt(mContext.getContentResolver(),
+ Settings.Secure.ZEN_SETTINGS_UPDATED, 0) != 1;
if (isWatch) {
Settings.Global.putInt(mContext.getContentResolver(),
diff --git a/services/core/java/com/android/server/uri/UriGrantsManagerService.java b/services/core/java/com/android/server/uri/UriGrantsManagerService.java
index a731e9b..9a7e75e 100644
--- a/services/core/java/com/android/server/uri/UriGrantsManagerService.java
+++ b/services/core/java/com/android/server/uri/UriGrantsManagerService.java
@@ -30,6 +30,7 @@
import static android.os.Process.ROOT_UID;
import static android.os.Process.SYSTEM_UID;
import static android.os.Process.myUid;
+
import static com.android.internal.util.XmlUtils.readBooleanAttribute;
import static com.android.internal.util.XmlUtils.readIntAttribute;
import static com.android.internal.util.XmlUtils.readLongAttribute;
@@ -37,6 +38,7 @@
import static com.android.internal.util.XmlUtils.writeIntAttribute;
import static com.android.internal.util.XmlUtils.writeLongAttribute;
import static com.android.server.uri.UriGrantsManagerService.H.PERSIST_URI_GRANTS_MSG;
+
import static org.xmlpull.v1.XmlPullParser.END_DOCUMENT;
import static org.xmlpull.v1.XmlPullParser.START_TAG;
@@ -73,15 +75,19 @@
import android.util.Slog;
import android.util.SparseArray;
import android.util.Xml;
+
import com.android.internal.util.FastXmlSerializer;
import com.android.internal.util.Preconditions;
import com.android.server.IoThread;
import com.android.server.LocalServices;
import com.android.server.SystemService;
import com.android.server.SystemServiceManager;
+
import com.google.android.collect.Lists;
import com.google.android.collect.Maps;
+import libcore.io.IoUtils;
+
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlSerializer;
@@ -98,8 +104,6 @@
import java.util.Iterator;
import java.util.List;
-import libcore.io.IoUtils;
-
/** Manages uri grants. */
public class UriGrantsManagerService extends IUriGrantsManager.Stub {
private static final boolean DEBUG = false;
@@ -150,7 +154,6 @@
void onActivityManagerInternalAdded() {
mAmInternal = LocalServices.getService(ActivityManagerInternal.class);
- mPmInternal = LocalServices.getService(PackageManagerInternal.class);
}
public static final class Lifecycle extends SystemService {
@@ -296,7 +299,7 @@
if (toPackage != null) {
mAmInternal.enforceCallingPermission(FORCE_PERSISTABLE_URI_PERMISSIONS,
"takePersistableUriPermission");
- uid = mPmInternal.getPackageUid(toPackage, 0, userId);
+ uid = getPmInternal().getPackageUid(toPackage, 0, userId);
} else {
enforceNotIsolatedCaller("takePersistableUriPermission");
uid = Binder.getCallingUid();
@@ -361,7 +364,7 @@
if (toPackage != null) {
mAmInternal.enforceCallingPermission(FORCE_PERSISTABLE_URI_PERMISSIONS,
"releasePersistableUriPermission");
- uid = mPmInternal.getPackageUid(toPackage, 0, userId);
+ uid = getPmInternal().getPackageUid(toPackage, 0, userId);
} else {
enforceNotIsolatedCaller("releasePersistableUriPermission");
uid = Binder.getCallingUid();
@@ -1266,6 +1269,14 @@
}
}
+ private PackageManagerInternal getPmInternal() {
+ // Don't need to synchonize; worst-case scenario LocalServices will be called twice.
+ if (mPmInternal == null) {
+ mPmInternal = LocalServices.getService(PackageManagerInternal.class);
+ }
+ return mPmInternal;
+ }
+
final class H extends Handler {
static final int PERSIST_URI_GRANTS_MSG = 1;
diff --git a/services/core/java/com/android/server/wm/ForcedSeamlessRotator.java b/services/core/java/com/android/server/wm/ForcedSeamlessRotator.java
index f2cbc86..f5e6e72 100644
--- a/services/core/java/com/android/server/wm/ForcedSeamlessRotator.java
+++ b/services/core/java/com/android/server/wm/ForcedSeamlessRotator.java
@@ -21,6 +21,7 @@
import android.graphics.Matrix;
import android.view.DisplayInfo;
+import android.view.Surface.Rotation;
import com.android.server.wm.utils.CoordinateTransforms;
@@ -66,6 +67,16 @@
}
/**
+ * Returns the rotation of the display before it started rotating.
+ *
+ * @return the old rotation of the display
+ */
+ @Rotation
+ public int getOldRotation() {
+ return mOldRotation;
+ }
+
+ /**
* Removes the transform to the window token's surface that undoes the effect of the global
* display rotation.
*
diff --git a/services/core/java/com/android/server/wm/WindowManagerInternal.java b/services/core/java/com/android/server/wm/WindowManagerInternal.java
index 90a763d..44783f8 100644
--- a/services/core/java/com/android/server/wm/WindowManagerInternal.java
+++ b/services/core/java/com/android/server/wm/WindowManagerInternal.java
@@ -436,4 +436,9 @@
* the window token is not found.
*/
public abstract int getWindowOwnerUserId(IBinder windowToken);
+
+ /**
+ * Returns {@code true} if a Window owned by {@code uid} has focus.
+ */
+ public abstract boolean isUidFocused(int uid);
}
diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java
index e18d564..c1bfbea 100644
--- a/services/core/java/com/android/server/wm/WindowManagerService.java
+++ b/services/core/java/com/android/server/wm/WindowManagerService.java
@@ -7422,6 +7422,13 @@
return UserHandle.USER_NULL;
}
}
+
+ @Override
+ public boolean isUidFocused(int uid) {
+ synchronized (mWindowMap) {
+ return mCurrentFocus != null ? uid == mCurrentFocus.getOwningUid() : false;
+ }
+ }
}
void registerAppFreezeListener(AppFreezeListener listener) {
diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java
index 0d093d1..58fb7a0 100644
--- a/services/core/java/com/android/server/wm/WindowState.java
+++ b/services/core/java/com/android/server/wm/WindowState.java
@@ -634,6 +634,10 @@
void forceSeamlesslyRotateIfAllowed(int oldRotation, int rotation) {
if (mForceSeamlesslyRotate) {
+ if (mPendingForcedSeamlessRotate != null) {
+ oldRotation = mPendingForcedSeamlessRotate.getOldRotation();
+ }
+
mPendingForcedSeamlessRotate = new ForcedSeamlessRotator(
oldRotation, rotation, getDisplayInfo());
mPendingForcedSeamlessRotate.unrotate(this.mToken);
diff --git a/services/tests/uiservicestests/src/com/android/server/notification/ZenModeHelperTest.java b/services/tests/uiservicestests/src/com/android/server/notification/ZenModeHelperTest.java
index 8cff6f9..91f4bc8 100644
--- a/services/tests/uiservicestests/src/com/android/server/notification/ZenModeHelperTest.java
+++ b/services/tests/uiservicestests/src/com/android/server/notification/ZenModeHelperTest.java
@@ -38,6 +38,7 @@
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
+import android.app.AppGlobals;
import android.app.AppOpsManager;
import android.app.NotificationManager;
import android.content.ComponentName;
@@ -49,8 +50,10 @@
import android.media.AudioManagerInternal;
import android.media.VolumePolicy;
import android.media.AudioSystem;
+import android.net.Uri;
import android.provider.Settings;
import android.provider.Settings.Global;
+import android.service.notification.Condition;
import android.service.notification.ZenModeConfig;
import android.service.notification.ZenModeConfig.ScheduleInfo;
import android.test.suitebuilder.annotation.SmallTest;
@@ -61,6 +64,7 @@
import com.android.internal.R;
import com.android.internal.messages.nano.SystemMessageProto.SystemMessage;
+import com.android.server.notification.ManagedServices.UserProfiles;
import com.android.internal.util.FastXmlSerializer;
import com.android.server.UiServiceTestCase;
@@ -82,7 +86,7 @@
@TestableLooper.RunWithLooper
public class ZenModeHelperTest extends UiServiceTestCase {
- @Mock ConditionProviders mConditionProviders;
+ ConditionProviders mConditionProviders;
@Mock NotificationManager mNotificationManager;
@Mock private Resources mResources;
private TestableLooper mTestableLooper;
@@ -102,6 +106,9 @@
when(mResources.getString(R.string.zen_mode_default_events_name)).thenReturn("events");
when(mContext.getSystemService(NotificationManager.class)).thenReturn(mNotificationManager);
+ mConditionProviders = new ConditionProviders(mContext, new UserProfiles(),
+ AppGlobals.getPackageManager());
+ mConditionProviders.addSystemProvider(new CountdownConditionProvider());
mZenModeHelperSpy = spy(new ZenModeHelper(mContext, mTestableLooper.getLooper(),
mConditionProviders));
}
@@ -289,23 +296,39 @@
@Test
public void testZenUpgradeNotification() {
- // shows zen upgrade notification if stored settings says to shows, boot is completed
+ // shows zen upgrade notification if stored settings says to shows,
+ // zen has not been updated, boot is completed
// and we're setting zen mode on
- Settings.Global.putInt(mContentResolver, Settings.Global.SHOW_ZEN_UPGRADE_NOTIFICATION, 1);
+ Settings.Secure.putInt(mContentResolver, Settings.Secure.SHOW_ZEN_UPGRADE_NOTIFICATION, 1);
+ Settings.Secure.putInt(mContentResolver, Settings.Secure.ZEN_SETTINGS_UPDATED, 0);
mZenModeHelperSpy.mIsBootComplete = true;
mZenModeHelperSpy.setZenModeSetting(Settings.Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS);
verify(mZenModeHelperSpy, times(1)).createZenUpgradeNotification();
verify(mNotificationManager, times(1)).notify(eq(ZenModeHelper.TAG),
eq(SystemMessage.NOTE_ZEN_UPGRADE), any());
- assertEquals(0, Settings.Global.getInt(mContentResolver,
- Settings.Global.SHOW_ZEN_UPGRADE_NOTIFICATION, -1));
+ assertEquals(0, Settings.Secure.getInt(mContentResolver,
+ Settings.Secure.SHOW_ZEN_UPGRADE_NOTIFICATION, -1));
}
@Test
public void testNoZenUpgradeNotification() {
// doesn't show upgrade notification if stored settings says don't show
- Settings.Global.putInt(mContentResolver, Settings.Global.SHOW_ZEN_UPGRADE_NOTIFICATION, 0);
+ Settings.Secure.putInt(mContentResolver, Settings.Secure.SHOW_ZEN_UPGRADE_NOTIFICATION, 0);
+ Settings.Secure.putInt(mContentResolver, Settings.Secure.ZEN_SETTINGS_UPDATED, 0);
+ mZenModeHelperSpy.mIsBootComplete = true;
+ mZenModeHelperSpy.setZenModeSetting(Settings.Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS);
+
+ verify(mZenModeHelperSpy, never()).createZenUpgradeNotification();
+ verify(mNotificationManager, never()).notify(eq(ZenModeHelper.TAG),
+ eq(SystemMessage.NOTE_ZEN_UPGRADE), any());
+ }
+
+ @Test
+ public void testNoZenUpgradeNotificationZenUpdated() {
+ // doesn't show upgrade notification since zen was already updated
+ Settings.Secure.putInt(mContentResolver, Settings.Secure.SHOW_ZEN_UPGRADE_NOTIFICATION, 0);
+ Settings.Secure.putInt(mContentResolver, Settings.Secure.ZEN_SETTINGS_UPDATED, 1);
mZenModeHelperSpy.mIsBootComplete = true;
mZenModeHelperSpy.setZenModeSetting(Settings.Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS);
@@ -887,7 +910,6 @@
setupZenConfigMaintained();
}
-
@Test
public void testReadXmlDefaultRulesExist() throws Exception {
setupZenConfig();
@@ -943,6 +965,30 @@
setupZenConfigMaintained();
}
+ @Test
+ public void testCountdownConditionSubscription() throws Exception {
+ ZenModeConfig config = new ZenModeConfig();
+ mZenModeHelperSpy.mConfig = config;
+ mZenModeHelperSpy.mConditions.evaluateConfig(mZenModeHelperSpy.mConfig, null, true);
+ assertEquals(0, mZenModeHelperSpy.mConditions.mSubscriptions.size());
+
+ mZenModeHelperSpy.mConfig.manualRule = new ZenModeConfig.ZenRule();
+ Uri conditionId = ZenModeConfig.toCountdownConditionId(9000000, false);
+ mZenModeHelperSpy.mConfig.manualRule.conditionId = conditionId;
+ mZenModeHelperSpy.mConfig.manualRule.component = new ComponentName("android",
+ CountdownConditionProvider.class.getName());
+ mZenModeHelperSpy.mConfig.manualRule.condition = new Condition(conditionId, "", "", "", 0,
+ Condition.STATE_TRUE, Condition.FLAG_RELEVANT_NOW);
+ mZenModeHelperSpy.mConfig.manualRule.enabled = true;
+ ZenModeConfig originalConfig = mZenModeHelperSpy.mConfig.copy();
+
+ mZenModeHelperSpy.mConditions.evaluateConfig(mZenModeHelperSpy.mConfig, null, true);
+
+ assertEquals(true, ZenModeConfig.isValidCountdownConditionId(conditionId));
+ assertEquals(originalConfig, mZenModeHelperSpy.mConfig);
+ assertEquals(1, mZenModeHelperSpy.mConditions.mSubscriptions.size());
+ }
+
private void setupZenConfig() {
mZenModeHelperSpy.mZenMode = Settings.Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS;
mZenModeHelperSpy.mConfig.allowAlarms = false;
diff --git a/telephony/java/android/telephony/CarrierConfigManager.java b/telephony/java/android/telephony/CarrierConfigManager.java
index ab94093..a45d70b 100644
--- a/telephony/java/android/telephony/CarrierConfigManager.java
+++ b/telephony/java/android/telephony/CarrierConfigManager.java
@@ -22,6 +22,7 @@
import android.annotation.SuppressLint;
import android.annotation.SystemApi;
import android.annotation.SystemService;
+import android.annotation.UnsupportedAppUsage;
import android.content.Context;
import android.os.PersistableBundle;
import android.os.RemoteException;
@@ -1212,6 +1213,7 @@
* disable_metered_apns}
* @hide
*/
+ @UnsupportedAppUsage
public static final String KEY_CARRIER_DEFAULT_ACTIONS_ON_REDIRECTION_STRING_ARRAY =
"carrier_default_actions_on_redirection_string_array";
@@ -1824,6 +1826,7 @@
* Key identifying if voice call barring notification is required to be shown to the user.
* @hide
*/
+ @UnsupportedAppUsage
public static final String KEY_DISABLE_VOICE_BARRING_NOTIFICATION_BOOL =
"disable_voice_barring_notification_bool";
diff --git a/telephony/java/android/telephony/CellIdentityCdma.java b/telephony/java/android/telephony/CellIdentityCdma.java
index 2809066..5b67dc4 100644
--- a/telephony/java/android/telephony/CellIdentityCdma.java
+++ b/telephony/java/android/telephony/CellIdentityCdma.java
@@ -17,6 +17,7 @@
package android.telephony;
import android.annotation.Nullable;
+import android.annotation.UnsupportedAppUsage;
import android.os.Parcel;
import android.text.TextUtils;
@@ -74,6 +75,7 @@
*
* @hide
*/
+ @UnsupportedAppUsage
public CellIdentityCdma(int nid, int sid, int bid, int lon, int lat) {
this(nid, sid, bid, lon, lat, null, null);
}
diff --git a/telephony/java/android/telephony/CellIdentityGsm.java b/telephony/java/android/telephony/CellIdentityGsm.java
index 4031254..5c84791 100644
--- a/telephony/java/android/telephony/CellIdentityGsm.java
+++ b/telephony/java/android/telephony/CellIdentityGsm.java
@@ -17,6 +17,7 @@
package android.telephony;
import android.annotation.Nullable;
+import android.annotation.UnsupportedAppUsage;
import android.os.Parcel;
import android.text.TextUtils;
@@ -34,13 +35,16 @@
// 16-bit GSM Cell Identity described in TS 27.007, 0..65535
private final int mCid;
// 16-bit GSM Absolute RF Channel Number
+ @UnsupportedAppUsage
private final int mArfcn;
// 6-bit Base Station Identity Code
+ @UnsupportedAppUsage
private final int mBsic;
/**
* @hide
*/
+ @UnsupportedAppUsage
public CellIdentityGsm() {
super(TAG, CellInfo.TYPE_GSM, null, null, null, null);
mLac = Integer.MAX_VALUE;
diff --git a/telephony/java/android/telephony/CellIdentityLte.java b/telephony/java/android/telephony/CellIdentityLte.java
index 5257372..65c904b 100644
--- a/telephony/java/android/telephony/CellIdentityLte.java
+++ b/telephony/java/android/telephony/CellIdentityLte.java
@@ -17,6 +17,7 @@
package android.telephony;
import android.annotation.Nullable;
+import android.annotation.UnsupportedAppUsage;
import android.os.Parcel;
import android.text.TextUtils;
@@ -36,6 +37,7 @@
// 16-bit tracking area code
private final int mTac;
// 18-bit Absolute RF Channel Number
+ @UnsupportedAppUsage
private final int mEarfcn;
// cell bandwidth, in kHz
private final int mBandwidth;
@@ -43,6 +45,7 @@
/**
* @hide
*/
+ @UnsupportedAppUsage
public CellIdentityLte() {
super(TAG, CellInfo.TYPE_LTE, null, null, null, null);
mCi = Integer.MAX_VALUE;
@@ -62,6 +65,7 @@
*
* @hide
*/
+ @UnsupportedAppUsage
public CellIdentityLte(int mcc, int mnc, int ci, int pci, int tac) {
this(ci, pci, tac, Integer.MAX_VALUE, Integer.MAX_VALUE, String.valueOf(mcc),
String.valueOf(mnc), null, null);
diff --git a/telephony/java/android/telephony/CellIdentityWcdma.java b/telephony/java/android/telephony/CellIdentityWcdma.java
index a4ac8e3..e26fcb3 100644
--- a/telephony/java/android/telephony/CellIdentityWcdma.java
+++ b/telephony/java/android/telephony/CellIdentityWcdma.java
@@ -17,6 +17,7 @@
package android.telephony;
import android.annotation.Nullable;
+import android.annotation.UnsupportedAppUsage;
import android.os.Parcel;
import android.text.TextUtils;
@@ -36,6 +37,7 @@
// 9-bit UMTS Primary Scrambling Code described in TS 25.331, 0..511
private final int mPsc;
// 16-bit UMTS Absolute RF Channel Number described in TS 25.101 sec. 5.4.4
+ @UnsupportedAppUsage
private final int mUarfcn;
/**
diff --git a/telephony/java/android/telephony/CellInfo.java b/telephony/java/android/telephony/CellInfo.java
index 6b320f4..4fe1b01 100644
--- a/telephony/java/android/telephony/CellInfo.java
+++ b/telephony/java/android/telephony/CellInfo.java
@@ -18,6 +18,7 @@
import android.annotation.IntDef;
import android.annotation.NonNull;
+import android.annotation.UnsupportedAppUsage;
import android.os.Parcel;
import android.os.Parcelable;
@@ -70,14 +71,19 @@
// Type to distinguish where time stamp gets recorded.
/** @hide */
+ @UnsupportedAppUsage
public static final int TIMESTAMP_TYPE_UNKNOWN = 0;
/** @hide */
+ @UnsupportedAppUsage
public static final int TIMESTAMP_TYPE_ANTENNA = 1;
/** @hide */
+ @UnsupportedAppUsage
public static final int TIMESTAMP_TYPE_MODEM = 2;
/** @hide */
+ @UnsupportedAppUsage
public static final int TIMESTAMP_TYPE_OEM_RIL = 3;
/** @hide */
+ @UnsupportedAppUsage
public static final int TIMESTAMP_TYPE_JAVA_RIL = 4;
/** @hide */
@@ -184,6 +190,7 @@
*
* @hide
*/
+ @UnsupportedAppUsage
public int getTimeStampType() {
return mTimeStampType;
}
@@ -223,6 +230,7 @@
}
}
+ @UnsupportedAppUsage
private static String timeStampTypeToString(int type) {
switch (type) {
case 1:
diff --git a/telephony/java/android/telephony/CellInfoCdma.java b/telephony/java/android/telephony/CellInfoCdma.java
index 8b8d1bb..f67733d 100644
--- a/telephony/java/android/telephony/CellInfoCdma.java
+++ b/telephony/java/android/telephony/CellInfoCdma.java
@@ -16,6 +16,7 @@
package android.telephony;
+import android.annotation.UnsupportedAppUsage;
import android.os.Parcel;
import android.os.Parcelable;
import android.telephony.Rlog;
@@ -32,6 +33,7 @@
private CellSignalStrengthCdma mCellSignalStrengthCdma;
/** @hide */
+ @UnsupportedAppUsage
public CellInfoCdma() {
super();
mCellIdentityCdma = new CellIdentityCdma();
@@ -39,6 +41,7 @@
}
/** @hide */
+ @UnsupportedAppUsage
public CellInfoCdma(CellInfoCdma ci) {
super(ci);
this.mCellIdentityCdma = ci.mCellIdentityCdma.copy();
@@ -50,6 +53,7 @@
return mCellIdentityCdma;
}
/** @hide */
+ @UnsupportedAppUsage
public void setCellIdentity(CellIdentityCdma cid) {
mCellIdentityCdma = cid;
}
diff --git a/telephony/java/android/telephony/CellInfoGsm.java b/telephony/java/android/telephony/CellInfoGsm.java
index f7af1b2..7211de1 100644
--- a/telephony/java/android/telephony/CellInfoGsm.java
+++ b/telephony/java/android/telephony/CellInfoGsm.java
@@ -16,6 +16,7 @@
package android.telephony;
+import android.annotation.UnsupportedAppUsage;
import android.os.Parcel;
import android.os.Parcelable;
import android.telephony.Rlog;
@@ -32,6 +33,7 @@
private CellSignalStrengthGsm mCellSignalStrengthGsm;
/** @hide */
+ @UnsupportedAppUsage
public CellInfoGsm() {
super();
mCellIdentityGsm = new CellIdentityGsm();
diff --git a/telephony/java/android/telephony/CellInfoLte.java b/telephony/java/android/telephony/CellInfoLte.java
index 97d856e..389f643 100644
--- a/telephony/java/android/telephony/CellInfoLte.java
+++ b/telephony/java/android/telephony/CellInfoLte.java
@@ -16,6 +16,7 @@
package android.telephony;
+import android.annotation.UnsupportedAppUsage;
import android.os.Parcel;
import android.os.Parcelable;
import android.telephony.Rlog;
@@ -32,6 +33,7 @@
private CellSignalStrengthLte mCellSignalStrengthLte;
/** @hide */
+ @UnsupportedAppUsage
public CellInfoLte() {
super();
mCellIdentityLte = new CellIdentityLte();
@@ -51,6 +53,7 @@
return mCellIdentityLte;
}
/** @hide */
+ @UnsupportedAppUsage
public void setCellIdentity(CellIdentityLte cid) {
if (DBG) log("setCellIdentity: " + cid);
mCellIdentityLte = cid;
@@ -62,6 +65,7 @@
return mCellSignalStrengthLte;
}
/** @hide */
+ @UnsupportedAppUsage
public void setCellSignalStrength(CellSignalStrengthLte css) {
if (DBG) log("setCellSignalStrength: " + css);
mCellSignalStrengthLte = css;
diff --git a/telephony/java/android/telephony/CellLocation.java b/telephony/java/android/telephony/CellLocation.java
index 5bcaa6e..0133153 100644
--- a/telephony/java/android/telephony/CellLocation.java
+++ b/telephony/java/android/telephony/CellLocation.java
@@ -20,6 +20,7 @@
import android.os.RemoteException;
import android.os.ServiceManager;
+import android.annotation.UnsupportedAppUsage;
import android.telephony.cdma.CdmaCellLocation;
import android.telephony.gsm.GsmCellLocation;
import com.android.internal.telephony.ITelephony;
@@ -57,6 +58,7 @@
*
* @hide
*/
+ @UnsupportedAppUsage
public static CellLocation newFromBundle(Bundle bundle) {
// TelephonyManager.getDefault().getCurrentPhoneType() handles the case when
// ITelephony interface is not up yet.
@@ -73,11 +75,13 @@
/**
* @hide
*/
+ @UnsupportedAppUsage
public abstract void fillInNotifierBundle(Bundle bundle);
/**
* @hide
*/
+ @UnsupportedAppUsage
public abstract boolean isEmpty();
/**
diff --git a/telephony/java/android/telephony/CellSignalStrengthGsm.java b/telephony/java/android/telephony/CellSignalStrengthGsm.java
index cff159b..1e8d119 100644
--- a/telephony/java/android/telephony/CellSignalStrengthGsm.java
+++ b/telephony/java/android/telephony/CellSignalStrengthGsm.java
@@ -16,6 +16,7 @@
package android.telephony;
+import android.annotation.UnsupportedAppUsage;
import android.os.Parcel;
import android.os.Parcelable;
import android.telephony.Rlog;
@@ -34,11 +35,15 @@
private static final int GSM_SIGNAL_STRENGTH_GOOD = 8;
private static final int GSM_SIGNAL_STRENGTH_MODERATE = 5;
+ @UnsupportedAppUsage
private int mSignalStrength; // in ASU; Valid values are (0-31, 99) as defined in TS 27.007 8.5
+ @UnsupportedAppUsage
private int mBitErrorRate; // bit error rate (0-7, 99) as defined in TS 27.007 8.5
+ @UnsupportedAppUsage
private int mTimingAdvance; // range from 0-219 or Integer.MAX_VALUE if unknown
/** @hide */
+ @UnsupportedAppUsage
public CellSignalStrengthGsm() {
setDefaultValues();
}
diff --git a/telephony/java/android/telephony/CellSignalStrengthLte.java b/telephony/java/android/telephony/CellSignalStrengthLte.java
index 2f059f4..ed7d4b2 100644
--- a/telephony/java/android/telephony/CellSignalStrengthLte.java
+++ b/telephony/java/android/telephony/CellSignalStrengthLte.java
@@ -16,6 +16,7 @@
package android.telephony;
+import android.annotation.UnsupportedAppUsage;
import android.os.Parcel;
import android.os.Parcelable;
import android.telephony.Rlog;
@@ -30,14 +31,21 @@
private static final String LOG_TAG = "CellSignalStrengthLte";
private static final boolean DBG = false;
+ @UnsupportedAppUsage
private int mSignalStrength;
+ @UnsupportedAppUsage
private int mRsrp;
+ @UnsupportedAppUsage
private int mRsrq;
+ @UnsupportedAppUsage
private int mRssnr;
+ @UnsupportedAppUsage
private int mCqi;
+ @UnsupportedAppUsage
private int mTimingAdvance;
/** @hide */
+ @UnsupportedAppUsage
public CellSignalStrengthLte() {
setDefaultValues();
}
diff --git a/telephony/java/android/telephony/CellSignalStrengthWcdma.java b/telephony/java/android/telephony/CellSignalStrengthWcdma.java
index 21cf0be..66e0882 100644
--- a/telephony/java/android/telephony/CellSignalStrengthWcdma.java
+++ b/telephony/java/android/telephony/CellSignalStrengthWcdma.java
@@ -16,6 +16,7 @@
package android.telephony;
+import android.annotation.UnsupportedAppUsage;
import android.os.Parcel;
import android.os.Parcelable;
import android.telephony.Rlog;
@@ -34,8 +35,10 @@
private static final int WCDMA_SIGNAL_STRENGTH_GOOD = 8;
private static final int WCDMA_SIGNAL_STRENGTH_MODERATE = 5;
+ @UnsupportedAppUsage
private int mSignalStrength; // in ASU; Valid values are (0-31, 99) as defined in TS 27.007 8.5
// or Integer.MAX_VALUE if unknown
+ @UnsupportedAppUsage
private int mBitErrorRate; // bit error rate (0-7, 99) as defined in TS 27.007 8.5 or
// Integer.MAX_VALUE if unknown
private int mRscp; // bit error rate (0-96, 255) as defined in TS 27.007 8.69 or
diff --git a/telephony/java/android/telephony/DisconnectCause.java b/telephony/java/android/telephony/DisconnectCause.java
index 4fa304a..ee5cdc2 100644
--- a/telephony/java/android/telephony/DisconnectCause.java
+++ b/telephony/java/android/telephony/DisconnectCause.java
@@ -16,6 +16,8 @@
package android.telephony;
+import android.annotation.UnsupportedAppUsage;
+
/**
* Contains disconnect call causes generated by the framework and the RIL.
* @hide
@@ -329,6 +331,7 @@
}
/** Returns descriptive string for the specified disconnect cause. */
+ @UnsupportedAppUsage
public static String toString(int cause) {
switch (cause) {
case NOT_DISCONNECTED:
diff --git a/telephony/java/android/telephony/NeighboringCellInfo.java b/telephony/java/android/telephony/NeighboringCellInfo.java
index b7ccee5..8e99518 100644
--- a/telephony/java/android/telephony/NeighboringCellInfo.java
+++ b/telephony/java/android/telephony/NeighboringCellInfo.java
@@ -24,6 +24,7 @@
import static android.telephony.TelephonyManager.NETWORK_TYPE_UMTS;
import static android.telephony.TelephonyManager.NETWORK_TYPE_UNKNOWN;
+import android.annotation.UnsupportedAppUsage;
import android.os.Parcel;
import android.os.Parcelable;
@@ -47,24 +48,29 @@
* In GSM, mRssi is the Received RSSI;
* In UMTS, mRssi is the Level index of CPICH Received Signal Code Power
*/
+ @UnsupportedAppUsage
private int mRssi;
/**
* CID in 16 bits format in GSM. Return UNKNOWN_CID in UMTS and CMDA.
*/
+ @UnsupportedAppUsage
private int mCid;
/**
* LAC in 16 bits format in GSM. Return UNKNOWN_CID in UMTS and CMDA.
*/
+ @UnsupportedAppUsage
private int mLac;
/**
* Primary Scrambling Code in 9 bits format in UMTS
* Return UNKNOWN_CID in GSM and CMDA.
*/
+ @UnsupportedAppUsage
private int mPsc;
/**
* Radio network type, value is one of following
* TelephonyManager.NETWORK_TYPE_XXXXXX.
*/
+ @UnsupportedAppUsage
private int mNetworkType;
/**
diff --git a/telephony/java/android/telephony/PhoneNumberFormattingTextWatcher.java b/telephony/java/android/telephony/PhoneNumberFormattingTextWatcher.java
index f7dee99..ac6bcaa 100644
--- a/telephony/java/android/telephony/PhoneNumberFormattingTextWatcher.java
+++ b/telephony/java/android/telephony/PhoneNumberFormattingTextWatcher.java
@@ -19,6 +19,7 @@
import com.android.i18n.phonenumbers.AsYouTypeFormatter;
import com.android.i18n.phonenumbers.PhoneNumberUtil;
+import android.annotation.UnsupportedAppUsage;
import android.telephony.PhoneNumberUtils;
import android.text.Editable;
import android.text.Selection;
@@ -50,6 +51,7 @@
*/
private boolean mStopFormatting;
+ @UnsupportedAppUsage
private AsYouTypeFormatter mFormatter;
/**
diff --git a/telephony/java/android/telephony/PhoneNumberUtils.java b/telephony/java/android/telephony/PhoneNumberUtils.java
index fadfc91..f6e8d34 100644
--- a/telephony/java/android/telephony/PhoneNumberUtils.java
+++ b/telephony/java/android/telephony/PhoneNumberUtils.java
@@ -23,6 +23,7 @@
import com.android.i18n.phonenumbers.ShortNumberInfo;
import android.annotation.IntDef;
+import android.annotation.UnsupportedAppUsage;
import android.content.Context;
import android.content.Intent;
import android.content.res.Resources;
@@ -279,6 +280,7 @@
*
* @hide
*/
+ @UnsupportedAppUsage
public static String extractNetworkPortionAlt(String phoneNumber) {
if (phoneNumber == null) {
return null;
@@ -352,6 +354,7 @@
* RFC 3601 says pause is 'p' and tonewait is 'w'.
* @hide
*/
+ @UnsupportedAppUsage
public static String convertPreDial(String phoneNumber) {
if (phoneNumber == null) {
return null;
@@ -464,6 +467,7 @@
/**
* @hide only for testing.
*/
+ @UnsupportedAppUsage
public static boolean compare(String a, String b, boolean useStrictComparation) {
return (useStrictComparation ? compareStrictly(a, b) : compareLoosely(a, b));
}
@@ -482,6 +486,7 @@
*
* @hide
*/
+ @UnsupportedAppUsage
public static boolean
compareLoosely(String a, String b) {
int ia, ib;
@@ -579,6 +584,7 @@
/**
* @hide
*/
+ @UnsupportedAppUsage
public static boolean
compareStrictly(String a, String b) {
return compareStrictly(a, b, true);
@@ -587,6 +593,7 @@
/**
* @hide
*/
+ @UnsupportedAppUsage
public static boolean
compareStrictly(String a, String b, boolean acceptInvalidCCCPrefix) {
if (a == null || b == null) {
@@ -1260,6 +1267,7 @@
* @deprecated Use link #formatNumber(String phoneNumber, String defaultCountryIso) instead
*/
@Deprecated
+ @UnsupportedAppUsage
public static String formatNumber(String source, int defaultFormattingType) {
SpannableStringBuilder text = new SpannableStringBuilder(source);
formatNumber(text, defaultFormattingType);
@@ -1720,6 +1728,7 @@
//
// However, in order to loose match 650-555-1212 and 555-1212, we need to set the min match
// to 7.
+ @UnsupportedAppUsage
static final int MIN_MATCH = 7;
/**
@@ -1744,6 +1753,7 @@
* listed in the RIL / SIM, otherwise return false.
* @hide
*/
+ @UnsupportedAppUsage
public static boolean isEmergencyNumber(int subId, String number) {
// Return true only if the specified number *exactly* matches
// one of the emergency numbers listed by the RIL / SIM.
@@ -1794,6 +1804,7 @@
* same digits as any of those emergency numbers.
* @hide
*/
+ @UnsupportedAppUsage
public static boolean isPotentialEmergencyNumber(int subId, String number) {
// Check against the emergency numbers listed by the RIL / SIM,
// and *don't* require an exact match.
@@ -1858,6 +1869,7 @@
*
* @hide
*/
+ @UnsupportedAppUsage
public static boolean isEmergencyNumber(String number, String defaultCountryIso) {
return isEmergencyNumber(getDefaultVoiceSubId(), number, defaultCountryIso);
}
@@ -2081,6 +2093,7 @@
* is currently in.
* @hide
*/
+ @UnsupportedAppUsage
public static boolean isLocalEmergencyNumber(Context context, int subId, String number) {
return isLocalEmergencyNumberInternal(subId, number,
context,
@@ -2109,6 +2122,7 @@
* @see android.location.CountryDetector
* @hide
*/
+ @UnsupportedAppUsage
public static boolean isPotentialLocalEmergencyNumber(Context context, String number) {
return isPotentialLocalEmergencyNumber(context, getDefaultVoiceSubId(), number);
}
@@ -2135,6 +2149,7 @@
*
* @hide
*/
+ @UnsupportedAppUsage
public static boolean isPotentialLocalEmergencyNumber(Context context, int subId,
String number) {
return isLocalEmergencyNumberInternal(subId, number,
@@ -2244,6 +2259,7 @@
* to read the VM number.
* @hide
*/
+ @UnsupportedAppUsage
public static boolean isVoiceMailNumber(Context context, int subId, String number) {
String vmNumber, mdn;
try {
@@ -2390,6 +2406,7 @@
*
* @hide TODO: pending API Council approval
*/
+ @UnsupportedAppUsage
public static String cdmaCheckAndProcessPlusCode(String dialStr) {
if (!TextUtils.isEmpty(dialStr)) {
if (isReallyDialable(dialStr.charAt(0)) &&
@@ -2569,6 +2586,7 @@
* @hide
*/
@Deprecated
+ @UnsupportedAppUsage
public static CharSequence ttsSpanAsPhoneNumber(CharSequence phoneNumber) {
return createTtsSpannable(phoneNumber);
}
@@ -2680,6 +2698,7 @@
* i.e. NXX-NXX-XXXX, N is any digit 2-9 and X is any digit 0-9
* @hide
*/
+ @UnsupportedAppUsage
public static boolean isNanp (String dialStr) {
boolean retVal = false;
if (dialStr != null) {
@@ -2727,6 +2746,7 @@
* @param number
* @return true if number contains @
*/
+ @UnsupportedAppUsage
public static boolean isUriNumber(String number) {
// Note we allow either "@" or "%40" to indicate a URI, in case
// the passed-in string is URI-escaped. (Neither "@" nor "%40"
@@ -2744,6 +2764,7 @@
*
* @hide
*/
+ @UnsupportedAppUsage
public static String getUsernameFromUriNumber(String number) {
// The delimiter between username and domain name can be
// either "@" or "%40" (the URI-escaped equivalent.)
diff --git a/telephony/java/android/telephony/PhoneStateListener.java b/telephony/java/android/telephony/PhoneStateListener.java
index 8420165..7f7ce8e 100644
--- a/telephony/java/android/telephony/PhoneStateListener.java
+++ b/telephony/java/android/telephony/PhoneStateListener.java
@@ -17,6 +17,7 @@
package android.telephony;
import android.annotation.NonNull;
+import android.annotation.UnsupportedAppUsage;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
@@ -171,6 +172,7 @@
*
* @hide
*/
+ @UnsupportedAppUsage
public static final int LISTEN_PRECISE_CALL_STATE = 0x00000800;
/**
@@ -276,6 +278,7 @@
* @hide
*/
/** @hide */
+ @UnsupportedAppUsage
protected Integer mSubId;
private final Handler mHandler;
@@ -293,6 +296,7 @@
* using a particular non-null Looper.
* @hide
*/
+ @UnsupportedAppUsage
public PhoneStateListener(Looper looper) {
this(null, looper);
}
@@ -303,6 +307,7 @@
* own non-null Looper use PhoneStateListener(int subId, Looper looper) below.
* @hide
*/
+ @UnsupportedAppUsage
public PhoneStateListener(Integer subId) {
this(subId, Looper.myLooper());
}
@@ -312,6 +317,7 @@
* and non-null Looper.
* @hide
*/
+ @UnsupportedAppUsage
public PhoneStateListener(Integer subId, Looper looper) {
if (DBG) log("ctor: subId=" + subId + " looper=" + looper);
mSubId = subId;
@@ -515,6 +521,7 @@
*
* @hide
*/
+ @UnsupportedAppUsage
public void onOtaspChanged(int otaspMode) {
// default implementation empty
}
@@ -532,6 +539,7 @@
*
* @hide
*/
+ @UnsupportedAppUsage
public void onPreciseCallStateChanged(PreciseCallState callState) {
// default implementation empty
}
@@ -541,6 +549,7 @@
*
* @hide
*/
+ @UnsupportedAppUsage
public void onPreciseDataConnectionStateChanged(
PreciseDataConnectionState dataConnectionState) {
// default implementation empty
@@ -551,6 +560,7 @@
*
* @hide
*/
+ @UnsupportedAppUsage
public void onDataConnectionRealTimeInfoChanged(
DataConnectionRealTimeInfo dcRtInfo) {
// default implementation empty
@@ -562,6 +572,7 @@
* @param stateInfo is the current LTE network information
* @hide
*/
+ @UnsupportedAppUsage
public void onVoLteServiceStateChanged(VoLteServiceState stateInfo) {
}
@@ -608,6 +619,7 @@
* @param rawData is the byte array of the OEM hook raw data.
* @hide
*/
+ @UnsupportedAppUsage
public void onOemHookRawEvent(byte[] rawData) {
// default implementation empty
}
@@ -741,6 +753,7 @@
}
}
+ @UnsupportedAppUsage
IPhoneStateListener callback = new IPhoneStateListenerStub(this);
private void log(String s) {
diff --git a/telephony/java/android/telephony/PreciseCallState.java b/telephony/java/android/telephony/PreciseCallState.java
index f246416..ed5c26a 100644
--- a/telephony/java/android/telephony/PreciseCallState.java
+++ b/telephony/java/android/telephony/PreciseCallState.java
@@ -16,6 +16,7 @@
package android.telephony;
+import android.annotation.UnsupportedAppUsage;
import android.os.Parcel;
import android.os.Parcelable;
import android.telephony.DisconnectCause;
@@ -71,6 +72,7 @@
*
* @hide
*/
+ @UnsupportedAppUsage
public PreciseCallState(int ringingCall, int foregroundCall, int backgroundCall,
int disconnectCause, int preciseDisconnectCause) {
mRingingCallState = ringingCall;
@@ -113,6 +115,7 @@
* @see PreciseCallState#PRECISE_CALL_STATE_DISCONNECTED
* @see PreciseCallState#PRECISE_CALL_STATE_DISCONNECTING
*/
+ @UnsupportedAppUsage
public int getRingingCallState() {
return mRingingCallState;
}
@@ -131,6 +134,7 @@
* @see PreciseCallState#PRECISE_CALL_STATE_DISCONNECTED
* @see PreciseCallState#PRECISE_CALL_STATE_DISCONNECTING
*/
+ @UnsupportedAppUsage
public int getForegroundCallState() {
return mForegroundCallState;
}
@@ -149,6 +153,7 @@
* @see PreciseCallState#PRECISE_CALL_STATE_DISCONNECTED
* @see PreciseCallState#PRECISE_CALL_STATE_DISCONNECTING
*/
+ @UnsupportedAppUsage
public int getBackgroundCallState() {
return mBackgroundCallState;
}
@@ -195,6 +200,7 @@
* @see DisconnectCause#CDMA_ACCESS_BLOCKED
* @see DisconnectCause#ERROR_UNSPECIFIED
*/
+ @UnsupportedAppUsage
public int getDisconnectCause() {
return mDisconnectCause;
}
@@ -233,6 +239,7 @@
* @see PreciseDisconnectCause#CDMA_ACCESS_BLOCKED
* @see PreciseDisconnectCause#ERROR_UNSPECIFIED
*/
+ @UnsupportedAppUsage
public int getPreciseDisconnectCause() {
return mPreciseDisconnectCause;
}
diff --git a/telephony/java/android/telephony/PreciseDataConnectionState.java b/telephony/java/android/telephony/PreciseDataConnectionState.java
index 31c9a9e..b258f52 100644
--- a/telephony/java/android/telephony/PreciseDataConnectionState.java
+++ b/telephony/java/android/telephony/PreciseDataConnectionState.java
@@ -16,6 +16,7 @@
package android.telephony;
+import android.annotation.UnsupportedAppUsage;
import android.os.Parcel;
import android.os.Parcelable;
import android.telephony.TelephonyManager;
@@ -53,6 +54,7 @@
*
* @hide
*/
+ @UnsupportedAppUsage
public PreciseDataConnectionState(int state, int networkType,
String apnType, String apn, String reason,
LinkProperties linkProperties, String failCause) {
@@ -95,6 +97,7 @@
* @see TelephonyManager#DATA_CONNECTED
* @see TelephonyManager#DATA_SUSPENDED
*/
+ @UnsupportedAppUsage
public int getDataConnectionState() {
return mState;
}
@@ -119,6 +122,7 @@
* @see TelephonyManager#NETWORK_TYPE_EHRPD
* @see TelephonyManager#NETWORK_TYPE_HSPAP
*/
+ @UnsupportedAppUsage
public int getDataConnectionNetworkType() {
return mNetworkType;
}
@@ -126,6 +130,7 @@
/**
* Get data connection APN type
*/
+ @UnsupportedAppUsage
public String getDataConnectionAPNType() {
return mAPNType;
}
@@ -133,6 +138,7 @@
/**
* Get data connection APN.
*/
+ @UnsupportedAppUsage
public String getDataConnectionAPN() {
return mAPN;
}
@@ -140,6 +146,7 @@
/**
* Get data connection change reason.
*/
+ @UnsupportedAppUsage
public String getDataConnectionChangeReason() {
return mReason;
}
@@ -147,6 +154,7 @@
/**
* Get the properties of the network link.
*/
+ @UnsupportedAppUsage
public LinkProperties getDataConnectionLinkProperties() {
return mLinkProperties;
}
@@ -154,6 +162,7 @@
/**
* Get data connection fail cause, in case there was a failure.
*/
+ @UnsupportedAppUsage
public String getDataConnectionFailCause() {
return mFailCause;
}
diff --git a/telephony/java/android/telephony/RadioAccessFamily.java b/telephony/java/android/telephony/RadioAccessFamily.java
index d657bae..1d79988 100644
--- a/telephony/java/android/telephony/RadioAccessFamily.java
+++ b/telephony/java/android/telephony/RadioAccessFamily.java
@@ -16,6 +16,7 @@
package android.telephony;
+import android.annotation.UnsupportedAppUsage;
import android.os.Parcel;
import android.os.Parcelable;
@@ -77,6 +78,7 @@
* in RadioAccessFamily. It's a bit mask value to represent
* the support type.
*/
+ @UnsupportedAppUsage
public RadioAccessFamily(int phoneId, int radioAccessFamily) {
mPhoneId = phoneId;
mRadioAccessFamily = radioAccessFamily;
@@ -87,6 +89,7 @@
*
* @return phone ID
*/
+ @UnsupportedAppUsage
public int getPhoneId() {
return mPhoneId;
}
@@ -96,6 +99,7 @@
*
* @return radio access family
*/
+ @UnsupportedAppUsage
public int getRadioAccessFamily() {
return mRadioAccessFamily;
}
@@ -150,6 +154,7 @@
}
};
+ @UnsupportedAppUsage
public static int getRafFromNetworkType(int type) {
int raf;
@@ -263,6 +268,7 @@
return TelephonyManager.NETWORK_CLASS_UNKNOWN;
}
+ @UnsupportedAppUsage
public static int getNetworkTypeFromRaf(int raf) {
int type;
diff --git a/telephony/java/android/telephony/Rlog.java b/telephony/java/android/telephony/Rlog.java
index e0b46e1..5f2fa33 100644
--- a/telephony/java/android/telephony/Rlog.java
+++ b/telephony/java/android/telephony/Rlog.java
@@ -20,6 +20,7 @@
import android.text.TextUtils;
import android.util.Log;
+import android.annotation.UnsupportedAppUsage;
import android.util.Base64;
import java.security.MessageDigest;
@@ -38,6 +39,7 @@
private Rlog() {
}
+ @UnsupportedAppUsage
public static int v(String tag, String msg) {
return Log.println_native(Log.LOG_ID_RADIO, Log.VERBOSE, tag, msg);
}
@@ -47,28 +49,34 @@
msg + '\n' + Log.getStackTraceString(tr));
}
+ @UnsupportedAppUsage
public static int d(String tag, String msg) {
return Log.println_native(Log.LOG_ID_RADIO, Log.DEBUG, tag, msg);
}
+ @UnsupportedAppUsage
public static int d(String tag, String msg, Throwable tr) {
return Log.println_native(Log.LOG_ID_RADIO, Log.DEBUG, tag,
msg + '\n' + Log.getStackTraceString(tr));
}
+ @UnsupportedAppUsage
public static int i(String tag, String msg) {
return Log.println_native(Log.LOG_ID_RADIO, Log.INFO, tag, msg);
}
+ @UnsupportedAppUsage
public static int i(String tag, String msg, Throwable tr) {
return Log.println_native(Log.LOG_ID_RADIO, Log.INFO, tag,
msg + '\n' + Log.getStackTraceString(tr));
}
+ @UnsupportedAppUsage
public static int w(String tag, String msg) {
return Log.println_native(Log.LOG_ID_RADIO, Log.WARN, tag, msg);
}
+ @UnsupportedAppUsage
public static int w(String tag, String msg, Throwable tr) {
return Log.println_native(Log.LOG_ID_RADIO, Log.WARN, tag,
msg + '\n' + Log.getStackTraceString(tr));
@@ -78,10 +86,12 @@
return Log.println_native(Log.LOG_ID_RADIO, Log.WARN, tag, Log.getStackTraceString(tr));
}
+ @UnsupportedAppUsage
public static int e(String tag, String msg) {
return Log.println_native(Log.LOG_ID_RADIO, Log.ERROR, tag, msg);
}
+ @UnsupportedAppUsage
public static int e(String tag, String msg, Throwable tr) {
return Log.println_native(Log.LOG_ID_RADIO, Log.ERROR, tag,
msg + '\n' + Log.getStackTraceString(tr));
diff --git a/telephony/java/android/telephony/ServiceState.java b/telephony/java/android/telephony/ServiceState.java
index 9e8529e..2ee1a09 100644
--- a/telephony/java/android/telephony/ServiceState.java
+++ b/telephony/java/android/telephony/ServiceState.java
@@ -19,6 +19,7 @@
import android.annotation.IntDef;
import android.annotation.SystemApi;
import android.annotation.TestApi;
+import android.annotation.UnsupportedAppUsage;
import android.os.Bundle;
import android.os.Parcel;
import android.os.Parcelable;
@@ -169,6 +170,7 @@
* IWLAN
* @hide
*/
+ @UnsupportedAppUsage
public static final int RIL_RADIO_TECHNOLOGY_IWLAN = 18;
/**
@@ -233,6 +235,7 @@
private String mDataOperatorAlphaLong;
private String mDataOperatorAlphaShort;
private String mDataOperatorNumeric;
+ @UnsupportedAppUsage
private boolean mIsManualNetworkSelection;
private boolean mIsEmergencyOnly;
@@ -240,16 +243,24 @@
private int mRilVoiceRadioTechnology;
private int mRilDataRadioTechnology;
+ @UnsupportedAppUsage
private boolean mCssIndicator;
+ @UnsupportedAppUsage
private int mNetworkId;
+ @UnsupportedAppUsage
private int mSystemId;
+ @UnsupportedAppUsage
private int mCdmaRoamingIndicator;
+ @UnsupportedAppUsage
private int mCdmaDefaultRoamingIndicator;
+ @UnsupportedAppUsage
private int mCdmaEriIconIndex;
+ @UnsupportedAppUsage
private int mCdmaEriIconMode;
private boolean mIsDataRoamingFromRegistration;
+ @UnsupportedAppUsage
private boolean mIsUsingCarrierAggregation;
private int mChannelNumber;
@@ -294,6 +305,7 @@
* @return newly created ServiceState
* @hide
*/
+ @UnsupportedAppUsage
public static ServiceState newFromBundle(Bundle m) {
ServiceState ret;
ret = new ServiceState();
@@ -442,6 +454,7 @@
*
* @hide
*/
+ @UnsupportedAppUsage
public int getVoiceRegState() {
return mVoiceRegState;
}
@@ -456,6 +469,7 @@
*
* @hide
*/
+ @UnsupportedAppUsage
public int getDataRegState() {
return mDataRegState;
}
@@ -516,6 +530,7 @@
* @return roaming status
* @hide
*/
+ @UnsupportedAppUsage
public boolean getVoiceRoaming() {
return mVoiceRoamingType != ROAMING_TYPE_NOT_ROAMING;
}
@@ -525,6 +540,7 @@
* @return roaming type
* @hide
*/
+ @UnsupportedAppUsage
public int getVoiceRoamingType() {
return mVoiceRoamingType;
}
@@ -534,6 +550,7 @@
* @return roaming type
* @hide
*/
+ @UnsupportedAppUsage
public boolean getDataRoaming() {
return mDataRoamingType != ROAMING_TYPE_NOT_ROAMING;
}
@@ -545,6 +562,7 @@
* once the data registration phase has completed.
* @hide
*/
+ @UnsupportedAppUsage
public void setDataRoamingFromRegistration(boolean dataRoaming) {
mIsDataRoamingFromRegistration = dataRoaming;
}
@@ -563,6 +581,7 @@
* @return roaming type
* @hide
*/
+ @UnsupportedAppUsage
public int getDataRoamingType() {
return mDataRoamingType;
}
@@ -570,6 +589,7 @@
/**
* @hide
*/
+ @UnsupportedAppUsage
public boolean isEmergencyOnly() {
return mIsEmergencyOnly;
}
@@ -577,6 +597,7 @@
/**
* @hide
*/
+ @UnsupportedAppUsage
public int getCdmaRoamingIndicator(){
return this.mCdmaRoamingIndicator;
}
@@ -584,6 +605,7 @@
/**
* @hide
*/
+ @UnsupportedAppUsage
public int getCdmaDefaultRoamingIndicator(){
return this.mCdmaDefaultRoamingIndicator;
}
@@ -591,6 +613,7 @@
/**
* @hide
*/
+ @UnsupportedAppUsage
public int getCdmaEriIconIndex() {
return this.mCdmaEriIconIndex;
}
@@ -598,6 +621,7 @@
/**
* @hide
*/
+ @UnsupportedAppUsage
public int getCdmaEriIconMode() {
return this.mCdmaEriIconMode;
}
@@ -619,6 +643,7 @@
* @return long name of operator
* @hide
*/
+ @UnsupportedAppUsage
public String getVoiceOperatorAlphaLong() {
return mVoiceOperatorAlphaLong;
}
@@ -648,6 +673,7 @@
* @return short name of operator, null if unregistered or unknown
* @hide
*/
+ @UnsupportedAppUsage
public String getVoiceOperatorAlphaShort() {
return mVoiceOperatorAlphaShort;
}
@@ -657,6 +683,7 @@
* @return short name of operator, null if unregistered or unknown
* @hide
*/
+ @UnsupportedAppUsage
public String getDataOperatorAlphaShort() {
return mDataOperatorAlphaShort;
}
@@ -700,6 +727,7 @@
* @return numeric format of operator, null if unregistered or unknown
* @hide
*/
+ @UnsupportedAppUsage
public String getVoiceOperatorNumeric() {
return mVoiceOperatorNumeric;
}
@@ -709,6 +737,7 @@
* @return numeric format of operator, null if unregistered or unknown
* @hide
*/
+ @UnsupportedAppUsage
public String getDataOperatorNumeric() {
return mDataOperatorNumeric;
}
@@ -794,6 +823,7 @@
*
* @hide
*/
+ @UnsupportedAppUsage
public static String rilRadioTechnologyToString(int rt) {
String rtString;
@@ -968,12 +998,14 @@
}
/** @hide */
+ @UnsupportedAppUsage
public void setVoiceRegState(int state) {
mVoiceRegState = state;
if (DBG) Rlog.d(LOG_TAG, "[ServiceState] setVoiceRegState=" + mVoiceRegState);
}
/** @hide */
+ @UnsupportedAppUsage
public void setDataRegState(int state) {
mDataRegState = state;
if (VDBG) Rlog.d(LOG_TAG, "[ServiceState] setDataRegState=" + mDataRegState);
@@ -997,21 +1029,25 @@
}
/** @hide */
+ @UnsupportedAppUsage
public void setVoiceRoaming(boolean roaming) {
mVoiceRoamingType = (roaming ? ROAMING_TYPE_UNKNOWN : ROAMING_TYPE_NOT_ROAMING);
}
/** @hide */
+ @UnsupportedAppUsage
public void setVoiceRoamingType(int type) {
mVoiceRoamingType = type;
}
/** @hide */
+ @UnsupportedAppUsage
public void setDataRoaming(boolean dataRoaming) {
mDataRoamingType = (dataRoaming ? ROAMING_TYPE_UNKNOWN : ROAMING_TYPE_NOT_ROAMING);
}
/** @hide */
+ @UnsupportedAppUsage
public void setDataRoamingType(int type) {
mDataRoamingType = type;
}
@@ -1019,6 +1055,7 @@
/**
* @hide
*/
+ @UnsupportedAppUsage
public void setEmergencyOnly(boolean emergencyOnly) {
mIsEmergencyOnly = emergencyOnly;
}
@@ -1026,6 +1063,7 @@
/**
* @hide
*/
+ @UnsupportedAppUsage
public void setCdmaRoamingIndicator(int roaming) {
this.mCdmaRoamingIndicator = roaming;
}
@@ -1033,6 +1071,7 @@
/**
* @hide
*/
+ @UnsupportedAppUsage
public void setCdmaDefaultRoamingIndicator (int roaming) {
this.mCdmaDefaultRoamingIndicator = roaming;
}
@@ -1040,6 +1079,7 @@
/**
* @hide
*/
+ @UnsupportedAppUsage
public void setCdmaEriIconIndex(int index) {
this.mCdmaEriIconIndex = index;
}
@@ -1047,6 +1087,7 @@
/**
* @hide
*/
+ @UnsupportedAppUsage
public void setCdmaEriIconMode(int mode) {
this.mCdmaEriIconMode = mode;
}
@@ -1080,6 +1121,7 @@
*
* @hide
*/
+ @UnsupportedAppUsage
public void setOperatorAlphaLong(String longName) {
mVoiceOperatorAlphaLong = longName;
mDataOperatorAlphaLong = longName;
@@ -1106,6 +1148,7 @@
* @param b second obj
* @return true if two objects equal or both are null
*/
+ @UnsupportedAppUsage
private static boolean equalsHandlesNulls (Object a, Object b) {
return (a == null) ? (b == null) : a.equals (b);
}
@@ -1116,6 +1159,7 @@
* @param m intent notifier map
* @hide
*/
+ @UnsupportedAppUsage
private void setFromNotifierBundle(Bundle m) {
mVoiceRegState = m.getInt("voiceRegState");
mDataRegState = m.getInt("dataRegState");
@@ -1149,6 +1193,7 @@
* @param m intent notifier Bundle
* @hide
*/
+ @UnsupportedAppUsage
public void fillInNotifierBundle(Bundle m) {
m.putInt("voiceRegState", mVoiceRegState);
m.putInt("dataRegState", mDataRegState);
@@ -1221,6 +1266,7 @@
}
/** @hide */
+ @UnsupportedAppUsage
public void setCssIndicator(int css) {
this.mCssIndicator = (css != 0);
}
@@ -1233,10 +1279,12 @@
}
/** @hide */
+ @UnsupportedAppUsage
public int getRilVoiceRadioTechnology() {
return this.mRilVoiceRadioTechnology;
}
/** @hide */
+ @UnsupportedAppUsage
public int getRilDataRadioTechnology() {
return this.mRilDataRadioTechnology;
}
@@ -1245,6 +1293,7 @@
* @Deprecated to be removed Q3 2013 use {@link #getRilDataRadioTechnology} or
* {@link #getRilVoiceRadioTechnology}
*/
+ @UnsupportedAppUsage
public int getRadioTechnology() {
Rlog.e(LOG_TAG, "ServiceState.getRadioTechnology() DEPRECATED will be removed *******");
return getRilDataRadioTechnology();
@@ -1374,16 +1423,19 @@
/** @hide */
+ @UnsupportedAppUsage
public int getDataNetworkType() {
return rilRadioTechnologyToNetworkType(mRilDataRadioTechnology);
}
/** @hide */
+ @UnsupportedAppUsage
public int getVoiceNetworkType() {
return rilRadioTechnologyToNetworkType(mRilVoiceRadioTechnology);
}
/** @hide */
+ @UnsupportedAppUsage
public int getCssIndicator() {
return this.mCssIndicator ? 1 : 0;
}
@@ -1407,6 +1459,7 @@
}
/** @hide */
+ @UnsupportedAppUsage
public static boolean isGsm(int radioTechnology) {
return radioTechnology == RIL_RADIO_TECHNOLOGY_GPRS
|| radioTechnology == RIL_RADIO_TECHNOLOGY_EDGE
@@ -1424,6 +1477,7 @@
}
/** @hide */
+ @UnsupportedAppUsage
public static boolean isCdma(int radioTechnology) {
return radioTechnology == RIL_RADIO_TECHNOLOGY_IS95A
|| radioTechnology == RIL_RADIO_TECHNOLOGY_IS95B
@@ -1441,11 +1495,13 @@
}
/** @hide */
+ @UnsupportedAppUsage
public static boolean bearerBitmapHasCdma(int radioTechnologyBitmap) {
return (RIL_RADIO_CDMA_TECHNOLOGY_BITMASK & radioTechnologyBitmap) != 0;
}
/** @hide */
+ @UnsupportedAppUsage
public static boolean bitmaskHasTech(int bearerBitmask, int radioTech) {
if (bearerBitmask == 0) {
return true;
@@ -1517,6 +1573,7 @@
* voice SS. The voice SS is only used if it is IN_SERVICE (otherwise the base SS is returned).
* @hide
* */
+ @UnsupportedAppUsage
public static ServiceState mergeServiceStates(ServiceState baseSs, ServiceState voiceSs) {
if (voiceSs.mVoiceRegState != STATE_IN_SERVICE) {
return baseSs;
diff --git a/telephony/java/android/telephony/SignalStrength.java b/telephony/java/android/telephony/SignalStrength.java
index 95abb91..ed758a9 100644
--- a/telephony/java/android/telephony/SignalStrength.java
+++ b/telephony/java/android/telephony/SignalStrength.java
@@ -16,6 +16,7 @@
package android.telephony;
+import android.annotation.UnsupportedAppUsage;
import android.os.Bundle;
import android.os.Parcel;
import android.os.Parcelable;
@@ -36,21 +37,27 @@
private static final boolean DBG = false;
/** @hide */
+ @UnsupportedAppUsage
public static final int SIGNAL_STRENGTH_NONE_OR_UNKNOWN
= TelephonyProtoEnums.SIGNAL_STRENGTH_NONE_OR_UNKNOWN; // = 0
/** @hide */
+ @UnsupportedAppUsage
public static final int SIGNAL_STRENGTH_POOR
= TelephonyProtoEnums.SIGNAL_STRENGTH_POOR; // = 1
/** @hide */
+ @UnsupportedAppUsage
public static final int SIGNAL_STRENGTH_MODERATE
= TelephonyProtoEnums.SIGNAL_STRENGTH_MODERATE; // = 2
/** @hide */
+ @UnsupportedAppUsage
public static final int SIGNAL_STRENGTH_GOOD
= TelephonyProtoEnums.SIGNAL_STRENGTH_GOOD; // = 3
/** @hide */
+ @UnsupportedAppUsage
public static final int SIGNAL_STRENGTH_GREAT
= TelephonyProtoEnums.SIGNAL_STRENGTH_GREAT; // = 4
/** @hide */
+ @UnsupportedAppUsage
public static final int NUM_SIGNAL_STRENGTH_BINS = 5;
/** @hide */
public static final String[] SIGNAL_STRENGTH_NAMES = {
@@ -75,24 +82,39 @@
private static final String MEASUMENT_TYPE_RSCP = "rscp";
/** Parameters reported by the Radio */
+ @UnsupportedAppUsage
private int mGsmSignalStrength; // Valid values are (0-31, 99) as defined in TS 27.007 8.5
+ @UnsupportedAppUsage
private int mGsmBitErrorRate; // bit error rate (0-7, 99) as defined in TS 27.007 8.5
+ @UnsupportedAppUsage
private int mCdmaDbm; // This value is the RSSI value
+ @UnsupportedAppUsage
private int mCdmaEcio; // This value is the Ec/Io
+ @UnsupportedAppUsage
private int mEvdoDbm; // This value is the EVDO RSSI value
+ @UnsupportedAppUsage
private int mEvdoEcio; // This value is the EVDO Ec/Io
+ @UnsupportedAppUsage
private int mEvdoSnr; // Valid values are 0-8. 8 is the highest signal to noise ratio
+ @UnsupportedAppUsage
private int mLteSignalStrength;
+ @UnsupportedAppUsage
private int mLteRsrp;
+ @UnsupportedAppUsage
private int mLteRsrq;
+ @UnsupportedAppUsage
private int mLteRssnr;
+ @UnsupportedAppUsage
private int mLteCqi;
+ @UnsupportedAppUsage
private int mTdScdmaRscp; // Valid values are -24...-120dBm or INVALID if unknown
private int mWcdmaSignalStrength;
private int mWcdmaRscpAsu; // the WCDMA RSCP in ASU as reported from the HAL
+ @UnsupportedAppUsage
private int mWcdmaRscp; // the WCDMA RSCP in dBm
/** Parameters from the framework */
+ @UnsupportedAppUsage
private int mLteRsrpBoost; // offset to be reduced from the rsrp threshold while calculating
// signal strength level
private boolean mIsGsm; // This value is set by the ServiceStateTracker
@@ -121,6 +143,7 @@
*
* @hide
*/
+ @UnsupportedAppUsage
public static SignalStrength newFromBundle(Bundle m) {
SignalStrength ret;
ret = new SignalStrength();
@@ -133,6 +156,7 @@
*
* @hide
*/
+ @UnsupportedAppUsage
public SignalStrength() {
this(true);
}
@@ -145,6 +169,7 @@
* @return newly created SignalStrength
* @hide
*/
+ @UnsupportedAppUsage
public SignalStrength(boolean gsmFlag) {
mGsmSignalStrength = 99;
mGsmBitErrorRate = -1;
@@ -247,6 +272,7 @@
*
* @hide
*/
+ @UnsupportedAppUsage
public SignalStrength(SignalStrength s) {
copyFrom(s);
}
@@ -254,6 +280,7 @@
/**
* @hide
*/
+ @UnsupportedAppUsage
protected void copyFrom(SignalStrength s) {
mGsmSignalStrength = s.mGsmSignalStrength;
mGsmBitErrorRate = s.mGsmBitErrorRate;
@@ -284,6 +311,7 @@
*
* @hide
*/
+ @UnsupportedAppUsage
public SignalStrength(Parcel in) {
if (DBG) log("Size of signalstrength parcel:" + in.dataSize());
@@ -351,6 +379,7 @@
*
* @hide
*/
+ @UnsupportedAppUsage
public static final Parcelable.Creator<SignalStrength> CREATOR = new Parcelable.Creator() {
public SignalStrength createFromParcel(Parcel in) {
return new SignalStrength(in);
@@ -372,6 +401,7 @@
* Valid values for all signalstrength fields
* @hide
*/
+ @UnsupportedAppUsage
public void validateInput() {
if (DBG) log("Signal before validate=" + this);
// TS 27.007 8.5
@@ -546,26 +576,31 @@
}
/** @hide */
+ @UnsupportedAppUsage
public int getLteSignalStrength() {
return mLteSignalStrength;
}
/** @hide */
+ @UnsupportedAppUsage
public int getLteRsrp() {
return mLteRsrp;
}
/** @hide */
+ @UnsupportedAppUsage
public int getLteRsrq() {
return mLteRsrq;
}
/** @hide */
+ @UnsupportedAppUsage
public int getLteRssnr() {
return mLteRssnr;
}
/** @hide */
+ @UnsupportedAppUsage
public int getLteCqi() {
return mLteCqi;
}
@@ -594,6 +629,7 @@
*
* @hide
*/
+ @UnsupportedAppUsage
public int getAsuLevel() {
int asuLevel = 0;
if (mIsGsm) {
@@ -629,6 +665,7 @@
*
* @hide
*/
+ @UnsupportedAppUsage
public int getDbm() {
int dBm = INVALID;
@@ -661,6 +698,7 @@
*
* @hide
*/
+ @UnsupportedAppUsage
public int getGsmDbm() {
int dBm;
@@ -680,6 +718,7 @@
*
* @hide
*/
+ @UnsupportedAppUsage
public int getGsmLevel() {
int level;
@@ -702,6 +741,7 @@
*
* @hide
*/
+ @UnsupportedAppUsage
public int getGsmAsuLevel() {
// ASU ranges from 0 to 31 - TS 27.007 Sec 8.5
// asu = 0 (-113dB or less) is very weak
@@ -717,6 +757,7 @@
*
* @hide
*/
+ @UnsupportedAppUsage
public int getCdmaLevel() {
final int cdmaDbm = getCdmaDbm();
final int cdmaEcio = getCdmaEcio();
@@ -746,6 +787,7 @@
*
* @hide
*/
+ @UnsupportedAppUsage
public int getCdmaAsuLevel() {
final int cdmaDbm = getCdmaDbm();
final int cdmaEcio = getCdmaEcio();
@@ -777,6 +819,7 @@
*
* @hide
*/
+ @UnsupportedAppUsage
public int getEvdoLevel() {
int evdoDbm = getEvdoDbm();
int evdoSnr = getEvdoSnr();
@@ -805,6 +848,7 @@
*
* @hide
*/
+ @UnsupportedAppUsage
public int getEvdoAsuLevel() {
int evdoDbm = getEvdoDbm();
int evdoSnr = getEvdoSnr();
@@ -835,6 +879,7 @@
*
* @hide
*/
+ @UnsupportedAppUsage
public int getLteDbm() {
return mLteRsrp;
}
@@ -844,6 +889,7 @@
*
* @hide
*/
+ @UnsupportedAppUsage
public int getLteLevel() {
/*
* TS 36.214 Physical Layer Section 5.1.3
@@ -930,6 +976,7 @@
*
* @hide
*/
+ @UnsupportedAppUsage
public int getLteAsuLevel() {
int lteAsuLevel = 99;
int lteDbm = getLteDbm();
@@ -973,6 +1020,7 @@
*
* @hide
*/
+ @UnsupportedAppUsage
public int getTdScdmaDbm() {
return this.mTdScdmaRscp;
}
@@ -985,6 +1033,7 @@
*
* @hide
*/
+ @UnsupportedAppUsage
public int getTdScdmaLevel() {
final int tdScdmaDbm = getTdScdmaDbm();
int level;
@@ -1006,6 +1055,7 @@
*
* @hide
*/
+ @UnsupportedAppUsage
public int getTdScdmaAsuLevel() {
final int tdScdmaDbm = getTdScdmaDbm();
int tdScdmaAsuLevel;
@@ -1245,6 +1295,7 @@
* @param m intent notifier map
* @hide
*/
+ @UnsupportedAppUsage
private void setFromNotifierBundle(Bundle m) {
mGsmSignalStrength = m.getInt("GsmSignalStrength");
mGsmBitErrorRate = m.getInt("GsmBitErrorRate");
@@ -1282,6 +1333,7 @@
* @param m intent notifier Bundle
* @hide
*/
+ @UnsupportedAppUsage
public void fillInNotifierBundle(Bundle m) {
m.putInt("GsmSignalStrength", mGsmSignalStrength);
m.putInt("GsmBitErrorRate", mGsmBitErrorRate);
diff --git a/telephony/java/android/telephony/SmsManager.java b/telephony/java/android/telephony/SmsManager.java
index 38bc640..9565507 100644
--- a/telephony/java/android/telephony/SmsManager.java
+++ b/telephony/java/android/telephony/SmsManager.java
@@ -19,6 +19,7 @@
import android.annotation.RequiresPermission;
import android.annotation.SuppressAutoDoc;
import android.annotation.SystemApi;
+import android.annotation.UnsupportedAppUsage;
import android.app.ActivityThread;
import android.app.PendingIntent;
import android.content.ActivityNotFoundException;
@@ -88,6 +89,7 @@
new ArrayMap<Integer, SmsManager>();
/** A concrete subscription id, or the pseudo DEFAULT_SUBSCRIPTION_ID */
+ @UnsupportedAppUsage
private int mSubId;
/*
@@ -440,6 +442,7 @@
* @throws IllegalArgumentException if destinationAddress or text are empty
* {@hide}
*/
+ @UnsupportedAppUsage
public void sendTextMessage(
String destinationAddress, String scAddress, String text,
PendingIntent sentIntent, PendingIntent deliveryIntent,
@@ -493,6 +496,7 @@
* PendingIntent, int, boolean, int)
* @hide
*/
+ @UnsupportedAppUsage
public void sendTextMessageWithoutPersisting(
String destinationAddress, String scAddress, String text,
PendingIntent sentIntent, PendingIntent deliveryIntent, int priority,
@@ -718,6 +722,7 @@
* @throws IllegalArgumentException if destinationAddress or data are empty
* {@hide}
*/
+ @UnsupportedAppUsage
public void sendMultipartTextMessage(
String destinationAddress, String scAddress, ArrayList<String> parts,
ArrayList<PendingIntent> sentIntents, ArrayList<PendingIntent> deliveryIntents,
@@ -985,6 +990,7 @@
* @throws IllegalArgumentException if pdu is NULL
* {@hide}
*/
+ @UnsupportedAppUsage
public boolean copyMessageToIcc(byte[] smsc, byte[] pdu,int status) {
boolean success = false;
@@ -1015,6 +1021,7 @@
*
* {@hide}
*/
+ @UnsupportedAppUsage
public boolean
deleteMessageFromIcc(int messageIndex) {
boolean success = false;
@@ -1049,6 +1056,7 @@
*
* {@hide}
*/
+ @UnsupportedAppUsage
public boolean updateMessageOnIcc(int messageIndex, int newStatus, byte[] pdu) {
boolean success = false;
@@ -1075,6 +1083,7 @@
*
* {@hide}
*/
+ @UnsupportedAppUsage
public ArrayList<SmsMessage> getAllMessagesFromIcc() {
List<SmsRawData> records = null;
@@ -1187,6 +1196,7 @@
* @throws IllegalArgumentException if endMessageId < startMessageId
* {@hide}
*/
+ @UnsupportedAppUsage
public boolean enableCellBroadcastRange(int startMessageId, int endMessageId, int ranType) {
boolean success = false;
@@ -1229,6 +1239,7 @@
* @throws IllegalArgumentException if endMessageId < startMessageId
* {@hide}
*/
+ @UnsupportedAppUsage
public boolean disableCellBroadcastRange(int startMessageId, int endMessageId, int ranType) {
boolean success = false;
@@ -1346,6 +1357,7 @@
* @return true if enabled, false otherwise
* @hide
*/
+ @UnsupportedAppUsage
public boolean isSMSPromptEnabled() {
ISms iccISms = null;
try {
diff --git a/telephony/java/android/telephony/SmsMessage.java b/telephony/java/android/telephony/SmsMessage.java
index 57f89e3..91e24a9 100644
--- a/telephony/java/android/telephony/SmsMessage.java
+++ b/telephony/java/android/telephony/SmsMessage.java
@@ -20,6 +20,7 @@
import android.annotation.Nullable;
import android.annotation.StringDef;
+import android.annotation.UnsupportedAppUsage;
import android.content.res.Resources;
import android.os.Binder;
import android.text.TextUtils;
@@ -107,18 +108,21 @@
*
* @hide
*/
+ @UnsupportedAppUsage
public SmsMessageBase mWrappedSmsMessage;
/** Indicates the subId
*
* @hide
*/
+ @UnsupportedAppUsage
private int mSubId = 0;
/** set Subscription information
*
* @hide
*/
+ @UnsupportedAppUsage
public void setSubId(int subId) {
mSubId = subId;
}
@@ -127,6 +131,7 @@
*
* @hide
*/
+ @UnsupportedAppUsage
public int getSubId() {
return mSubId;
}
@@ -368,6 +373,7 @@
*
* @hide
*/
+ @UnsupportedAppUsage
public static ArrayList<String> fragmentText(String text) {
// This function is for MO SMS
TextEncodingDetails ted = (useCdmaFormatForMoSms()) ?
@@ -822,6 +828,7 @@
*
* @return true if Cdma format should be used for MO SMS, false otherwise.
*/
+ @UnsupportedAppUsage
private static boolean useCdmaFormatForMoSms() {
// IMS is registered with SMS support, check the SMS format supported
return useCdmaFormatForMoSms(SubscriptionManager.getDefaultSmsSubscriptionId());
@@ -836,6 +843,7 @@
*
* @return true if Cdma format should be used for MO SMS, false otherwise.
*/
+ @UnsupportedAppUsage
private static boolean useCdmaFormatForMoSms(int subId) {
SmsManager smsManager = SmsManager.getSmsManagerForSubscriptionId(subId);
if (!smsManager.isImsSmsSupported()) {
diff --git a/telephony/java/android/telephony/SubscriptionInfo.java b/telephony/java/android/telephony/SubscriptionInfo.java
index 2bc43d4..ec26622 100644
--- a/telephony/java/android/telephony/SubscriptionInfo.java
+++ b/telephony/java/android/telephony/SubscriptionInfo.java
@@ -18,6 +18,7 @@
import android.annotation.Nullable;
import android.annotation.SystemApi;
+import android.annotation.UnsupportedAppUsage;
import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
@@ -216,6 +217,7 @@
* Sets the name displayed to the user that identifies this subscription
* @hide
*/
+ @UnsupportedAppUsage
public void setDisplayName(CharSequence name) {
this.mDisplayName = name;
}
@@ -240,6 +242,7 @@
* NAME_SOURCE_SIM_SOURCE or NAME_SOURCE_USER_INPUT.
* @hide
*/
+ @UnsupportedAppUsage
public int getNameSource() {
return this.mNameSource;
}
@@ -298,6 +301,7 @@
* Sets the color displayed to the user that identifies this subscription
* @hide
*/
+ @UnsupportedAppUsage
public void setIconTint(int iconTint) {
this.mIconTint = iconTint;
}
diff --git a/telephony/java/android/telephony/SubscriptionManager.java b/telephony/java/android/telephony/SubscriptionManager.java
index 151b936..119733e 100644
--- a/telephony/java/android/telephony/SubscriptionManager.java
+++ b/telephony/java/android/telephony/SubscriptionManager.java
@@ -28,6 +28,7 @@
import android.annotation.SuppressAutoDoc;
import android.annotation.SystemApi;
import android.annotation.SystemService;
+import android.annotation.UnsupportedAppUsage;
import android.app.BroadcastOptions;
import android.app.PendingIntent;
import android.content.Context;
@@ -86,6 +87,7 @@
/** Indicates the caller wants the default sub id. */
/** @hide */
+ @UnsupportedAppUsage
public static final int DEFAULT_SUBSCRIPTION_ID = Integer.MAX_VALUE;
/**
@@ -108,6 +110,7 @@
public static final int MAX_SUBSCRIPTION_ID_VALUE = DEFAULT_SUBSCRIPTION_ID - 1;
/** @hide */
+ @UnsupportedAppUsage
public static final Uri CONTENT_URI = Uri.parse("content://telephony/siminfo");
/**
@@ -185,6 +188,7 @@
* The name_source is from the user
* @hide
*/
+ @UnsupportedAppUsage
public static final int NAME_SOURCE_USER_INPUT = 2;
/**
@@ -615,6 +619,7 @@
}
/** @hide */
+ @UnsupportedAppUsage
public SubscriptionManager(Context context) {
if (DBG) logd("SubscriptionManager created");
mContext = context;
@@ -793,6 +798,7 @@
* include those that were inserted before, maybe empty but not null.
* @hide
*/
+ @UnsupportedAppUsage
public List<SubscriptionInfo> getAllSubscriptionInfoList() {
if (VDBG) logd("[getAllSubscriptionInfoList]+");
@@ -964,6 +970,7 @@
* all subscriptions that have been seen.
* @hide
*/
+ @UnsupportedAppUsage
public int getAllSubscriptionInfoCount() {
if (VDBG) logd("[getAllSubscriptionInfoCount]+");
@@ -1069,6 +1076,7 @@
* @return the number of records updated
* @hide
*/
+ @UnsupportedAppUsage
public int setIconTint(int tint, int subId) {
if (VDBG) logd("[setIconTint]+ tint:" + tint + " subId:" + subId);
return setSubscriptionPropertyHelper(subId, "setIconTint",
@@ -1096,6 +1104,7 @@
* @return the number of records updated or < 0 if invalid subId
* @hide
*/
+ @UnsupportedAppUsage
public int setDisplayName(String displayName, int subId, long nameSource) {
if (VDBG) {
logd("[setDisplayName]+ displayName:" + displayName + " subId:" + subId
@@ -1113,6 +1122,7 @@
* @return the number of records updated
* @hide
*/
+ @UnsupportedAppUsage
public int setDisplayNumber(String number, int subId) {
if (number == null) {
logd("[setDisplayNumber]- fail");
@@ -1130,6 +1140,7 @@
* @return the number of records updated
* @hide
*/
+ @UnsupportedAppUsage
public int setDataRoaming(int roaming, int subId) {
if (VDBG) logd("[setDataRoaming]+ roaming:" + roaming + " subId:" + subId);
return setSubscriptionPropertyHelper(subId, "setDataRoaming",
@@ -1143,6 +1154,7 @@
* SIM_NOT_INSERTED or < 0 if an invalid slot index
* @hide
*/
+ @UnsupportedAppUsage
public static int getSlotIndex(int subId) {
if (!isValidSubscriptionId(subId)) {
if (DBG) {
@@ -1166,6 +1178,7 @@
}
/** @hide */
+ @UnsupportedAppUsage
public static int[] getSubId(int slotIndex) {
if (!isValidSlotIndex(slotIndex)) {
logd("[getSubId]- fail");
@@ -1187,6 +1200,7 @@
}
/** @hide */
+ @UnsupportedAppUsage
public static int getPhoneId(int subId) {
if (!isValidSubscriptionId(subId)) {
if (DBG) {
@@ -1284,11 +1298,13 @@
* @return the SubscriptionInfo for the default voice subscription.
* @hide
*/
+ @UnsupportedAppUsage
public SubscriptionInfo getDefaultVoiceSubscriptionInfo() {
return getActiveSubscriptionInfo(getDefaultVoiceSubscriptionId());
}
/** @hide */
+ @UnsupportedAppUsage
public static int getDefaultVoicePhoneId() {
return getPhoneId(getDefaultVoiceSubscriptionId());
}
@@ -1317,6 +1333,7 @@
}
/** @hide */
+ @UnsupportedAppUsage
public void setDefaultSmsSubId(int subId) {
if (VDBG) logd("setDefaultSmsSubId sub id = " + subId);
try {
@@ -1342,6 +1359,7 @@
}
/** @hide */
+ @UnsupportedAppUsage
public int getDefaultSmsPhoneId() {
return getPhoneId(getDefaultSmsSubscriptionId());
}
@@ -1370,6 +1388,7 @@
}
/** @hide */
+ @UnsupportedAppUsage
public void setDefaultDataSubId(int subId) {
if (VDBG) logd("setDataSubscription sub id = " + subId);
try {
@@ -1390,11 +1409,13 @@
* @return the SubscriptionInfo for the default data subscription.
* @hide
*/
+ @UnsupportedAppUsage
public SubscriptionInfo getDefaultDataSubscriptionInfo() {
return getActiveSubscriptionInfo(getDefaultDataSubscriptionId());
}
/** @hide */
+ @UnsupportedAppUsage
public int getDefaultDataPhoneId() {
return getPhoneId(getDefaultDataSubscriptionId());
}
@@ -1433,6 +1454,7 @@
* an invalid subscription id, i.e. < 0.
* @hide
*/
+ @UnsupportedAppUsage
public void clearDefaultsForInactiveSubIds() {
if (VDBG) logd("clearDefaultsForInactiveSubIds");
try {
@@ -1449,6 +1471,7 @@
* @return true if a valid subId else false
* @hide
*/
+ @UnsupportedAppUsage
public static boolean isValidSubscriptionId(int subId) {
return subId > INVALID_SUBSCRIPTION_ID ;
}
@@ -1458,21 +1481,25 @@
* usable subId means its neither a INVALID_SUBSCRIPTION_ID nor a DEFAULT_SUB_ID.
* @hide
*/
+ @UnsupportedAppUsage
public static boolean isUsableSubIdValue(int subId) {
return subId >= MIN_SUBSCRIPTION_ID_VALUE && subId <= MAX_SUBSCRIPTION_ID_VALUE;
}
/** @hide */
+ @UnsupportedAppUsage
public static boolean isValidSlotIndex(int slotIndex) {
return slotIndex >= 0 && slotIndex < TelephonyManager.getDefault().getSimCount();
}
/** @hide */
+ @UnsupportedAppUsage
public static boolean isValidPhoneId(int phoneId) {
return phoneId >= 0 && phoneId < TelephonyManager.getDefault().getPhoneCount();
}
/** @hide */
+ @UnsupportedAppUsage
public static void putPhoneIdAndSubIdExtra(Intent intent, int phoneId) {
int[] subIds = SubscriptionManager.getSubId(phoneId);
if (subIds != null && subIds.length > 0) {
@@ -1483,6 +1510,7 @@
}
/** @hide */
+ @UnsupportedAppUsage
public static void putPhoneIdAndSubIdExtra(Intent intent, int phoneId, int subId) {
if (VDBG) logd("putPhoneIdAndSubIdExtra: phoneId=" + phoneId + " subId=" + subId);
intent.putExtra(PhoneConstants.SUBSCRIPTION_KEY, subId);
@@ -1498,6 +1526,7 @@
* is never null but the length maybe 0.
* @hide
*/
+ @UnsupportedAppUsage
public @NonNull int[] getActiveSubscriptionIdList() {
int[] subId = null;
@@ -1656,6 +1685,7 @@
* @return Resources associated with Subscription.
* @hide
*/
+ @UnsupportedAppUsage
public static Resources getResourcesForSubId(Context context, int subId) {
final SubscriptionInfo subInfo =
SubscriptionManager.from(context).getActiveSubscriptionInfo(subId);
@@ -1679,6 +1709,7 @@
* and the SIM providing the subscription is present in a slot and in "LOADED" state.
* @hide
*/
+ @UnsupportedAppUsage
public boolean isActiveSubId(int subId) {
try {
ISub iSub = ISub.Stub.asInterface(ServiceManager.getService("isub"));
diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java
index ae3f7a2..3a8dba8 100644
--- a/telephony/java/android/telephony/TelephonyManager.java
+++ b/telephony/java/android/telephony/TelephonyManager.java
@@ -28,6 +28,7 @@
import android.annotation.SystemApi;
import android.annotation.SystemService;
import android.annotation.TestApi;
+import android.annotation.UnsupportedAppUsage;
import android.annotation.WorkerThread;
import android.app.ActivityThread;
import android.app.PendingIntent;
@@ -155,6 +156,7 @@
private final Context mContext;
private final int mSubId;
+ @UnsupportedAppUsage
private SubscriptionManager mSubscriptionManager;
private TelephonyScanManager mTelephonyScanManager;
@@ -168,18 +170,24 @@
**/
/** @hide */
public enum MultiSimVariants {
+ @UnsupportedAppUsage
DSDS,
+ @UnsupportedAppUsage
DSDA,
+ @UnsupportedAppUsage
TSTS,
+ @UnsupportedAppUsage
UNKNOWN
};
/** @hide */
+ @UnsupportedAppUsage
public TelephonyManager(Context context) {
this(context, SubscriptionManager.DEFAULT_SUBSCRIPTION_ID);
}
/** @hide */
+ @UnsupportedAppUsage
public TelephonyManager(Context context, int subId) {
mSubId = subId;
Context appContext = context.getApplicationContext();
@@ -192,6 +200,7 @@
}
/** @hide */
+ @UnsupportedAppUsage
private TelephonyManager() {
mContext = null;
mSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
@@ -201,6 +210,7 @@
/** @hide
/* @deprecated - use getSystemService as described above */
+ @UnsupportedAppUsage
public static TelephonyManager getDefault() {
return sInstance;
}
@@ -228,6 +238,7 @@
* Returns UNKNOWN for others
*/
/** {@hide} */
+ @UnsupportedAppUsage
public MultiSimVariants getMultiSimConfiguration() {
String mSimConfig =
SystemProperties.get(TelephonyProperties.PROPERTY_MULTI_SIM_CONFIG);
@@ -288,6 +299,7 @@
}
/** {@hide} */
+ @UnsupportedAppUsage
public static TelephonyManager from(Context context) {
return (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
}
@@ -319,6 +331,7 @@
}
/** {@hide} */
+ @UnsupportedAppUsage
public boolean isMultiSimEnabled() {
return (multiSimConfig.equals("dsds") || multiSimConfig.equals("dsda") ||
multiSimConfig.equals("tsts"));
@@ -672,6 +685,7 @@
*/
@SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)
@Deprecated
+ @UnsupportedAppUsage
public static final String ACTION_PRECISE_DATA_CONNECTION_STATE_CHANGED =
"android.intent.action.PRECISE_DATA_CONNECTION_STATE_CHANGED";
@@ -1206,6 +1220,7 @@
*/
/** {@hide} */
@RequiresPermission(android.Manifest.permission.READ_PHONE_STATE)
+ @UnsupportedAppUsage
public String getDeviceSoftwareVersion(int slotIndex) {
ITelephony telephony = getITelephony();
if (telephony == null) return null;
@@ -1418,6 +1433,7 @@
* @param slotIndex of which Nai is returned
*/
/** {@hide}*/
+ @UnsupportedAppUsage
public String getNai(int slotIndex) {
int[] subId = SubscriptionManager.getSubId(slotIndex);
if (subId == null) {
@@ -1657,6 +1673,7 @@
}
/** {@hide} */
+ @UnsupportedAppUsage
private int getPhoneTypeFromProperty(int phoneId) {
String type = getTelephonyProperty(phoneId,
TelephonyProperties.CURRENT_ACTIVE_PHONE, null);
@@ -1691,6 +1708,7 @@
*
* @hide
*/
+ @UnsupportedAppUsage
public static int getPhoneType(int networkMode) {
switch(networkMode) {
case RILConstants.NETWORK_MODE_CDMA:
@@ -1736,6 +1754,7 @@
/**
* The contents of the /proc/cmdline file
*/
+ @UnsupportedAppUsage
private static String getProcCmdLine()
{
String cmdline = "";
@@ -1782,6 +1801,7 @@
*
* @hide
*/
+ @UnsupportedAppUsage
public static int getLteOnCdmaModeStatic() {
int retVal;
int curVal;
@@ -1837,6 +1857,7 @@
* @param subId
* @hide
*/
+ @UnsupportedAppUsage
public String getNetworkOperatorName(int subId) {
int phoneId = SubscriptionManager.getPhoneId(subId);
return getTelephonyProperty(phoneId, TelephonyProperties.PROPERTY_OPERATOR_ALPHA, "");
@@ -1864,6 +1885,7 @@
* @param subId
* @hide
*/
+ @UnsupportedAppUsage
public String getNetworkOperator(int subId) {
int phoneId = SubscriptionManager.getPhoneId(subId);
return getNetworkOperatorForPhone(phoneId);
@@ -1880,6 +1902,7 @@
* @param phoneId
* @hide
**/
+ @UnsupportedAppUsage
public String getNetworkOperatorForPhone(int phoneId) {
return getTelephonyProperty(phoneId, TelephonyProperties.PROPERTY_OPERATOR_NUMERIC, "");
}
@@ -1942,6 +1965,7 @@
* @param subId
* @hide
*/
+ @UnsupportedAppUsage
public boolean isNetworkRoaming(int subId) {
int phoneId = SubscriptionManager.getPhoneId(subId);
return Boolean.parseBoolean(getTelephonyProperty(phoneId,
@@ -1970,6 +1994,7 @@
* @param subId for which Network CountryIso is returned
* @hide
*/
+ @UnsupportedAppUsage
public String getNetworkCountryIso(int subId) {
return getNetworkCountryIsoForPhone(getPhoneId(subId));
}
@@ -1985,6 +2010,7 @@
* @param phoneId for which Network CountryIso is returned
*/
/** {@hide} */
+ @UnsupportedAppUsage
public String getNetworkCountryIsoForPhone(int phoneId) {
try {
ITelephony telephony = getITelephony();
@@ -2040,6 +2066,7 @@
/** Current network is IWLAN */
public static final int NETWORK_TYPE_IWLAN = TelephonyProtoEnums.NETWORK_TYPE_IWLAN; // = 18.
/** Current network is LTE_CA {@hide} */
+ @UnsupportedAppUsage
public static final int NETWORK_TYPE_LTE_CA = TelephonyProtoEnums.NETWORK_TYPE_LTE_CA; // = 19.
/** Max network type number. Update as new types are added. Don't add negative types. {@hide} */
@@ -2092,6 +2119,7 @@
* @hide
*/
@RequiresPermission(android.Manifest.permission.READ_PHONE_STATE)
+ @UnsupportedAppUsage
public int getNetworkType(int subId) {
try {
ITelephony telephony = getITelephony();
@@ -2154,6 +2182,7 @@
* @hide
*/
@RequiresPermission(android.Manifest.permission.READ_PHONE_STATE)
+ @UnsupportedAppUsage
public int getDataNetworkType(int subId) {
try{
ITelephony telephony = getITelephony();
@@ -2189,6 +2218,7 @@
* @hide
*/
@RequiresPermission(android.Manifest.permission.READ_PHONE_STATE)
+ @UnsupportedAppUsage
public int getVoiceNetworkType(int subId) {
try{
ITelephony telephony = getITelephony();
@@ -2216,10 +2246,13 @@
/** Unknown network class. {@hide} */
public static final int NETWORK_CLASS_UNKNOWN = 0;
/** Class of broadly defined "2G" networks. {@hide} */
+ @UnsupportedAppUsage
public static final int NETWORK_CLASS_2_G = 1;
/** Class of broadly defined "3G" networks. {@hide} */
+ @UnsupportedAppUsage
public static final int NETWORK_CLASS_3_G = 2;
/** Class of broadly defined "4G" networks. {@hide} */
+ @UnsupportedAppUsage
public static final int NETWORK_CLASS_4_G = 3;
/**
@@ -2228,6 +2261,7 @@
*
* @hide
*/
+ @UnsupportedAppUsage
public static int getNetworkClass(int networkType) {
switch (networkType) {
case NETWORK_TYPE_GPRS:
@@ -2264,6 +2298,7 @@
*
* @hide pending API council review
*/
+ @UnsupportedAppUsage
public String getNetworkTypeName() {
return getNetworkTypeName(getNetworkType());
}
@@ -2276,6 +2311,7 @@
*
*/
/** {@hide} */
+ @UnsupportedAppUsage
public static String getNetworkTypeName(int type) {
switch (type) {
case NETWORK_TYPE_GPRS:
@@ -2475,6 +2511,7 @@
*/
/** {@hide} */
// FIXME Input argument slotIndex should be of type int
+ @UnsupportedAppUsage
public boolean hasIccCard(int slotIndex) {
try {
@@ -2638,6 +2675,7 @@
* @param subId for which SimOperator is returned
* @hide
*/
+ @UnsupportedAppUsage
public String getSimOperator(int subId) {
return getSimOperatorNumeric(subId);
}
@@ -2651,6 +2689,7 @@
* @see #getSimState
* @hide
*/
+ @UnsupportedAppUsage
public String getSimOperatorNumeric() {
int subId = mSubId;
if (!SubscriptionManager.isUsableSubIdValue(subId)) {
@@ -2679,6 +2718,7 @@
* @param subId for which SimOperator is returned
* @hide
*/
+ @UnsupportedAppUsage
public String getSimOperatorNumeric(int subId) {
int phoneId = SubscriptionManager.getPhoneId(subId);
return getSimOperatorNumericForPhone(phoneId);
@@ -2692,6 +2732,7 @@
* @param phoneId for which SimOperator is returned
* @hide
*/
+ @UnsupportedAppUsage
public String getSimOperatorNumericForPhone(int phoneId) {
return getTelephonyProperty(phoneId,
TelephonyProperties.PROPERTY_ICC_OPERATOR_NUMERIC, "");
@@ -2718,6 +2759,7 @@
* @param subId for which SimOperatorName is returned
* @hide
*/
+ @UnsupportedAppUsage
public String getSimOperatorName(int subId) {
int phoneId = SubscriptionManager.getPhoneId(subId);
return getSimOperatorNameForPhone(phoneId);
@@ -2728,6 +2770,7 @@
*
* @hide
*/
+ @UnsupportedAppUsage
public String getSimOperatorNameForPhone(int phoneId) {
return getTelephonyProperty(phoneId,
TelephonyProperties.PROPERTY_ICC_OPERATOR_ALPHA, "");
@@ -2746,6 +2789,7 @@
* @param subId for which SimCountryIso is returned
* @hide
*/
+ @UnsupportedAppUsage
public String getSimCountryIso(int subId) {
int phoneId = SubscriptionManager.getPhoneId(subId);
return getSimCountryIsoForPhone(phoneId);
@@ -2756,6 +2800,7 @@
*
* @hide
*/
+ @UnsupportedAppUsage
public String getSimCountryIsoForPhone(int phoneId) {
return getTelephonyProperty(phoneId,
TelephonyProperties.PROPERTY_ICC_OPERATOR_ISO_COUNTRY, "");
@@ -2782,6 +2827,7 @@
* @hide
*/
@RequiresPermission(android.Manifest.permission.READ_PHONE_STATE)
+ @UnsupportedAppUsage
public String getSimSerialNumber(int subId) {
try {
IPhoneSubInfo info = getSubscriberInfo();
@@ -2807,6 +2853,7 @@
* @hide
*/
@RequiresPermission(android.Manifest.permission.READ_PHONE_STATE)
+ @UnsupportedAppUsage
public int getLteOnCdmaMode() {
return getLteOnCdmaMode(getSubId());
}
@@ -2822,6 +2869,7 @@
* @hide
*/
@RequiresPermission(android.Manifest.permission.READ_PHONE_STATE)
+ @UnsupportedAppUsage
public int getLteOnCdmaMode(int subId) {
try {
ITelephony telephony = getITelephony();
@@ -2929,6 +2977,7 @@
* @hide
*/
@RequiresPermission(android.Manifest.permission.READ_PHONE_STATE)
+ @UnsupportedAppUsage
public String getSubscriberId(int subId) {
try {
IPhoneSubInfo info = getSubscriberInfo();
@@ -3109,6 +3158,7 @@
* @hide
*/
@RequiresPermission(android.Manifest.permission.READ_PHONE_STATE)
+ @UnsupportedAppUsage
public String getGroupIdLevel1(int subId) {
try {
IPhoneSubInfo info = getSubscriberInfo();
@@ -3158,6 +3208,7 @@
android.Manifest.permission.READ_SMS,
android.Manifest.permission.READ_PHONE_NUMBERS
})
+ @UnsupportedAppUsage
public String getLine1Number(int subId) {
String number = null;
try {
@@ -3244,6 +3295,7 @@
* @hide
*/
@RequiresPermission(android.Manifest.permission.READ_PHONE_STATE)
+ @UnsupportedAppUsage
public String getLine1AlphaTag(int subId) {
String alphaTag = null;
try {
@@ -3278,6 +3330,7 @@
*
* @hide
*/
+ @UnsupportedAppUsage
public @Nullable String[] getMergedSubscriberIds() {
try {
ITelephony telephony = getITelephony();
@@ -3296,6 +3349,7 @@
* @hide
*/
@RequiresPermission(android.Manifest.permission.READ_PHONE_STATE)
+ @UnsupportedAppUsage
public String getMsisdn() {
return getMsisdn(getSubId());
}
@@ -3308,6 +3362,7 @@
* @hide
*/
@RequiresPermission(android.Manifest.permission.READ_PHONE_STATE)
+ @UnsupportedAppUsage
public String getMsisdn(int subId) {
try {
IPhoneSubInfo info = getSubscriberInfo();
@@ -3341,6 +3396,7 @@
* @hide
*/
@RequiresPermission(android.Manifest.permission.READ_PHONE_STATE)
+ @UnsupportedAppUsage
public String getVoiceMailNumber(int subId) {
try {
IPhoneSubInfo info = getSubscriberInfo();
@@ -3900,6 +3956,7 @@
* @hide
*/
@RequiresPermission(android.Manifest.permission.READ_PHONE_STATE)
+ @UnsupportedAppUsage
public int getVoiceMessageCount() {
return getVoiceMessageCount(getSubId());
}
@@ -3910,6 +3967,7 @@
* @hide
*/
@RequiresPermission(android.Manifest.permission.READ_PHONE_STATE)
+ @UnsupportedAppUsage
public int getVoiceMessageCount(int subId) {
try {
ITelephony telephony = getITelephony();
@@ -3945,6 +4003,7 @@
* @hide
*/
@RequiresPermission(android.Manifest.permission.READ_PHONE_STATE)
+ @UnsupportedAppUsage
public String getVoiceMailAlphaTag(int subId) {
try {
IPhoneSubInfo info = getSubscriberInfo();
@@ -3991,6 +4050,7 @@
* @return the IMPI, or null if not present or not loaded
* @hide
*/
+ @UnsupportedAppUsage
public String getIsimImpi() {
try {
IPhoneSubInfo info = getSubscriberInfo();
@@ -4011,6 +4071,7 @@
* @return the IMS domain name, or null if not present or not loaded
* @hide
*/
+ @UnsupportedAppUsage
public String getIsimDomain() {
try {
IPhoneSubInfo info = getSubscriberInfo();
@@ -4032,6 +4093,7 @@
* not present or not loaded
* @hide
*/
+ @UnsupportedAppUsage
public String[] getIsimImpu() {
try {
IPhoneSubInfo info = getSubscriberInfo();
@@ -4050,6 +4112,7 @@
/**
* @hide
*/
+ @UnsupportedAppUsage
private IPhoneSubInfo getSubscriberInfo() {
// get it each time because that process crashes a lot
return IPhoneSubInfo.Stub.asInterface(ServiceManager.getService("iphonesubinfo"));
@@ -4115,6 +4178,7 @@
* @param subId the subscription to check call state for.
* @hide
*/
+ @UnsupportedAppUsage
public @CallState int getCallState(int subId) {
int phoneId = SubscriptionManager.getPhoneId(subId);
return getCallStateForSlot(phoneId);
@@ -4226,6 +4290,7 @@
/**
* @hide
*/
+ @UnsupportedAppUsage
private ITelephony getITelephony() {
return ITelephony.Stub.asInterface(ServiceManager.getService(Context.TELEPHONY_SERVICE));
}
@@ -4310,6 +4375,7 @@
* @hide
*/
@RequiresPermission(android.Manifest.permission.READ_PHONE_STATE)
+ @UnsupportedAppUsage
public int getCdmaEriIconIndex(int subId) {
try {
ITelephony telephony = getITelephony();
@@ -4344,6 +4410,7 @@
* @hide
*/
@RequiresPermission(android.Manifest.permission.READ_PHONE_STATE)
+ @UnsupportedAppUsage
public int getCdmaEriIconMode(int subId) {
try {
ITelephony telephony = getITelephony();
@@ -4374,6 +4441,7 @@
* @hide
*/
@RequiresPermission(android.Manifest.permission.READ_PHONE_STATE)
+ @UnsupportedAppUsage
public String getCdmaEriText(int subId) {
try {
ITelephony telephony = getITelephony();
@@ -4846,6 +4914,7 @@
*
* @hide
*/
+ @UnsupportedAppUsage
public String nvReadItem(int itemID) {
try {
ITelephony telephony = getITelephony();
@@ -4926,6 +4995,7 @@
*
* @hide
*/
+ @UnsupportedAppUsage
public boolean nvResetConfig(int resetType) {
try {
ITelephony telephony = getITelephony();
@@ -4962,6 +5032,7 @@
* {@see SubscriptionManager#getDefaultVoiceSubscriptionId()}
* {@see SubscriptionManager#getDefaultSmsSubscriptionId()}
*/
+ @UnsupportedAppUsage
private int getSubId(int preferredSubId) {
if (SubscriptionManager.isUsableSubIdValue(mSubId)) {
return mSubId;
@@ -4990,6 +5061,7 @@
* {@see SubscriptionManager#getDefaultVoiceSubscriptionId()}
* {@see SubscriptionManager#getDefaultSmsSubscriptionId()}
*/
+ @UnsupportedAppUsage
private int getPhoneId(int preferredSubId) {
return SubscriptionManager.getPhoneId(getSubId(preferredSubId));
}
@@ -5005,6 +5077,7 @@
* {@hide}
*/
@VisibleForTesting
+ @UnsupportedAppUsage
public int getSlotIndex() {
int slotIndex = SubscriptionManager.getSlotIndex(getSubId());
if (slotIndex == SubscriptionManager.SIM_NOT_INSERTED) {
@@ -5018,6 +5091,7 @@
*
* @hide
*/
+ @UnsupportedAppUsage
public static void setTelephonyProperty(int phoneId, String property, String value) {
String propVal = "";
String p[] = null;
@@ -5095,6 +5169,7 @@
* @return The value at the given index of settings.
* @hide
*/
+ @UnsupportedAppUsage
public static int getIntAtIndex(android.content.ContentResolver cr,
String name, int index)
throws android.provider.Settings.SettingNotFoundException {
@@ -5127,6 +5202,7 @@
* @return true if the value was set, false on database errors
* @hide
*/
+ @UnsupportedAppUsage
public static boolean putIntAtIndex(android.content.ContentResolver cr,
String name, int index, int value) {
String data = "";
@@ -5168,6 +5244,7 @@
*
* @hide
*/
+ @UnsupportedAppUsage
public static String getTelephonyProperty(int phoneId, String property, String defaultVal) {
String propVal = null;
String prop = SystemProperties.get(property);
@@ -5188,12 +5265,14 @@
*
* @hide
*/
+ @UnsupportedAppUsage
public static String getTelephonyProperty(String property, String defaultVal) {
String propVal = SystemProperties.get(property);
return propVal == null ? defaultVal : propVal;
}
/** @hide */
+ @UnsupportedAppUsage
public int getSimCount() {
// FIXME Need to get it from Telephony Dev Controller when that gets implemented!
// and then this method shouldn't be used at all!
@@ -5230,6 +5309,7 @@
* not present or not loaded
* @hide
*/
+ @UnsupportedAppUsage
public String[] getIsimPcscf() {
try {
IPhoneSubInfo info = getSubscriberInfo();
@@ -5310,6 +5390,7 @@
* Authentication error, no memory space available in EFMUK
* @hide
*/
+ @UnsupportedAppUsage
public String getIccAuthentication(int subId, int appType, int authType, String data) {
try {
IPhoneSubInfo info = getSubscriberInfo();
@@ -5472,6 +5553,7 @@
* Corresponds to features defined in ImsFeature.
* @hide
*/
+ @UnsupportedAppUsage
public @Nullable IImsRegistration getImsRegistration(int slotIndex, int feature) {
try {
ITelephony telephony = getITelephony();
@@ -5491,6 +5573,7 @@
* Corresponds to features defined in ImsFeature.
* @hide
*/
+ @UnsupportedAppUsage
public @Nullable IImsConfig getImsConfig(int slotIndex, int feature) {
try {
ITelephony telephony = getITelephony();
@@ -5509,6 +5592,7 @@
* @param Registration state
* @hide
*/
+ @UnsupportedAppUsage
public void setImsRegistrationState(boolean registered) {
try {
ITelephony telephony = getITelephony();
@@ -5529,6 +5613,7 @@
* @return the preferred network type, defined in RILConstants.java.
* @hide
*/
+ @UnsupportedAppUsage
public int getPreferredNetworkType(int subId) {
try {
ITelephony telephony = getITelephony();
@@ -5677,6 +5762,7 @@
* @return true on success; false on any failure.
* @hide
*/
+ @UnsupportedAppUsage
public boolean setPreferredNetworkType(int subId, int networkType) {
try {
ITelephony telephony = getITelephony();
@@ -5851,6 +5937,7 @@
*
* @hide
*/
+ @UnsupportedAppUsage
public boolean setRoamingOverride(List<String> gsmRoamingList,
List<String> gsmNonRoamingList, List<String> cdmaRoamingList,
List<String> cdmaNonRoamingList) {
@@ -6705,6 +6792,7 @@
* @see SubscriptionManager#getDefaultSubscriptionId()
* @hide
*/
+ @UnsupportedAppUsage
public boolean isImsRegistered() {
try {
return getITelephony().isImsRegistered(getSubId());
@@ -6721,6 +6809,7 @@
* @see SubscriptionManager#getDefaultSubscriptionId()
* @hide
*/
+ @UnsupportedAppUsage
public boolean isVolteAvailable() {
try {
return getITelephony().isVolteAvailable(getSubId());
@@ -6737,6 +6826,7 @@
* @return true if VT is available, or false if it is unavailable or unknown.
* @hide
*/
+ @UnsupportedAppUsage
public boolean isVideoTelephonyAvailable() {
try {
return getITelephony().isVideoTelephonyAvailable(getSubId());
@@ -6751,6 +6841,7 @@
* @return true if VoWiFi is available, or false if it is unavailable or unknown.
* @hide
*/
+ @UnsupportedAppUsage
public boolean isWifiCallingAvailable() {
try {
return getITelephony().isWifiCallingAvailable(getSubId());
@@ -6793,6 +6884,7 @@
*
* @hide
*/
+ @UnsupportedAppUsage
public void setSimOperatorNumericForPhone(int phoneId, String numeric) {
setTelephonyProperty(phoneId,
TelephonyProperties.PROPERTY_ICC_OPERATOR_NUMERIC, numeric);
@@ -6813,6 +6905,7 @@
*
* @hide
*/
+ @UnsupportedAppUsage
public void setSimOperatorNameForPhone(int phoneId, String name) {
setTelephonyProperty(phoneId,
TelephonyProperties.PROPERTY_ICC_OPERATOR_ALPHA, name);
@@ -6833,6 +6926,7 @@
*
* @hide
*/
+ @UnsupportedAppUsage
public void setSimCountryIsoForPhone(int phoneId, String iso) {
setTelephonyProperty(phoneId,
TelephonyProperties.PROPERTY_ICC_OPERATOR_ISO_COUNTRY, iso);
@@ -6853,6 +6947,7 @@
*
* @hide
*/
+ @UnsupportedAppUsage
public void setSimStateForPhone(int phoneId, String state) {
setTelephonyProperty(phoneId,
TelephonyProperties.PROPERTY_SIM_STATE, state);
@@ -6958,6 +7053,7 @@
* @param version baseband version
* @hide
*/
+ @UnsupportedAppUsage
public void setBasebandVersionForPhone(int phoneId, String version) {
setTelephonyProperty(phoneId, TelephonyProperties.PROPERTY_BASEBAND_VERSION, version);
}
@@ -7023,6 +7119,7 @@
*
* @hide
*/
+ @UnsupportedAppUsage
public void setPhoneType(int phoneId, int type) {
if (SubscriptionManager.isValidPhoneId(phoneId)) {
TelephonyManager.setTelephonyProperty(phoneId,
@@ -7052,6 +7149,7 @@
*
* @hide
*/
+ @UnsupportedAppUsage
public String getOtaSpNumberSchemaForPhone(int phoneId, String defaultValue) {
if (SubscriptionManager.isValidPhoneId(phoneId)) {
return TelephonyManager.getTelephonyProperty(phoneId,
@@ -7139,6 +7237,7 @@
* @param name the alphabetic name of current registered operator.
* @hide
*/
+ @UnsupportedAppUsage
public void setNetworkOperatorNameForPhone(int phoneId, String name) {
if (SubscriptionManager.isValidPhoneId(phoneId)) {
setTelephonyProperty(phoneId, TelephonyProperties.PROPERTY_OPERATOR_ALPHA, name);
@@ -7161,6 +7260,7 @@
* @param operator the numeric name (MCC+MNC) of current registered operator
* @hide
*/
+ @UnsupportedAppUsage
public void setNetworkOperatorNumericForPhone(int phoneId, String numeric) {
setTelephonyProperty(phoneId, TelephonyProperties.PROPERTY_OPERATOR_NUMERIC, numeric);
}
@@ -7181,6 +7281,7 @@
* @param isRoaming is network in romaing state or not
* @hide
*/
+ @UnsupportedAppUsage
public void setNetworkRoamingForPhone(int phoneId, boolean isRoaming) {
if (SubscriptionManager.isValidPhoneId(phoneId)) {
setTelephonyProperty(phoneId, TelephonyProperties.PROPERTY_OPERATOR_ISROAMING,
@@ -7208,6 +7309,7 @@
* @param type the network type currently in use on the device for data transmission
* @hide
*/
+ @UnsupportedAppUsage
public void setDataNetworkTypeForPhone(int phoneId, int type) {
if (SubscriptionManager.isValidPhoneId(phoneId)) {
setTelephonyProperty(phoneId,
@@ -7220,6 +7322,7 @@
* Returns the subscription ID for the given phone account.
* @hide
*/
+ @UnsupportedAppUsage
public int getSubIdForPhoneAccount(PhoneAccount phoneAccount) {
int retval = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
try {
@@ -7311,6 +7414,7 @@
* either READ_PRIVILEGED_PHONE_STATE or READ_PHONE_STATE to retrieve the information.
* @hide
*/
+ @UnsupportedAppUsage
public ServiceState getServiceStateForSubscriber(int subId) {
try {
ITelephony service = getITelephony();
diff --git a/telephony/java/android/telephony/VoLteServiceState.java b/telephony/java/android/telephony/VoLteServiceState.java
index afef601b..25bb8b4 100644
--- a/telephony/java/android/telephony/VoLteServiceState.java
+++ b/telephony/java/android/telephony/VoLteServiceState.java
@@ -16,6 +16,7 @@
package android.telephony;
+import android.annotation.UnsupportedAppUsage;
import android.os.Bundle;
import android.os.Parcel;
import android.os.Parcelable;
@@ -77,6 +78,7 @@
*
* @hide
*/
+ @UnsupportedAppUsage
public VoLteServiceState(int srvccState) {
initialize();
diff --git a/telephony/java/android/telephony/cdma/CdmaCellLocation.java b/telephony/java/android/telephony/cdma/CdmaCellLocation.java
index 7c10569..ee602c0 100644
--- a/telephony/java/android/telephony/cdma/CdmaCellLocation.java
+++ b/telephony/java/android/telephony/cdma/CdmaCellLocation.java
@@ -16,6 +16,7 @@
package android.telephony.cdma;
+import android.annotation.UnsupportedAppUsage;
import android.os.Bundle;
import android.telephony.CellLocation;
@@ -23,6 +24,7 @@
* Represents the cell location on a CDMA phone.
*/
public class CdmaCellLocation extends CellLocation {
+ @UnsupportedAppUsage
private int mBaseStationId = -1;
/**
@@ -36,6 +38,7 @@
* to 1296000, both values inclusive (corresponding to a range of -90
* to +90 degrees). Integer.MAX_VALUE is considered invalid value.
*/
+ @UnsupportedAppUsage
private int mBaseStationLatitude = INVALID_LAT_LONG;
/**
@@ -44,9 +47,12 @@
* to 2592000, both values inclusive (corresponding to a range of -180
* to +180 degrees). Integer.MAX_VALUE is considered invalid value.
*/
+ @UnsupportedAppUsage
private int mBaseStationLongitude = INVALID_LAT_LONG;
+ @UnsupportedAppUsage
private int mSystemId = -1;
+ @UnsupportedAppUsage
private int mNetworkId = -1;
/**
@@ -200,6 +206,7 @@
* @param b second obj
* @return true if two objects equal or both are null
*/
+ @UnsupportedAppUsage
private static boolean equalsHandlesNulls(Object a, Object b) {
return (a == null) ? (b == null) : a.equals (b);
}
diff --git a/telephony/java/android/telephony/euicc/DownloadableSubscription.java b/telephony/java/android/telephony/euicc/DownloadableSubscription.java
index edf3b08..f1d5bdd 100644
--- a/telephony/java/android/telephony/euicc/DownloadableSubscription.java
+++ b/telephony/java/android/telephony/euicc/DownloadableSubscription.java
@@ -17,6 +17,7 @@
import android.annotation.Nullable;
import android.annotation.SystemApi;
+import android.annotation.UnsupportedAppUsage;
import android.app.PendingIntent;
import android.os.Parcel;
import android.os.Parcelable;
@@ -59,6 +60,7 @@
*/
@Nullable
@Deprecated
+ @UnsupportedAppUsage
public final String encodedActivationCode;
@Nullable private String confirmationCode;
@@ -188,6 +190,7 @@
* @deprecated - Do not use.
*/
@Deprecated
+ @UnsupportedAppUsage
public void setCarrierName(String carrierName) {
this.carrierName = carrierName;
}
@@ -234,6 +237,7 @@
* @deprecated - Do not use.
*/
@Deprecated
+ @UnsupportedAppUsage
public void setAccessRules(UiccAccessRule[] accessRules) {
this.accessRules = Arrays.asList(accessRules);
}
diff --git a/telephony/java/android/telephony/euicc/EuiccInfo.java b/telephony/java/android/telephony/euicc/EuiccInfo.java
index a4adf05..28855b2 100644
--- a/telephony/java/android/telephony/euicc/EuiccInfo.java
+++ b/telephony/java/android/telephony/euicc/EuiccInfo.java
@@ -16,6 +16,7 @@
package android.telephony.euicc;
import android.annotation.Nullable;
+import android.annotation.UnsupportedAppUsage;
import android.os.Parcel;
import android.os.Parcelable;
@@ -43,6 +44,7 @@
};
@Nullable
+ @UnsupportedAppUsage
private final String osVersion;
/**
diff --git a/telephony/java/android/telephony/gsm/GsmCellLocation.java b/telephony/java/android/telephony/gsm/GsmCellLocation.java
index 1717802..98ce333 100644
--- a/telephony/java/android/telephony/gsm/GsmCellLocation.java
+++ b/telephony/java/android/telephony/gsm/GsmCellLocation.java
@@ -16,6 +16,7 @@
package android.telephony.gsm;
+import android.annotation.UnsupportedAppUsage;
import android.os.Bundle;
import android.telephony.CellLocation;
@@ -91,6 +92,7 @@
* Set the primary scrambling code.
* @hide
*/
+ @UnsupportedAppUsage
public void setPsc(int psc) {
mPsc = psc;
}
diff --git a/telephony/java/android/telephony/ims/ImsCallForwardInfo.java b/telephony/java/android/telephony/ims/ImsCallForwardInfo.java
index 2831127..34b8884 100644
--- a/telephony/java/android/telephony/ims/ImsCallForwardInfo.java
+++ b/telephony/java/android/telephony/ims/ImsCallForwardInfo.java
@@ -17,6 +17,7 @@
package android.telephony.ims;
import android.annotation.SystemApi;
+import android.annotation.UnsupportedAppUsage;
import android.os.Parcel;
import android.os.Parcelable;
@@ -30,30 +31,37 @@
// Refer to ImsUtInterface#CDIV_CF_XXX
/** @hide */
// TODO: Make private, do not modify this field directly, use getter.
+ @UnsupportedAppUsage
public int mCondition;
// 0: disabled, 1: enabled
/** @hide */
// TODO: Make private, do not modify this field directly, use getter.
+ @UnsupportedAppUsage
public int mStatus;
// 0x91: International, 0x81: Unknown
/** @hide */
// TODO: Make private, do not modify this field directly, use getter.
+ @UnsupportedAppUsage
public int mToA;
// Service class
/** @hide */
// TODO: Make private, do not modify this field directly, use getter.
+ @UnsupportedAppUsage
public int mServiceClass;
// Number (it will not include the "sip" or "tel" URI scheme)
/** @hide */
// TODO: Make private, do not modify this field directly, use getter.
+ @UnsupportedAppUsage
public String mNumber;
// No reply timer for CF
/** @hide */
// TODO: Make private, do not modify this field directly, use getter.
+ @UnsupportedAppUsage
public int mTimeSeconds;
/** @hide */
// TODO: Will be removed in the future, use public constructor instead.
+ @UnsupportedAppUsage
public ImsCallForwardInfo() {
}
diff --git a/telephony/java/android/telephony/ims/ImsCallProfile.java b/telephony/java/android/telephony/ims/ImsCallProfile.java
index 350dfe3..f0d3c89 100644
--- a/telephony/java/android/telephony/ims/ImsCallProfile.java
+++ b/telephony/java/android/telephony/ims/ImsCallProfile.java
@@ -17,6 +17,7 @@
package android.telephony.ims;
import android.annotation.SystemApi;
+import android.annotation.UnsupportedAppUsage;
import android.os.Bundle;
import android.os.Parcel;
import android.os.Parcelable;
@@ -260,8 +261,10 @@
/** @hide */
public int mServiceType;
/** @hide */
+ @UnsupportedAppUsage
public int mCallType;
/** @hide */
+ @UnsupportedAppUsage
public int mRestrictCause = CALL_RESTRICT_CAUSE_NONE;
/**
@@ -287,8 +290,10 @@
* a {@link android.os.Binder}.
*/
/** @hide */
+ @UnsupportedAppUsage
public Bundle mCallExtras;
/** @hide */
+ @UnsupportedAppUsage
public ImsStreamMediaProfile mMediaProfile;
/** @hide */
@@ -568,6 +573,7 @@
* See {@link #presentationToOir(int)}.
* @hide
*/
+ @UnsupportedAppUsage
public static int presentationToOIR(int presentation) {
switch (presentation) {
case PhoneConstants.PRESENTATION_RESTRICTED:
diff --git a/telephony/java/android/telephony/ims/ImsExternalCallState.java b/telephony/java/android/telephony/ims/ImsExternalCallState.java
index e158fa8..8d18ae8 100644
--- a/telephony/java/android/telephony/ims/ImsExternalCallState.java
+++ b/telephony/java/android/telephony/ims/ImsExternalCallState.java
@@ -17,6 +17,7 @@
package android.telephony.ims;
import android.annotation.SystemApi;
+import android.annotation.UnsupportedAppUsage;
import android.net.Uri;
import android.os.Parcel;
import android.os.Parcelable;
@@ -58,6 +59,7 @@
}
/** @hide */
+ @UnsupportedAppUsage
public ImsExternalCallState(int callId, Uri address, boolean isPullable, int callState,
int callType, boolean isCallheld) {
mCallId = callId;
diff --git a/telephony/java/android/telephony/ims/ImsReasonInfo.java b/telephony/java/android/telephony/ims/ImsReasonInfo.java
index 662cc7a6..b981f05 100644
--- a/telephony/java/android/telephony/ims/ImsReasonInfo.java
+++ b/telephony/java/android/telephony/ims/ImsReasonInfo.java
@@ -17,6 +17,7 @@
package android.telephony.ims;
import android.annotation.SystemApi;
+import android.annotation.UnsupportedAppUsage;
import android.os.Parcel;
import android.os.Parcelable;
@@ -583,12 +584,15 @@
// For main reason code
/** @hide */
+ @UnsupportedAppUsage
public int mCode;
// For the extra code value; it depends on the code value.
/** @hide */
+ @UnsupportedAppUsage
public int mExtraCode;
// For the additional message of the reason info.
/** @hide */
+ @UnsupportedAppUsage
public String mExtraMessage;
/** @hide */
@@ -605,6 +609,7 @@
}
/** @hide */
+ @UnsupportedAppUsage
public ImsReasonInfo(int code, int extraCode) {
mCode = code;
mExtraCode = extraCode;
diff --git a/telephony/java/android/telephony/ims/ImsSsInfo.java b/telephony/java/android/telephony/ims/ImsSsInfo.java
index e924a25..3a784c1 100644
--- a/telephony/java/android/telephony/ims/ImsSsInfo.java
+++ b/telephony/java/android/telephony/ims/ImsSsInfo.java
@@ -18,6 +18,7 @@
import android.annotation.IntDef;
import android.annotation.SystemApi;
+import android.annotation.UnsupportedAppUsage;
import android.os.Parcel;
import android.os.Parcelable;
@@ -65,15 +66,18 @@
// 0: disabled, 1: enabled
/** @hide */
// TODO: Make private, do not modify this field directly, use getter!
+ @UnsupportedAppUsage
public int mStatus;
/** @hide */
// TODO: Make private, do not modify this field directly, use getter!
+ @UnsupportedAppUsage
public String mIcbNum;
/** @hide */
public int mProvisionStatus = SERVICE_PROVISIONING_UNKNOWN;
/**@hide*/
// TODO: Remove! Do not use this constructor, instead use public version.
+ @UnsupportedAppUsage
public ImsSsInfo() {
}
diff --git a/telephony/java/android/telephony/ims/ImsStreamMediaProfile.java b/telephony/java/android/telephony/ims/ImsStreamMediaProfile.java
index 137106a..52d72b5 100644
--- a/telephony/java/android/telephony/ims/ImsStreamMediaProfile.java
+++ b/telephony/java/android/telephony/ims/ImsStreamMediaProfile.java
@@ -17,6 +17,7 @@
package android.telephony.ims;
import android.annotation.SystemApi;
+import android.annotation.UnsupportedAppUsage;
import android.os.Parcel;
import android.os.Parcelable;
@@ -82,13 +83,16 @@
// Audio related information
/** @hide */
+ @UnsupportedAppUsage
public int mAudioQuality;
/** @hide */
+ @UnsupportedAppUsage
public int mAudioDirection;
// Video related information
/** @hide */
public int mVideoQuality;
/** @hide */
+ @UnsupportedAppUsage
public int mVideoDirection;
// Rtt related information
/** @hide */
@@ -156,6 +160,7 @@
}
/** @hide */
+ @UnsupportedAppUsage
public ImsStreamMediaProfile() {
mAudioQuality = AUDIO_QUALITY_NONE;
mAudioDirection = DIRECTION_SEND_RECEIVE;
diff --git a/telephony/java/android/telephony/ims/ImsVideoCallProvider.java b/telephony/java/android/telephony/ims/ImsVideoCallProvider.java
index b4f60b9..1772401 100644
--- a/telephony/java/android/telephony/ims/ImsVideoCallProvider.java
+++ b/telephony/java/android/telephony/ims/ImsVideoCallProvider.java
@@ -17,6 +17,7 @@
package android.telephony.ims;
import android.annotation.SystemApi;
+import android.annotation.UnsupportedAppUsage;
import android.net.Uri;
import android.os.Handler;
import android.os.Looper;
@@ -179,6 +180,7 @@
* Returns binder object which can be used across IPC methods.
* @hide
*/
+ @UnsupportedAppUsage
public final IImsVideoCallProvider getInterface() {
return mBinder;
}
diff --git a/telephony/java/android/telephony/ims/compat/ImsService.java b/telephony/java/android/telephony/ims/compat/ImsService.java
index cf1efb3..2750e51 100644
--- a/telephony/java/android/telephony/ims/compat/ImsService.java
+++ b/telephony/java/android/telephony/ims/compat/ImsService.java
@@ -17,6 +17,7 @@
package android.telephony.ims.compat;
import android.annotation.Nullable;
+import android.annotation.UnsupportedAppUsage;
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
@@ -86,6 +87,7 @@
/**
* @hide
*/
+ @UnsupportedAppUsage
protected final IBinder mImsServiceController = new IImsServiceController.Stub() {
@Override
diff --git a/telephony/java/android/telephony/ims/compat/feature/ImsFeature.java b/telephony/java/android/telephony/ims/compat/feature/ImsFeature.java
index 0a12cae..e8fcac1 100644
--- a/telephony/java/android/telephony/ims/compat/feature/ImsFeature.java
+++ b/telephony/java/android/telephony/ims/compat/feature/ImsFeature.java
@@ -17,6 +17,7 @@
package android.telephony.ims.compat.feature;
import android.annotation.IntDef;
+import android.annotation.UnsupportedAppUsage;
import android.content.Context;
import android.content.Intent;
import android.os.IInterface;
@@ -104,10 +105,12 @@
mSlotId = slotId;
}
+ @UnsupportedAppUsage
public int getFeatureState() {
return mState;
}
+ @UnsupportedAppUsage
protected final void setFeatureState(@ImsState int state) {
if (mState != state) {
mState = state;
diff --git a/telephony/java/android/telephony/ims/compat/feature/MMTelFeature.java b/telephony/java/android/telephony/ims/compat/feature/MMTelFeature.java
index d3d17f4..40ea208 100644
--- a/telephony/java/android/telephony/ims/compat/feature/MMTelFeature.java
+++ b/telephony/java/android/telephony/ims/compat/feature/MMTelFeature.java
@@ -20,6 +20,7 @@
import android.os.Message;
import android.os.RemoteException;
+import android.annotation.UnsupportedAppUsage;
import android.telephony.ims.ImsCallProfile;
import com.android.ims.internal.IImsCallSession;
import com.android.ims.internal.IImsCallSessionListener;
diff --git a/telephony/java/android/telephony/ims/compat/stub/ImsCallSessionImplBase.java b/telephony/java/android/telephony/ims/compat/stub/ImsCallSessionImplBase.java
index e5ed825..23de2fd 100644
--- a/telephony/java/android/telephony/ims/compat/stub/ImsCallSessionImplBase.java
+++ b/telephony/java/android/telephony/ims/compat/stub/ImsCallSessionImplBase.java
@@ -28,6 +28,7 @@
import com.android.ims.internal.IImsCallSession;
import com.android.ims.internal.IImsVideoCallProvider;
+import android.annotation.UnsupportedAppUsage;
import android.telephony.ims.ImsCallSession;
/**
diff --git a/telephony/java/android/telephony/ims/compat/stub/ImsConfigImplBase.java b/telephony/java/android/telephony/ims/compat/stub/ImsConfigImplBase.java
index 2c325ba8..e55c3d0 100644
--- a/telephony/java/android/telephony/ims/compat/stub/ImsConfigImplBase.java
+++ b/telephony/java/android/telephony/ims/compat/stub/ImsConfigImplBase.java
@@ -16,6 +16,7 @@
package android.telephony.ims.compat.stub;
+import android.annotation.UnsupportedAppUsage;
import android.content.Context;
import android.content.Intent;
import android.os.RemoteException;
@@ -58,6 +59,7 @@
ImsConfigStub mImsConfigStub;
+ @UnsupportedAppUsage
public ImsConfigImplBase(Context context) {
mImsConfigStub = new ImsConfigStub(this, context);
}
@@ -162,6 +164,7 @@
public void setVideoQuality(int quality, ImsConfigListener listener) throws RemoteException {
}
+ @UnsupportedAppUsage
public IImsConfig getIImsConfig() { return mImsConfigStub; }
/**
diff --git a/telephony/java/android/telephony/ims/compat/stub/ImsUtListenerImplBase.java b/telephony/java/android/telephony/ims/compat/stub/ImsUtListenerImplBase.java
index b2aa080..976c2be 100644
--- a/telephony/java/android/telephony/ims/compat/stub/ImsUtListenerImplBase.java
+++ b/telephony/java/android/telephony/ims/compat/stub/ImsUtListenerImplBase.java
@@ -19,6 +19,7 @@
import android.os.Bundle;
import android.os.RemoteException;
+import android.annotation.UnsupportedAppUsage;
import android.telephony.ims.ImsCallForwardInfo;
import android.telephony.ims.ImsReasonInfo;
import android.telephony.ims.ImsSsData;
diff --git a/test-base/Android.bp b/test-base/Android.bp
index d25b477..0b8a02a 100644
--- a/test-base/Android.bp
+++ b/test-base/Android.bp
@@ -19,9 +19,8 @@
// This contains the junit.framework and android.test classes that were in
// Android API level 25 excluding those from android.test.runner.
// Also contains the com.android.internal.util.Predicate[s] classes.
-java_library {
+java_sdk_library {
name: "android.test.base",
- installable: true,
srcs: ["src/**/*.java"],
@@ -29,11 +28,38 @@
javacflags: ["-Xep:DepAnn:ERROR"],
},
+ hostdex: true,
+
+ api_packages: [
+ "android.test",
+ "android.test.suitebuilder.annotation",
+ "com.android.internal.util",
+ "junit.framework",
+ ],
+
+ droiddoc_options: ["stubsourceonly"],
+ compile_dex: true,
+}
+
+// Build the android.test.base_static library
+// ==========================================
+// This is only intended for inclusion in the android.test.runner-minus-junit,
+// robolectric_android-all-stub and repackaged.android.test.* libraries.
+// Must not be used elewhere.
+java_library_static {
+ name: "android.test.base_static",
+ installable: false,
+
+ srcs: ["src/**/*.java"],
+
+ errorprone: {
+ javacflags: ["-Xep:DepAnn:ERROR"],
+ },
+
// Needs to be consistent with the repackaged version of this make target.
java_version: "1.8",
sdk_version: "current",
- hostdex: true,
}
// Build the legacy-test library
@@ -46,7 +72,7 @@
installable: true,
sdk_version: "current",
- static_libs: ["android.test.base"],
+ static_libs: ["android.test.base_static"],
}
// Build the repackaged.android.test.base library
@@ -57,7 +83,7 @@
name: "repackaged.android.test.base",
sdk_version: "current",
- static_libs: ["android.test.base"],
+ static_libs: ["android.test.base_static"],
jarjar_rules: "jarjar-rules.txt",
// Pin java_version until jarjar is certified to support later versions. http://b/72703434
@@ -84,38 +110,3 @@
],
}
-droiddoc {
- name: "android-test-base-api-stubs-gen-docs",
- srcs: [
- "src/**/*.java",
- ],
- custom_template: "droiddoc-templates-sdk",
- installable: false,
- args: "-stubpackages android.test:" +
- "android.test.suitebuilder.annotation:" +
- "com.android.internal.util:" +
- "junit.framework -stubsourceonly -nodocs",
- sdk_version: "current",
- api_tag_name: "ANDROID_TEST_BASE",
- api_filename: "android-test-base-api.txt",
- removed_api_filename: "android-test-base-removed.txt",
-}
-
-// Build the android.test.base.stubs library
-// =========================================
-java_library_static {
- name: "android.test.base.stubs",
- srcs: [
- ":android-test-base-api-stubs-gen-docs",
- ],
- product_variables: {
- pdk: {
- enabled: false,
- },
- unbundled_build: {
- enabled: false,
- },
- },
- sdk_version: "current",
- compile_dex: true,
-}
diff --git a/test-base/Android.mk b/test-base/Android.mk
index baf5726..a9d30cf 100644
--- a/test-base/Android.mk
+++ b/test-base/Android.mk
@@ -16,50 +16,6 @@
LOCAL_PATH:= $(call my-dir)
-# For unbundled build we'll use the prebuilt jar from prebuilts/sdk.
-ifeq (,$(TARGET_BUILD_APPS)$(filter true,$(TARGET_BUILD_PDK)))
-
-ANDROID_TEST_BASE_API_FILE := $(LOCAL_PATH)/api/android-test-base-current.txt
-ANDROID_TEST_BASE_REMOVED_API_FILE := $(LOCAL_PATH)/api/android-test-base-removed.txt
-
-full_classes_jar := $(call intermediates-dir-for,JAVA_LIBRARIES,android.test.base.stubs,,COMMON)/classes.jar
-# Archive a copy of the classes.jar in SDK build.
-$(call dist-for-goals,sdk win_sdk,$(full_classes_jar):android.test.base.stubs.jar)
-
-# Check that the android.test.base.stubs library has not changed
-# ==============================================================
-
-# Check that the API we're building hasn't changed from the not-yet-released
-# SDK version.
-$(eval $(call check-api, \
- check-android-test-base-api-current, \
- $(ANDROID_TEST_BASE_API_FILE), \
- $(INTERNAL_PLATFORM_ANDROID_TEST_BASE_API_FILE), \
- $(ANDROID_TEST_BASE_REMOVED_API_FILE), \
- $(INTERNAL_PLATFORM_ANDROID_TEST_BASE_REMOVED_API_FILE), \
- -error 2 -error 3 -error 4 -error 5 -error 6 \
- -error 7 -error 8 -error 9 -error 10 -error 11 -error 12 -error 13 -error 14 -error 15 \
- -error 16 -error 17 -error 18 -error 19 -error 20 -error 21 -error 23 -error 24 \
- -error 25 -error 26 -error 27, \
- cat $(LOCAL_PATH)/api/apicheck_msg_android_test_base.txt, \
- check-android-test-base-api, \
- $(OUT_DOCS)/android-test-base-api-stubs-gen-docs-stubs.srcjar \
- ))
-
-.PHONY: check-android-test-base-api
-checkapi: check-android-test-base-api
-
-.PHONY: update-android-test-base-api
-update-api: update-android-test-base-api
-
-update-android-test-base-api: $(INTERNAL_PLATFORM_ANDROID_TEST_BASE_API_FILE) | $(ACP)
- @echo Copying current.txt
- $(hide) $(ACP) $(INTERNAL_PLATFORM_ANDROID_TEST_BASE_API_FILE) $(ANDROID_TEST_BASE_API_FILE)
- @echo Copying removed.txt
- $(hide) $(ACP) $(INTERNAL_PLATFORM_ANDROID_TEST_BASE_REMOVED_API_FILE) $(ANDROID_TEST_BASE_REMOVED_API_FILE)
-
-endif # not TARGET_BUILD_APPS not TARGET_BUILD_PDK=true
-
ifeq ($(HOST_OS),linux)
# Build the legacy-performance-test-hostdex library
# =================================================
diff --git a/test-base/api/apicheck_msg_android_test_base.txt b/test-base/api/apicheck_msg_android_test_base.txt
deleted file mode 100644
index 144aecc..0000000
--- a/test-base/api/apicheck_msg_android_test_base.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-
-******************************
-You have tried to change the API from what has been previously approved.
-
-To make these errors go away, you have two choices:
- 1) You can add "@hide" javadoc comments to the methods, etc. listed in the
- errors above.
-
- 2) You can update android-test-base-current.txt by executing the following command:
- make update-android-test-base-api
-
- To submit the revised android-test-base-current.txt to the main Android repository,
- you will need approval.
-******************************
-
-
-
diff --git a/test-base/api/android-test-base-current.txt b/test-base/api/current.txt
similarity index 100%
rename from test-base/api/android-test-base-current.txt
rename to test-base/api/current.txt
diff --git a/test-base/api/android-test-base-removed.txt b/test-base/api/removed.txt
similarity index 100%
copy from test-base/api/android-test-base-removed.txt
copy to test-base/api/removed.txt
diff --git a/test-base/api/android-test-base-removed.txt b/test-base/api/system-current.txt
similarity index 100%
copy from test-base/api/android-test-base-removed.txt
copy to test-base/api/system-current.txt
diff --git a/test-base/api/android-test-base-removed.txt b/test-base/api/system-removed.txt
similarity index 100%
rename from test-base/api/android-test-base-removed.txt
rename to test-base/api/system-removed.txt
diff --git a/test-base/api/android-test-base-removed.txt b/test-base/api/test-current.txt
similarity index 100%
copy from test-base/api/android-test-base-removed.txt
copy to test-base/api/test-current.txt
diff --git a/test-base/api/android-test-base-removed.txt b/test-base/api/test-removed.txt
similarity index 100%
copy from test-base/api/android-test-base-removed.txt
copy to test-base/api/test-removed.txt
diff --git a/test-legacy/Android.bp b/test-legacy/Android.bp
index d2af8a9..833c714 100644
--- a/test-legacy/Android.bp
+++ b/test-legacy/Android.bp
@@ -25,7 +25,7 @@
static_libs: [
"android.test.base-minus-junit",
"android.test.runner-minus-junit",
- "android.test.mock",
+ "android.test.mock.impl",
],
no_framework_libs: true,
diff --git a/test-mock/Android.bp b/test-mock/Android.bp
index 8d3faae..5eba017 100644
--- a/test-mock/Android.bp
+++ b/test-mock/Android.bp
@@ -16,95 +16,15 @@
// Build the android.test.mock library
// ===================================
-java_library {
+java_sdk_library {
name: "android.test.mock",
- installable: true,
- java_version: "1.8",
srcs: ["src/**/*.java"],
- no_framework_libs: true,
- libs: [
- "framework",
+ api_packages: [
+ "android.test.mock",
],
-}
-doc_defaults {
- name:"android.test.mock.docs-defaults",
- srcs: ["src/android/test/mock/**/*.java"],
-
- // Includes the main framework source to ensure that doclava has access to the
- // visibility information for the base classes of the mock classes. Without it
- // otherwise hidden methods could be visible.
- srcs_lib: "framework",
- srcs_lib_whitelist_dirs: ["core/java"],
srcs_lib_whitelist_pkgs: ["android"],
- libs: [
- "core-oj",
- "core-libart",
- "framework",
- "conscrypt",
- "okhttp",
- "bouncycastle",
- "ext",
- ],
- local_sourcepaths: ["src/android/test/mock"],
- custom_template: "droiddoc-templates-sdk",
- installable: false,
-}
-
-android_test_mock_docs_args =
- "-hide 110 -hide 111 -hide 113 -hide 121 -hide 125 -hide 126 -hide 127 -hide 128 " +
- "-stubpackages android.test.mock " +
- "-nodocs "
-
-droiddoc {
- name: "android.test.mock.docs",
- defaults: ["android.test.mock.docs-defaults"],
-
- api_tag_name: "ANDROID_TEST_MOCK",
- api_filename: "api/android-test-mock-current.txt",
- removed_api_filename: "api/android-test-mock-removed.txt",
-
- args: android_test_mock_docs_args,
-}
-
-droiddoc {
- name: "android.test.mock.docs-system",
- defaults: ["android.test.mock.docs-defaults"],
-
- api_tag_name: "ANDROID_TEST_MOCK_SYSTEM",
- api_filename: "api/android-test-mock-system-current.txt",
- removed_api_filename: "api/android-test-mock-system-removed.txt",
-
- args: android_test_mock_docs_args +
- "-showAnnotation android.annotation.SystemApi ",
-}
-
-java_library_static {
- name: "android.test.mock.stubs",
- srcs: [":android.test.mock.docs"],
- sdk_version: "current",
- product_variables: {
- unbundled_build: {
- // Unbundled apps will use the prebuilt one
- // prebuilts/sdk/current
- enabled: false,
- },
- },
- compile_dex: true,
-}
-
-java_library_static {
- name: "android.test.mock.stubs-system",
- srcs: [":android.test.mock.docs-system"],
- sdk_version: "system_current",
- product_variables: {
- unbundled_build: {
- // Unbundled apps will use the prebuilt one
- // prebuilts/sdk/system_current
- enabled: false,
- },
- },
compile_dex: true,
}
diff --git a/test-mock/Android.mk b/test-mock/Android.mk
deleted file mode 100644
index 73a7340..0000000
--- a/test-mock/Android.mk
+++ /dev/null
@@ -1,93 +0,0 @@
-#
-# Copyright (C) 2008 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH:= $(call my-dir)
-
-# Archive a copy of the classes.jar in SDK build.
-full_classes_jar := $(call intermediates-dir-for,JAVA_LIBRARIES,android.test.mock.stubs,,COMMON)/classes.jar
-$(call dist-for-goals,sdk win_sdk,$(full_classes_jar):android.test.mock.stubs.jar)
-
-# Check that the android.test.mock.stubs library has not changed
-# ==============================================================
-ANDROID_TEST_MOCK_API_FILE := $(LOCAL_PATH)/api/android-test-mock-current.txt
-ANDROID_TEST_MOCK_REMOVED_API_FILE := $(LOCAL_PATH)/api/android-test-mock-removed.txt
-
-# Check that the API we're building hasn't changed from the not-yet-released
-# SDK version.
-$(eval $(call check-api, \
- check-android-test-mock-api-current, \
- $(ANDROID_TEST_MOCK_API_FILE), \
- $(INTERNAL_PLATFORM_ANDROID_TEST_MOCK_API_FILE), \
- $(ANDROID_TEST_MOCK_REMOVED_API_FILE), \
- $(INTERNAL_PLATFORM_ANDROID_TEST_MOCK_REMOVED_API_FILE), \
- -error 2 -error 3 -error 4 -error 5 -error 6 \
- -error 7 -error 8 -error 9 -error 10 -error 11 -error 12 -error 13 -error 14 -error 15 \
- -error 16 -error 17 -error 18 -error 19 -error 20 -error 21 -error 23 -error 24 \
- -error 25 -error 26 -error 27, \
- cat $(LOCAL_PATH)/api/apicheck_msg_android_test_mock.txt, \
- check-android-test-mock-api, \
- $(OUT_DOCS)/android.test.mock.docs-stubs.srcjar \
- ))
-
-.PHONY: check-android-test-mock-api
-checkapi: check-android-test-mock-api
-
-.PHONY: update-android-test-mock-api
-update-api: update-android-test-mock-api
-
-update-android-test-mock-api: $(INTERNAL_PLATFORM_ANDROID_TEST_MOCK_API_FILE) | $(ACP)
- @echo Copying current.txt
- $(hide) $(ACP) $(INTERNAL_PLATFORM_ANDROID_TEST_MOCK_API_FILE) $(ANDROID_TEST_MOCK_API_FILE)
- @echo Copying removed.txt
- $(hide) $(ACP) $(INTERNAL_PLATFORM_ANDROID_TEST_MOCK_REMOVED_API_FILE) $(ANDROID_TEST_MOCK_REMOVED_API_FILE)
-
-# Archive a copy of the classes.jar in SDK build.
-full_classes_jar := $(call intermediates-dir-for,JAVA_LIBRARIES,android.test.mock.stubs-system,,COMMON)/classes.jar
-$(call dist-for-goals,sdk win_sdk,$(full_classes_jar):android.test.mock.stubs_system.jar)
-
-# Check that the android.test.mock.stubs-system library has not changed
-# =====================================================================
-ANDROID_TEST_MOCK_SYSTEM_API_FILE := $(LOCAL_PATH)/api/android-test-mock-system-current.txt
-ANDROID_TEST_MOCK_SYSTEM_REMOVED_API_FILE := $(LOCAL_PATH)/api/android-test-mock-system-removed.txt
-
-# Check that the API we're building hasn't changed from the not-yet-released
-# SDK version.
-$(eval $(call check-api, \
- check-android-test-mock-system-api-current, \
- $(ANDROID_TEST_MOCK_SYSTEM_API_FILE), \
- $(INTERNAL_PLATFORM_ANDROID_TEST_MOCK_SYSTEM_API_FILE), \
- $(ANDROID_TEST_MOCK_SYSTEM_REMOVED_API_FILE), \
- $(INTERNAL_PLATFORM_ANDROID_TEST_MOCK_SYSTEM_REMOVED_API_FILE), \
- -error 2 -error 3 -error 4 -error 5 -error 6 \
- -error 7 -error 8 -error 9 -error 10 -error 11 -error 12 -error 13 -error 14 -error 15 \
- -error 16 -error 17 -error 18 -error 19 -error 20 -error 21 -error 23 -error 24 \
- -error 25 -error 26 -error 27, \
- cat $(LOCAL_PATH)/api/apicheck_msg_android_test_mock-system.txt, \
- check-android-test-mock-system-api, \
- $(OUT_DOCS)/android.test.mock.docs-system-stubs.srcjar \
- ))
-
-.PHONY: check-android-test-mock-system-api
-checkapi: check-android-test-mock-system-api
-
-.PHONY: update-android-test-mock-system-api
-update-api: update-android-test-mock-system-api
-
-update-android-test-mock-system-api: $(INTERNAL_PLATFORM_ANDROID_TEST_MOCK_SYSTEM_API_FILE) | $(ACP)
- @echo Copying current.txt
- $(hide) $(ACP) $(INTERNAL_PLATFORM_ANDROID_TEST_MOCK_SYSTEM_API_FILE) $(ANDROID_TEST_MOCK_SYSTEM_API_FILE)
- @echo Copying removed.txt
- $(hide) $(ACP) $(INTERNAL_PLATFORM_ANDROID_TEST_MOCK_SYSTEM_REMOVED_API_FILE) $(ANDROID_TEST_MOCK_SYSTEM_REMOVED_API_FILE)
diff --git a/test-mock/api/apicheck_msg_android_test_mock-system.txt b/test-mock/api/apicheck_msg_android_test_mock-system.txt
deleted file mode 100644
index 3a97117..0000000
--- a/test-mock/api/apicheck_msg_android_test_mock-system.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-
-******************************
-You have tried to change the API from what has been previously approved.
-
-To make these errors go away, you have two choices:
- 1) You can add "@hide" javadoc comments to the methods, etc. listed in the
- errors above.
-
- 2) You can update android-test-mock-current.txt by executing the following command:
- make update-android-test-mock-system-api
-
- To submit the revised android-test-mock-system-current.txt to the main Android repository,
- you will need approval.
-******************************
-
-
-
diff --git a/test-mock/api/apicheck_msg_android_test_mock.txt b/test-mock/api/apicheck_msg_android_test_mock.txt
deleted file mode 100644
index e388935..0000000
--- a/test-mock/api/apicheck_msg_android_test_mock.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-
-******************************
-You have tried to change the API from what has been previously approved.
-
-To make these errors go away, you have two choices:
- 1) You can add "@hide" javadoc comments to the methods, etc. listed in the
- errors above.
-
- 2) You can update android-test-mock-current.txt by executing the following command:
- make update-android-test-mock-api
-
- To submit the revised android-test-mock-current.txt to the main Android repository,
- you will need approval.
-******************************
-
-
-
diff --git a/test-mock/api/android-test-mock-current.txt b/test-mock/api/current.txt
similarity index 100%
rename from test-mock/api/android-test-mock-current.txt
rename to test-mock/api/current.txt
diff --git a/test-mock/api/android-test-mock-removed.txt b/test-mock/api/removed.txt
similarity index 100%
rename from test-mock/api/android-test-mock-removed.txt
rename to test-mock/api/removed.txt
diff --git a/test-mock/api/android-test-mock-system-current.txt b/test-mock/api/system-current.txt
similarity index 100%
rename from test-mock/api/android-test-mock-system-current.txt
rename to test-mock/api/system-current.txt
diff --git a/test-mock/api/android-test-mock-system-removed.txt b/test-mock/api/system-removed.txt
similarity index 100%
rename from test-mock/api/android-test-mock-system-removed.txt
rename to test-mock/api/system-removed.txt
diff --git a/test-mock/api/test-current.txt b/test-mock/api/test-current.txt
new file mode 100644
index 0000000..f1ec000
--- /dev/null
+++ b/test-mock/api/test-current.txt
@@ -0,0 +1,22 @@
+package android.test.mock {
+
+ public class MockContext extends android.content.Context {
+ method public java.lang.String getOpPackageName();
+ }
+
+ public deprecated class MockPackageManager extends android.content.pm.PackageManager {
+ method public boolean arePermissionsIndividuallyControlled();
+ method public java.lang.String getDefaultBrowserPackageNameAsUser(int);
+ method public int getInstallReason(java.lang.String, android.os.UserHandle);
+ method public java.util.List<android.content.pm.ApplicationInfo> getInstalledApplicationsAsUser(int, int);
+ method public java.util.List<android.content.pm.PackageInfo> getInstalledPackagesAsUser(int, int);
+ method public java.lang.String[] getNamesForUids(int[]);
+ method public java.lang.String getPermissionControllerPackageName();
+ method public java.lang.String getServicesSystemSharedLibraryPackageName();
+ method public java.lang.String getSharedSystemSharedLibraryPackageName();
+ method public void grantRuntimePermission(java.lang.String, java.lang.String, android.os.UserHandle);
+ method public void revokeRuntimePermission(java.lang.String, java.lang.String, android.os.UserHandle);
+ }
+
+}
+
diff --git a/test-mock/api/android-test-mock-system-removed.txt b/test-mock/api/test-removed.txt
similarity index 100%
copy from test-mock/api/android-test-mock-system-removed.txt
copy to test-mock/api/test-removed.txt
diff --git a/test-runner/Android.bp b/test-runner/Android.bp
index 2caa6c4..ea615b9 100644
--- a/test-runner/Android.bp
+++ b/test-runner/Android.bp
@@ -16,23 +16,32 @@
// Build the android.test.runner library
// =====================================
-java_library {
+java_sdk_library {
name: "android.test.runner",
- installable: true,
- // Needs to be consistent with the repackaged version of this make target.
- java_version: "1.8",
srcs: ["src/**/*.java"],
errorprone: {
javacflags: ["-Xep:DepAnn:ERROR"],
},
- sdk_version: "current",
libs: [
"android.test.base",
- "android.test.mock.stubs",
+ "android.test.mock",
],
+ stub_only_libs: [
+ "android.test.base",
+ "android.test.mock",
+ ],
+ api_packages: [
+ "android.test",
+ "android.test.suitebuilder",
+ "junit.runner",
+ "junit.textui",
+ ],
+
+ droiddoc_options: ["stubsourceonly"],
+ compile_dex: true
}
// Build the android.test.runner-minus-junit library
@@ -46,8 +55,8 @@
sdk_version: "current",
libs: [
- "android.test.base",
- "android.test.mock.stubs",
+ "android.test.base_static",
+ "android.test.mock",
"junit",
],
}
@@ -70,7 +79,7 @@
sdk_version: "current",
libs: [
- "android.test.base",
+ "android.test.base_static",
],
jarjar_rules: "jarjar-rules.txt",
@@ -78,48 +87,3 @@
java_version: "1.8",
}
-droiddoc {
- name: "android-test-runner-api-stubs-gen-docs",
- srcs: [
- "src/**/*.java",
- ],
- libs: [
- "core-oj",
- "core-libart",
- "framework",
- "android.test.base",
- "android.test.mock",
- ],
- custom_template: "droiddoc-templates-sdk",
- installable: false,
- args: "-stubpackages android.test:" +
- "android.test.suitebuilder:" +
- "junit.runner:" +
- "junit.textui -stubsourceonly -nodocs",
- api_tag_name: "ANDROID_TEST_RUNNER",
- api_filename: "android-test-runner-current.txt",
- removed_api_filename: "android-test-runner-removed.txt",
-}
-
-// Build the android.test.runner.stubs library
-// =========================================
-java_library_static {
- name: "android.test.runner.stubs",
- srcs: [
- ":android-test-runner-api-stubs-gen-docs",
- ],
- libs: [
- "android.test.base.stubs",
- "android.test.mock.stubs",
- ],
- product_variables: {
- pdk: {
- enabled: false,
- },
- unbundled_build: {
- enabled: false,
- },
- },
- sdk_version: "current",
- compile_dex: true,
-}
diff --git a/test-runner/Android.mk b/test-runner/Android.mk
index b70d249..18bde85 100644
--- a/test-runner/Android.mk
+++ b/test-runner/Android.mk
@@ -16,49 +16,5 @@
LOCAL_PATH:= $(call my-dir)
-# For unbundled build we'll use the prebuilt jar from prebuilts/sdk.
-ifeq (,$(TARGET_BUILD_APPS)$(filter true,$(TARGET_BUILD_PDK)))
-
-ANDROID_TEST_RUNNER_API_FILE := $(LOCAL_PATH)/api/android-test-runner-current.txt
-ANDROID_TEST_RUNNER_REMOVED_API_FILE := $(LOCAL_PATH)/api/android-test-runner-removed.txt
-
-full_classes_jar := $(call intermediates-dir-for,JAVA_LIBRARIES,android.test.runner.stubs,,COMMON)/classes.jar
-# Archive a copy of the classes.jar in SDK build.
-$(call dist-for-goals,sdk win_sdk,$(full_classes_jar):android.test.runner.stubs.jar)
-
-# Check that the android.test.runner.stubs library has not changed
-# ================================================================
-
-# Check that the API we're building hasn't changed from the not-yet-released
-# SDK version.
-$(eval $(call check-api, \
- check-android-test-runner-api-current, \
- $(ANDROID_TEST_RUNNER_API_FILE), \
- $(INTERNAL_PLATFORM_ANDROID_TEST_RUNNER_API_FILE), \
- $(ANDROID_TEST_RUNNER_REMOVED_API_FILE), \
- $(INTERNAL_PLATFORM_ANDROID_TEST_RUNNER_REMOVED_API_FILE), \
- -error 2 -error 3 -error 4 -error 5 -error 6 \
- -error 7 -error 8 -error 9 -error 10 -error 11 -error 12 -error 13 -error 14 -error 15 \
- -error 16 -error 17 -error 18 -error 19 -error 20 -error 21 -error 23 -error 24 \
- -error 25 -error 26 -error 27, \
- cat $(LOCAL_PATH)/api/apicheck_msg_android_test_runner.txt, \
- check-android-test-runner-api, \
- $(OUT_DOCS)/android-test-runner-api-stubs-gen-docs-stubs.srcjar \
- ))
-
-.PHONY: check-android-test-runner-api
-checkapi: check-android-test-runner-api
-
-.PHONY: update-android-test-runner-api
-update-api: update-android-test-runner-api
-
-update-android-test-runner-api: $(INTERNAL_PLATFORM_ANDROID_TEST_RUNNER_API_FILE) | $(ACP)
- @echo Copying current.txt
- $(hide) $(ACP) $(INTERNAL_PLATFORM_ANDROID_TEST_RUNNER_API_FILE) $(ANDROID_TEST_RUNNER_API_FILE)
- @echo Copying removed.txt
- $(hide) $(ACP) $(INTERNAL_PLATFORM_ANDROID_TEST_RUNNER_REMOVED_API_FILE) $(ANDROID_TEST_RUNNER_REMOVED_API_FILE)
-
-endif # not TARGET_BUILD_APPS not TARGET_BUILD_PDK=true
-
# additionally, build unit tests in a separate .apk
include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/test-runner/api/apicheck_msg_android_test_runner.txt b/test-runner/api/apicheck_msg_android_test_runner.txt
deleted file mode 100644
index cf2d15e..0000000
--- a/test-runner/api/apicheck_msg_android_test_runner.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-
-******************************
-You have tried to change the API from what has been previously approved.
-
-To make these errors go away, you have two choices:
- 1) You can add "@hide" javadoc comments to the methods, etc. listed in the
- errors above.
-
- 2) You can update android-test-runner-current.txt by executing the following command:
- make update-android-test-runner-api
-
- To submit the revised android-test-runner-current.txt to the main Android repository,
- you will need approval.
-******************************
-
-
-
diff --git a/test-runner/api/android-test-runner-current.txt b/test-runner/api/current.txt
similarity index 100%
rename from test-runner/api/android-test-runner-current.txt
rename to test-runner/api/current.txt
diff --git a/test-runner/api/android-test-runner-removed.txt b/test-runner/api/removed.txt
similarity index 100%
copy from test-runner/api/android-test-runner-removed.txt
copy to test-runner/api/removed.txt
diff --git a/test-runner/api/android-test-runner-removed.txt b/test-runner/api/system-current.txt
similarity index 100%
copy from test-runner/api/android-test-runner-removed.txt
copy to test-runner/api/system-current.txt
diff --git a/test-runner/api/android-test-runner-removed.txt b/test-runner/api/system-removed.txt
similarity index 100%
rename from test-runner/api/android-test-runner-removed.txt
rename to test-runner/api/system-removed.txt
diff --git a/test-runner/api/android-test-runner-removed.txt b/test-runner/api/test-current.txt
similarity index 100%
copy from test-runner/api/android-test-runner-removed.txt
copy to test-runner/api/test-current.txt
diff --git a/test-runner/api/android-test-runner-removed.txt b/test-runner/api/test-removed.txt
similarity index 100%
copy from test-runner/api/android-test-runner-removed.txt
copy to test-runner/api/test-removed.txt
diff --git a/tests/utils/testutils/Android.bp b/tests/utils/testutils/Android.bp
new file mode 100644
index 0000000..4be6534
--- /dev/null
+++ b/tests/utils/testutils/Android.bp
@@ -0,0 +1,30 @@
+//
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+java_library {
+ name: "frameworks-base-testutils",
+
+ srcs: ["java/**/*.java"],
+
+ static_libs: ["android-support-test"],
+
+ libs: [
+ "android.test.runner",
+ "android.test.base",
+ "android.test.mock",
+ "mockito-target-minus-junit4",
+ ],
+}
diff --git a/tests/utils/testutils/Android.mk b/tests/utils/testutils/Android.mk
deleted file mode 100644
index a76616f..0000000
--- a/tests/utils/testutils/Android.mk
+++ /dev/null
@@ -1,35 +0,0 @@
-#
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := frameworks-base-testutils
-LOCAL_MODULE_TAG := tests
-
-LOCAL_SRC_FILES := $(call all-java-files-under,java)
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
- android-support-test
-
-LOCAL_JAVA_LIBRARIES := \
- android.test.runner \
- android.test.base \
- android.test.mock \
- mockito-target-minus-junit4 \
-
-include $(BUILD_STATIC_JAVA_LIBRARY)
diff --git a/tools/stats_log_api_gen/Collation.cpp b/tools/stats_log_api_gen/Collation.cpp
index ebdcdfd..40ee490 100644
--- a/tools/stats_log_api_gen/Collation.cpp
+++ b/tools/stats_log_api_gen/Collation.cpp
@@ -116,6 +116,9 @@
if (field->message_type()->full_name() ==
"android.os.statsd.AttributionNode") {
return JAVA_TYPE_ATTRIBUTION_CHAIN;
+ } else if (field->message_type()->full_name() ==
+ "android.os.statsd.KeyValuePair") {
+ return JAVA_TYPE_KEY_VALUE_PAIR;
} else {
return JAVA_TYPE_OBJECT;
}
@@ -181,6 +184,16 @@
expectedNumber++;
}
+ // Skips the key value pair atom.
+ for (map<int, const FieldDescriptor *>::const_iterator it = fields.begin();
+ it != fields.end(); it++) {
+ const FieldDescriptor *field = it->second;
+ java_type_t javaType = java_type(field);
+ if (javaType == JAVA_TYPE_KEY_VALUE_PAIR) {
+ return 0;
+ }
+ }
+
// Check that only allowed types are present. Remove any invalid ones.
for (map<int, const FieldDescriptor *>::const_iterator it = fields.begin();
it != fields.end(); it++) {
diff --git a/tools/stats_log_api_gen/Collation.h b/tools/stats_log_api_gen/Collation.h
index 5d2c302..ccdd145 100644
--- a/tools/stats_log_api_gen/Collation.h
+++ b/tools/stats_log_api_gen/Collation.h
@@ -48,6 +48,7 @@
JAVA_TYPE_DOUBLE = 6,
JAVA_TYPE_STRING = 7,
JAVA_TYPE_ENUM = 8,
+ JAVA_TYPE_KEY_VALUE_PAIR = 9,
JAVA_TYPE_OBJECT = -1,
JAVA_TYPE_BYTE_ARRAY = -2,
diff --git a/vr/Android.bp b/vr/Android.bp
deleted file mode 100644
index 775ec96..0000000
--- a/vr/Android.bp
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright (C) 2017 The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Library to perform dlopen on the actual shared library.
-cc_library_shared {
- name: "libdvr_loader",
- owner: "google",
- srcs: ["dvr_library_loader.cpp"],
- cflags: [
- "-Wall",
- "-Werror",
- ],
-}
-
-// Java platform library for vr stuff.
-java_library {
- name: "com.google.vr.platform",
- installable: true,
- owner: "google",
- required: [
- "libdvr_loader",
- "libdvr",
- ],
- srcs: ["java/**/*.java"],
-}
-
-prebuilt_etc_xml {
- name: "com.google.vr.platform.xml",
- src: "com.google.vr.platform.xml",
-}
diff --git a/vr/com.google.vr.platform.xml b/vr/com.google.vr.platform.xml
deleted file mode 100644
index 952b476..0000000
--- a/vr/com.google.vr.platform.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 The Android Open Source Project
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-
-<permissions>
- <library name="com.google.vr.platform"
- file="/system/framework/com.google.vr.platform.jar" />
-</permissions>
diff --git a/vr/dvr_library_loader.cpp b/vr/dvr_library_loader.cpp
deleted file mode 100644
index 0b4298a..0000000
--- a/vr/dvr_library_loader.cpp
+++ /dev/null
@@ -1,25 +0,0 @@
-#include <dlfcn.h>
-#include <jni.h>
-
-#include <string>
-
-extern "C" {
-
-JNIEXPORT jlong JNICALL
-Java_com_google_vr_platform_Dvr_nativeLoadLibrary(
- JNIEnv* env, jclass, jstring java_library) {
- if (!java_library)
- return 0;
-
- // Convert the Java String object to a C++ null-terminated string.
- const char* data = env->GetStringUTFChars(java_library, NULL);
- size_t size = env->GetStringUTFLength(java_library);
- std::string library(data, size);
- env->ReleaseStringUTFChars(java_library, data);
-
- // Return the handle to the requested library.
- return reinterpret_cast<jlong>(
- dlopen(library.c_str(), RTLD_NOW | RTLD_LOCAL));
-}
-
-} // extern "C"
diff --git a/vr/java/com/google/vr/platform/DeviceInfo.java b/vr/java/com/google/vr/platform/DeviceInfo.java
deleted file mode 100644
index 6a4617d..0000000
--- a/vr/java/com/google/vr/platform/DeviceInfo.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package com.google.vr.platform;
-
-import android.annotation.UnsupportedAppUsage;
-import android.os.SystemProperties;
-
-/**
- * Class to get information about the vr device.
- * @hide
- */
-public class DeviceInfo {
-
- private static final String VR_MODE_BOOT = "ro.boot.vr";
-
- /**
- * Returns true if this device boots directly in VR mode.
- */
- @UnsupportedAppUsage
- public static boolean getVrBoot() {
- return SystemProperties.getBoolean(VR_MODE_BOOT, false);
- }
-}
diff --git a/vr/java/com/google/vr/platform/Dvr.java b/vr/java/com/google/vr/platform/Dvr.java
deleted file mode 100644
index 41dcd87..0000000
--- a/vr/java/com/google/vr/platform/Dvr.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package com.google.vr.platform;
-
-import android.annotation.UnsupportedAppUsage;
-
-/**
- * Class to load the dvr api.
- * @hide
- */
-public class Dvr {
- /**
- * Opens a shared library containing the dvr api and returns the handle to it.
- *
- * @return A Long object describing the handle returned by dlopen.
- */
- @UnsupportedAppUsage
- public static Long loadLibrary() {
- // Load a thin JNI library that runs dlopen on request.
- System.loadLibrary("dvr_loader");
-
- // Performs dlopen on the library and returns the handle.
- return nativeLoadLibrary("libdvr.so");
- }
-
- private static native long nativeLoadLibrary(String library);
-}