diff options
189 files changed, 1930 insertions, 1521 deletions
diff --git a/ApiDocs.bp b/ApiDocs.bp index fbc5c9dc817d..edbd1ae79c48 100644 --- a/ApiDocs.bp +++ b/ApiDocs.bp @@ -101,7 +101,7 @@ droidstubs { arg_files: [ "core/res/AndroidManifest.xml", ], - args: metalava_framework_docs_args + " --show-annotation android.annotation.SystemApi\\(client=android.annotation.SystemApi.Client.PRIVILEGED_APPS,process=android.annotation.SystemApi.Process.ALL\\) ", + args: metalava_framework_docs_args + " --show-annotation android.annotation.SystemApi\\(client=android.annotation.SystemApi.Client.PRIVILEGED_APPS\\) ", write_sdk_values: true, } diff --git a/apex/blobstore/framework/java/android/app/blob/BlobStoreManager.java b/apex/blobstore/framework/java/android/app/blob/BlobStoreManager.java index 3f254c043578..0647d8a18e49 100644 --- a/apex/blobstore/framework/java/android/app/blob/BlobStoreManager.java +++ b/apex/blobstore/framework/java/android/app/blob/BlobStoreManager.java @@ -307,8 +307,8 @@ public class BlobStoreManager { * {@link #getRemainingLeaseQuotaBytes()} before trying to * acquire a lease. * - * @see {@link #acquireLease(BlobHandle, int)} - * @see {@link #acquireLease(BlobHandle, CharSequence)} + * @see #acquireLease(BlobHandle, int) + * @see #acquireLease(BlobHandle, CharSequence) */ public void acquireLease(@NonNull BlobHandle blobHandle, @IdRes int descriptionResId, @CurrentTimeMillisLong long leaseExpiryTimeMillis) throws IOException { @@ -367,8 +367,8 @@ public class BlobStoreManager { * {@link #getRemainingLeaseQuotaBytes()} before trying to * acquire a lease. * - * @see {@link #acquireLease(BlobHandle, int, long)} - * @see {@link #acquireLease(BlobHandle, CharSequence)} + * @see #acquireLease(BlobHandle, int, long) + * @see #acquireLease(BlobHandle, CharSequence) */ public void acquireLease(@NonNull BlobHandle blobHandle, @NonNull CharSequence description, @CurrentTimeMillisLong long leaseExpiryTimeMillis) throws IOException { @@ -420,8 +420,8 @@ public class BlobStoreManager { * {@link #getRemainingLeaseQuotaBytes()} before trying to * acquire a lease. * - * @see {@link #acquireLease(BlobHandle, int, long)} - * @see {@link #acquireLease(BlobHandle, CharSequence, long)} + * @see #acquireLease(BlobHandle, int, long) + * @see #acquireLease(BlobHandle, CharSequence, long) */ public void acquireLease(@NonNull BlobHandle blobHandle, @IdRes int descriptionResId) throws IOException { @@ -467,8 +467,8 @@ public class BlobStoreManager { * {@link #getRemainingLeaseQuotaBytes()} before trying to * acquire a lease. * - * @see {@link #acquireLease(BlobHandle, int)} - * @see {@link #acquireLease(BlobHandle, CharSequence, long)} + * @see #acquireLease(BlobHandle, int) + * @see #acquireLease(BlobHandle, CharSequence, long) */ public void acquireLease(@NonNull BlobHandle blobHandle, @NonNull CharSequence description) throws IOException { diff --git a/apex/jobscheduler/framework/java/android/app/job/JobScheduler.java b/apex/jobscheduler/framework/java/android/app/job/JobScheduler.java index abf78c67fa6f..231263579088 100644 --- a/apex/jobscheduler/framework/java/android/app/job/JobScheduler.java +++ b/apex/jobscheduler/framework/java/android/app/job/JobScheduler.java @@ -41,7 +41,7 @@ import java.util.List; * system will execute this job on your application's {@link android.app.job.JobService}. * You identify the service component that implements the logic for your job when you * construct the JobInfo using - * {@link android.app.job.JobInfo.Builder#JobInfo.Builder(int,android.content.ComponentName)}. + * {@link android.app.job.JobInfo.Builder#Builder(int,android.content.ComponentName)}. * </p> * <p> * The framework will be intelligent about when it executes jobs, and attempt to batch @@ -153,7 +153,7 @@ public abstract class JobScheduler { * method is ignored. * * @param jobId unique identifier for the job to be canceled, as supplied to - * {@link JobInfo.Builder#JobInfo.Builder(int, android.content.ComponentName) + * {@link JobInfo.Builder#Builder(int, android.content.ComponentName) * JobInfo.Builder(int, android.content.ComponentName)}. */ public abstract void cancel(int jobId); diff --git a/apex/media/framework/Android.bp b/apex/media/framework/Android.bp index 48e7ec760f97..a1c886a26562 100644 --- a/apex/media/framework/Android.bp +++ b/apex/media/framework/Android.bp @@ -49,6 +49,7 @@ java_library { "com.android.media", "test_com.android.media", ], + min_sdk_version: "29", } filegroup { diff --git a/apex/sdkextensions/Android.bp b/apex/sdkextensions/Android.bp index fc26e0833b1a..dbb5bd3d660f 100644 --- a/apex/sdkextensions/Android.bp +++ b/apex/sdkextensions/Android.bp @@ -22,6 +22,7 @@ apex { binaries: [ "derive_sdk" ], prebuilts: [ "cur_sdkinfo" ], manifest: "manifest.json", + min_sdk_version: "current", } apex_defaults { diff --git a/apex/sdkextensions/derive_sdk/Android.bp b/apex/sdkextensions/derive_sdk/Android.bp index cf49902d9978..c419b51c9b9b 100644 --- a/apex/sdkextensions/derive_sdk/Android.bp +++ b/apex/sdkextensions/derive_sdk/Android.bp @@ -20,13 +20,13 @@ cc_defaults { ], proto: { type: "lite", + static: true, }, sdk_version: "current", stl: "c++_static", shared_libs: [ "liblog" ], static_libs: [ "libbase_ndk", - "libprotobuf-cpp-lite-ndk", ], } @@ -45,7 +45,8 @@ cc_binary { compile_multilib: "prefer32", stem: "derive_sdk", apex_available: [ "test_com.android.sdkext" ], - visibility: [ "//frameworks/base/apex/sdkextensions/testing" ] + visibility: [ "//frameworks/base/apex/sdkextensions/testing" ], + installable: false, } prebuilt_etc { diff --git a/cmds/statsd/src/atoms.proto b/cmds/statsd/src/atoms.proto index 9a73fddebad4..3017ec024151 100644 --- a/cmds/statsd/src/atoms.proto +++ b/cmds/statsd/src/atoms.proto @@ -9344,6 +9344,8 @@ message PackageInstallerV2Reported { // Return_code 1 indicates success. // For full list, see frameworks/base/core/java/android/content/pm/PackageManager.java optional int32 return_code = 4; + // Total size of the APKs installed for this package + optional int64 apks_size_bytes = 5; } /** diff --git a/core/java/android/app/Activity.java b/core/java/android/app/Activity.java index 17720a34c424..bfae632593fb 100644 --- a/core/java/android/app/Activity.java +++ b/core/java/android/app/Activity.java @@ -3743,7 +3743,6 @@ public class Activity extends ContextThemeWrapper * To receive this callback, you must return true from onKeyDown for the current * event stream. * - * @see KeyEvent.Callback#onKeyLongPress() * @see KeyEvent.Callback#onKeyLongPress(int, KeyEvent) */ public boolean onKeyLongPress(int keyCode, KeyEvent event) { diff --git a/core/java/android/app/ActivityManager.java b/core/java/android/app/ActivityManager.java index 49cc621cf2b2..90670691fdfb 100644 --- a/core/java/android/app/ActivityManager.java +++ b/core/java/android/app/ActivityManager.java @@ -2450,8 +2450,7 @@ public class ActivityManager { * has access to it. * * @see ActivityOptions#setLaunchDisplayId(int) - * @see android.view.Display.FLAG_PRIVATE - * @see android.view.Display.TYPE_VIRTUAL + * @see android.view.Display#FLAG_PRIVATE * * @param context Source context, from which an activity will be started. * @param displayId Target display id. diff --git a/core/java/android/app/AppOpsManager.java b/core/java/android/app/AppOpsManager.java index 33bacf0d1146..4d21c8d1a343 100644 --- a/core/java/android/app/AppOpsManager.java +++ b/core/java/android/app/AppOpsManager.java @@ -6858,10 +6858,7 @@ public class AppOpsManager { * @param ops The operations to watch. * @param callback Where to report changes. * - * @see #isOperationActive * @see #stopWatchingActive - * @see #startOp(int, int, String, boolean, String, String) - * @see #finishOp(int, int, String, String) */ // TODO: Uncomment below annotation once b/73559440 is fixed // @RequiresPermission(value=Manifest.permission.WATCH_APPOPS, conditional=true) @@ -6909,10 +6906,7 @@ public class AppOpsManager { * long running and it has a clear start and stop delimiters. Unregistering a * non-registered callback has no effect. * - * @see #isOperationActive * @see #startWatchingActive - * @see #startOp(int, int, String, boolean, String, String) - * @see #finishOp(int, int, String, String) */ public void stopWatchingActive(@NonNull OnOpActiveChangedListener callback) { synchronized (mActiveWatchers) { diff --git a/core/java/android/app/ITaskStackListener.aidl b/core/java/android/app/ITaskStackListener.aidl index 1a619bd4475a..2d06ee8d06bc 100644 --- a/core/java/android/app/ITaskStackListener.aidl +++ b/core/java/android/app/ITaskStackListener.aidl @@ -205,4 +205,15 @@ oneway interface ITaskStackListener { * @param {@code true} if the task got focus, {@code false} if it lost it. */ void onTaskFocusChanged(int taskId, boolean focused); + + /** + * Called when a task changes its requested orientation. It is different from {@link + * #onActivityRequestedOrientationChanged(int, int)} in the sense that this method is called + * when a task changes requested orientation due to activity launch, dimiss or reparenting. + * + * @param taskId id of the task. + * @param requestedOrientation the new requested orientation of this task as screen orientations + * in {@link android.content.pm.ActivityInfo}. + */ + void onTaskRequestedOrientationChanged(int taskId, int requestedOrientation); } diff --git a/core/java/android/app/Instrumentation.java b/core/java/android/app/Instrumentation.java index 818a12145932..e233adeb3f65 100644 --- a/core/java/android/app/Instrumentation.java +++ b/core/java/android/app/Instrumentation.java @@ -732,7 +732,7 @@ public class Instrumentation { * a non-null value if the intent needs to be intercepted. * * <p> Whenever a new activity is started, this method will be called on instances created - * using {@link #Instrumentation.ActivityMonitor()} to check if there is a match. In case + * using {@link #ActivityMonitor()} to check if there is a match. In case * of a match, the activity start will be blocked and the returned result will be used. * * @param intent The intent used for starting the activity. diff --git a/core/java/android/app/Notification.java b/core/java/android/app/Notification.java index f26b136da3a8..a033b82f48cd 100644 --- a/core/java/android/app/Notification.java +++ b/core/java/android/app/Notification.java @@ -3513,7 +3513,7 @@ public class Notification implements Parcelable } /** - * @deprecated use {@link Notification.Builder#Notification.Builder(Context, String)} + * @deprecated use {@link #Builder(Context, String)} * instead. All posted Notifications must specify a NotificationChannel Id. */ @Deprecated @@ -3631,7 +3631,7 @@ public class Notification implements Parcelable * @param shortcutId the {@link ShortcutInfo#getId() id} of the shortcut this notification * is linked to * - * @see Notification.BubbleMetadata.Builder#Builder(String) + * @see BubbleMetadata.Builder#Builder(String) */ @NonNull public Builder setShortcutId(String shortcutId) { @@ -5993,7 +5993,7 @@ public class Notification implements Parcelable * metadata matches the shortcutId set on the notification builder, if one was set. * If the shortcutId's were specified but do not match, an exception is thrown here. * - * @see Notification.BubbleMetadata.Builder#Builder(String) + * @see BubbleMetadata.Builder#Builder(String) * @see #setShortcutId(String) */ @NonNull @@ -7297,7 +7297,7 @@ public class Notification implements Parcelable * Should be unique amongst all individuals in the conversation, and should be * consistent during re-posts of the notification. * - * @see Message#Notification.MessagingStyle.Message(CharSequence, long, CharSequence) + * @see Message#Message(CharSequence, long, CharSequence) * * @return this object for method chaining * @@ -7317,7 +7317,7 @@ public class Notification implements Parcelable * Should be <code>null</code> for messages by the current user, in which case * the platform will insert the user set in {@code MessagingStyle(Person)}. * - * @see Message#Notification.MessagingStyle.Message(CharSequence, long, CharSequence) + * @see Message#Message(CharSequence, long, CharSequence) * * @return this object for method chaining */ diff --git a/core/java/android/app/NotificationManager.java b/core/java/android/app/NotificationManager.java index d6df400f86b6..eef9c022fda8 100644 --- a/core/java/android/app/NotificationManager.java +++ b/core/java/android/app/NotificationManager.java @@ -368,7 +368,7 @@ public class NotificationManager { * </p> * </p> * - * @see {@link #addAutomaticZenRule(AutomaticZenRule)} + * @see #addAutomaticZenRule(AutomaticZenRule) */ @SdkConstant(SdkConstant.SdkConstantType.ACTIVITY_INTENT_ACTION) public static final String ACTION_AUTOMATIC_ZEN_RULE = diff --git a/core/java/android/app/ResourcesManager.java b/core/java/android/app/ResourcesManager.java index 47ccc2f0badb..106f8ac92d05 100644 --- a/core/java/android/app/ResourcesManager.java +++ b/core/java/android/app/ResourcesManager.java @@ -1109,10 +1109,16 @@ public class ResourcesManager { Slog.v(TAG, "Changing resources " + resourcesImpl + " config to: " + config); } - int displayId = key.mDisplayId; - final boolean hasOverrideConfiguration = key.hasOverrideConfiguration(); + tmpConfig.setTo(config); + // Apply the override configuration before setting the display adjustments to ensure that + // the process config does not override activity display adjustments. + final boolean hasOverrideConfiguration = key.hasOverrideConfiguration(); + if (hasOverrideConfiguration) { + tmpConfig.updateFrom(key.mOverrideConfiguration); + } + // Get new DisplayMetrics based on the DisplayAdjustments given to the ResourcesImpl. Update // a copy if the CompatibilityInfo changed, because the ResourcesImpl object will handle the // update internally. @@ -1121,17 +1127,23 @@ public class ResourcesManager { daj = new DisplayAdjustments(daj); daj.setCompatibilityInfo(compat); } + + final int displayId = key.mDisplayId; if (displayId == Display.DEFAULT_DISPLAY) { - daj.setConfiguration(config); + daj.setConfiguration(tmpConfig); } DisplayMetrics dm = getDisplayMetrics(displayId, daj); if (displayId != Display.DEFAULT_DISPLAY) { applyNonDefaultDisplayMetricsToConfiguration(dm, tmpConfig); - } - if (hasOverrideConfiguration) { - tmpConfig.updateFrom(key.mOverrideConfiguration); + // Re-apply the override configuration to ensure that configuration contexts based on + // a display context (ex: createDisplayContext().createConfigurationContext()) have the + // correct override. + if (hasOverrideConfiguration) { + tmpConfig.updateFrom(key.mOverrideConfiguration); + } } + resourcesImpl.updateConfiguration(tmpConfig, dm, compat); } diff --git a/core/java/android/app/TaskStackListener.java b/core/java/android/app/TaskStackListener.java index bfa91aabc6f5..5d8daf88a8de 100644 --- a/core/java/android/app/TaskStackListener.java +++ b/core/java/android/app/TaskStackListener.java @@ -195,4 +195,8 @@ public abstract class TaskStackListener extends ITaskStackListener.Stub { @Override public void onTaskFocusChanged(int taskId, boolean focused) { } + + @Override + public void onTaskRequestedOrientationChanged(int taskId, int requestedOrientation) { + } } diff --git a/core/java/android/app/backup/BackupManager.java b/core/java/android/app/backup/BackupManager.java index beb444997fc7..3bc043ee0912 100644 --- a/core/java/android/app/backup/BackupManager.java +++ b/core/java/android/app/backup/BackupManager.java @@ -805,7 +805,7 @@ public class BackupManager { * has a work profile that was restored from another work profile with serial number * {@code ancestralSerialNumber}. * - * @see UserManager#getSerialNumberForUser(UserHandle) + * @see android.os.UserManager#getSerialNumberForUser(UserHandle) */ @Nullable public UserHandle getUserForAncestralSerialNumber(long ancestralSerialNumber) { diff --git a/core/java/android/app/role/RoleManager.java b/core/java/android/app/role/RoleManager.java index 917eeb84c7a5..253c73796caf 100644 --- a/core/java/android/app/role/RoleManager.java +++ b/core/java/android/app/role/RoleManager.java @@ -103,8 +103,6 @@ public final class RoleManager { /** * The name of the emergency role - * - * @see android.telephony.TelephonyManager#ACTION_EMERGENCY_ASSISTANCE */ public static final String ROLE_EMERGENCY = "android.app.role.EMERGENCY"; diff --git a/core/java/android/content/Context.java b/core/java/android/content/Context.java index 09c684971549..8472144a92cf 100644 --- a/core/java/android/content/Context.java +++ b/core/java/android/content/Context.java @@ -3639,7 +3639,6 @@ public abstract class Context { * @see android.telephony.CarrierConfigManager * @see #EUICC_SERVICE * @see android.telephony.euicc.EuiccManager - * @see #MMS_SERVICE * @see android.telephony.MmsManager * @see #INPUT_METHOD_SERVICE * @see android.view.inputmethod.InputMethodManager diff --git a/core/java/android/content/pm/PackageManager.java b/core/java/android/content/pm/PackageManager.java index 539e097504d6..d06a69caf837 100644 --- a/core/java/android/content/pm/PackageManager.java +++ b/core/java/android/content/pm/PackageManager.java @@ -7948,7 +7948,6 @@ public abstract class PackageManager { * * @return true if the drawable represents the default activity icon, false otherwise * @see #getDefaultActivityIcon() - * @see PackageItemInfo#loadDefaultIcon(PackageManager) * @see #getActivityIcon * @see LauncherActivityInfo#getIcon(int) */ diff --git a/core/java/android/net/Ikev2VpnProfile.java b/core/java/android/net/Ikev2VpnProfile.java index afa63039b6f7..836624beb3b2 100644 --- a/core/java/android/net/Ikev2VpnProfile.java +++ b/core/java/android/net/Ikev2VpnProfile.java @@ -803,7 +803,7 @@ public final class Ikev2VpnProfile extends PlatformVpnProfile { * @param isMetered {@code true} if the VPN network should be treated as metered regardless * of underlying network meteredness. Defaults to {@code true}. * @return this {@link Builder} object to facilitate chaining of method calls - * @see NetworkCapabilities.NET_CAPABILITY_NOT_METERED + * @see NetworkCapabilities#NET_CAPABILITY_NOT_METERED */ @NonNull public Builder setMetered(boolean isMetered) { diff --git a/core/java/android/net/VpnService.java b/core/java/android/net/VpnService.java index 63e510733907..9c2c5b839302 100644 --- a/core/java/android/net/VpnService.java +++ b/core/java/android/net/VpnService.java @@ -836,7 +836,7 @@ public class VpnService extends Service { * @param isMetered {@code true} if VPN network should be treated as metered regardless of * underlying network meteredness * @return this {@link Builder} object to facilitate chaining method calls - * @see #setUnderlyingNetworks(Networks[]) + * @see #setUnderlyingNetworks(Network[]) * @see ConnectivityManager#isActiveNetworkMetered() */ @NonNull diff --git a/core/java/android/os/StrictMode.java b/core/java/android/os/StrictMode.java index e8af56478230..02b822a99f2a 100644 --- a/core/java/android/os/StrictMode.java +++ b/core/java/android/os/StrictMode.java @@ -1022,7 +1022,6 @@ public final class StrictMode { * behaviors or empty states. Instead, apps should store data needed * while a user is locked under device protected storage areas. * - * @see Context#createCredentialProtectedStorageContext() * @see Context#createDeviceProtectedStorageContext() */ public @NonNull Builder detectCredentialProtectedWhileLocked() { diff --git a/core/java/android/os/VibrationEffect.java b/core/java/android/os/VibrationEffect.java index 1fef07156310..fd7cdda3808a 100644 --- a/core/java/android/os/VibrationEffect.java +++ b/core/java/android/os/VibrationEffect.java @@ -64,21 +64,16 @@ public abstract class VibrationEffect implements Parcelable { /** * A click effect. Use this effect as a baseline, as it's the most common type of click effect. - * - * @see #get(int) */ public static final int EFFECT_CLICK = Effect.CLICK; /** * A double click effect. - * - * @see #get(int) */ public static final int EFFECT_DOUBLE_CLICK = Effect.DOUBLE_CLICK; /** * A tick effect. This effect is less strong compared to {@link #EFFECT_CLICK}. - * @see #get(int) */ public static final int EFFECT_TICK = Effect.TICK; @@ -102,7 +97,6 @@ public abstract class VibrationEffect implements Parcelable { /** * A heavy click effect. This effect is stronger than {@link #EFFECT_CLICK}. - * @see #get(int) */ public static final int EFFECT_HEAVY_CLICK = Effect.HEAVY_CLICK; diff --git a/core/java/android/os/strictmode/CredentialProtectedWhileLockedViolation.java b/core/java/android/os/strictmode/CredentialProtectedWhileLockedViolation.java index 12503f650ab5..89cd43003529 100644 --- a/core/java/android/os/strictmode/CredentialProtectedWhileLockedViolation.java +++ b/core/java/android/os/strictmode/CredentialProtectedWhileLockedViolation.java @@ -28,7 +28,6 @@ import android.content.Context; * store data needed while a user is locked under device protected storage * areas. * - * @see Context#createCredentialProtectedStorageContext() * @see Context#createDeviceProtectedStorageContext() */ public final class CredentialProtectedWhileLockedViolation extends Violation { diff --git a/core/java/android/provider/CalendarContract.java b/core/java/android/provider/CalendarContract.java index 9c6c92ace483..17fae1cafe62 100644 --- a/core/java/android/provider/CalendarContract.java +++ b/core/java/android/provider/CalendarContract.java @@ -797,7 +797,6 @@ public final class CalendarContract { * to changes. * * @see DevicePolicyManager#getCrossProfileCalendarPackages(ComponentName) - * @see Settings.Secure#CROSS_PROFILE_CALENDAR_ENABLED */ @NonNull public static final Uri ENTERPRISE_CONTENT_URI = @@ -1796,7 +1795,6 @@ public final class CalendarContract { * to changes. * * @see DevicePolicyManager#getCrossProfileCalendarPackages(ComponentName) - * @see Settings.Secure#CROSS_PROFILE_CALENDAR_ENABLED */ @NonNull public static final Uri ENTERPRISE_CONTENT_URI = @@ -2010,7 +2008,6 @@ public final class CalendarContract { * {@link DevicePolicyManager#setCrossProfileCalendarPackages(ComponentName, Set)}. * * @see DevicePolicyManager#getCrossProfileCalendarPackages(ComponentName) - * @see Settings.Secure#CROSS_PROFILE_CALENDAR_ENABLED */ @NonNull public static final Uri ENTERPRISE_CONTENT_URI = diff --git a/core/java/android/provider/DocumentsContract.java b/core/java/android/provider/DocumentsContract.java index a10a456bd6a6..75840a54e090 100644 --- a/core/java/android/provider/DocumentsContract.java +++ b/core/java/android/provider/DocumentsContract.java @@ -24,7 +24,6 @@ import android.annotation.Nullable; import android.annotation.SystemApi; import android.annotation.TestApi; import android.compat.annotation.UnsupportedAppUsage; -import android.content.ContentInterface; import android.content.ContentProvider; import android.content.ContentResolver; import android.content.Context; @@ -251,14 +250,14 @@ public final class DocumentsContract { * Get string array identifies the type or types of metadata returned * using DocumentsContract#getDocumentMetadata. * - * @see #getDocumentMetadata(ContentInterface, Uri) + * @see #getDocumentMetadata(ContentResolver, Uri) */ public static final String METADATA_TYPES = "android:documentMetadataTypes"; /** * Get Exif information using DocumentsContract#getDocumentMetadata. * - * @see #getDocumentMetadata(ContentInterface, Uri) + * @see #getDocumentMetadata(ContentResolver, Uri) */ public static final String METADATA_EXIF = "android:documentExif"; @@ -266,7 +265,7 @@ public final class DocumentsContract { * Get total count of all documents currently stored under the given * directory tree. Only valid for {@link Document#MIME_TYPE_DIR} documents. * - * @see #getDocumentMetadata(ContentInterface, Uri) + * @see #getDocumentMetadata(ContentResolver, Uri) */ public static final String METADATA_TREE_COUNT = "android:metadataTreeCount"; @@ -274,7 +273,7 @@ public final class DocumentsContract { * Get total size of all documents currently stored under the given * directory tree. Only valid for {@link Document#MIME_TYPE_DIR} documents. * - * @see #getDocumentMetadata(ContentInterface, Uri) + * @see #getDocumentMetadata(ContentResolver, Uri) */ public static final String METADATA_TREE_SIZE = "android:metadataTreeSize"; @@ -405,7 +404,7 @@ public final class DocumentsContract { * Flag indicating that a document can be represented as a thumbnail. * * @see #COLUMN_FLAGS - * @see DocumentsContract#getDocumentThumbnail(ContentInterface, Uri, + * @see DocumentsContract#getDocumentThumbnail(ContentResolver, Uri, * Point, CancellationSignal) * @see DocumentsProvider#openDocumentThumbnail(String, Point, * android.os.CancellationSignal) @@ -431,7 +430,7 @@ public final class DocumentsContract { * Flag indicating that a document is deletable. * * @see #COLUMN_FLAGS - * @see DocumentsContract#deleteDocument(ContentInterface, Uri) + * @see DocumentsContract#deleteDocument(ContentResolver, Uri) * @see DocumentsProvider#deleteDocument(String) */ public static final int FLAG_SUPPORTS_DELETE = 1 << 2; @@ -469,7 +468,7 @@ public final class DocumentsContract { * Flag indicating that a document can be renamed. * * @see #COLUMN_FLAGS - * @see DocumentsContract#renameDocument(ContentInterface, Uri, String) + * @see DocumentsContract#renameDocument(ContentResolver, Uri, String) * @see DocumentsProvider#renameDocument(String, String) */ public static final int FLAG_SUPPORTS_RENAME = 1 << 6; @@ -479,7 +478,7 @@ public final class DocumentsContract { * within the same document provider. * * @see #COLUMN_FLAGS - * @see DocumentsContract#copyDocument(ContentInterface, Uri, Uri) + * @see DocumentsContract#copyDocument(ContentResolver, Uri, Uri) * @see DocumentsProvider#copyDocument(String, String) */ public static final int FLAG_SUPPORTS_COPY = 1 << 7; @@ -489,7 +488,7 @@ public final class DocumentsContract { * within the same document provider. * * @see #COLUMN_FLAGS - * @see DocumentsContract#moveDocument(ContentInterface, Uri, Uri, Uri) + * @see DocumentsContract#moveDocument(ContentResolver, Uri, Uri, Uri) * @see DocumentsProvider#moveDocument(String, String, String) */ public static final int FLAG_SUPPORTS_MOVE = 1 << 8; @@ -513,7 +512,7 @@ public final class DocumentsContract { * Flag indicating that a document can be removed from a parent. * * @see #COLUMN_FLAGS - * @see DocumentsContract#removeDocument(ContentInterface, Uri, Uri) + * @see DocumentsContract#removeDocument(ContentResolver, Uri, Uri) * @see DocumentsProvider#removeDocument(String, String) */ public static final int FLAG_SUPPORTS_REMOVE = 1 << 10; @@ -549,7 +548,7 @@ public final class DocumentsContract { * using DocumentsContract#getDocumentMetadata * * @see #COLUMN_FLAGS - * @see DocumentsContract#getDocumentMetadata(ContentInterface, Uri) + * @see DocumentsContract#getDocumentMetadata(ContentResolver, Uri) */ public static final int FLAG_SUPPORTS_METADATA = 1 << 14; @@ -750,7 +749,7 @@ public final class DocumentsContract { * Flag indicating that this root can be ejected. * * @see #COLUMN_FLAGS - * @see DocumentsContract#ejectRoot(ContentInterface, Uri) + * @see DocumentsContract#ejectRoot(ContentResolver, Uri) * @see DocumentsProvider#ejectRoot(String) */ public static final int FLAG_SUPPORTS_EJECT = 1 << 5; diff --git a/core/java/android/service/autofill/CustomDescription.java b/core/java/android/service/autofill/CustomDescription.java index c28d2bbe30ea..e274460cdf03 100644 --- a/core/java/android/service/autofill/CustomDescription.java +++ b/core/java/android/service/autofill/CustomDescription.java @@ -262,7 +262,7 @@ public final class CustomDescription implements Parcelable { * * @param condition condition used to trigger the updates. * @param updates actions to be applied to the - * {@link #CustomDescription.Builder(RemoteViews) template presentation} when the condition + * {@link #Builder(RemoteViews) template presentation} when the condition * is satisfied. * * @return this builder diff --git a/core/java/android/service/autofill/ImageTransformation.java b/core/java/android/service/autofill/ImageTransformation.java index 12376e85e63e..974f0ead9d19 100644 --- a/core/java/android/service/autofill/ImageTransformation.java +++ b/core/java/android/service/autofill/ImageTransformation.java @@ -123,7 +123,7 @@ public final class ImageTransformation extends InternalTransformation implements * {@link RemoteViews presentation} must contain a {@link ImageView} child with that id. * * @deprecated use - * {@link #ImageTransformation.Builder(AutofillId, Pattern, int, CharSequence)} instead. + * {@link #Builder(AutofillId, Pattern, int, CharSequence)} instead. */ @Deprecated public Builder(@NonNull AutofillId id, @NonNull Pattern regex, @DrawableRes int resId) { diff --git a/core/java/android/service/autofill/InlineSuggestionRenderService.java b/core/java/android/service/autofill/InlineSuggestionRenderService.java index 19961e5efc6a..6c22b1936d74 100644 --- a/core/java/android/service/autofill/InlineSuggestionRenderService.java +++ b/core/java/android/service/autofill/InlineSuggestionRenderService.java @@ -144,22 +144,24 @@ public abstract class InlineSuggestionRenderService extends Service { final SurfaceControlViewHost host = new SurfaceControlViewHost(this, getDisplay(), hostInputToken); host.setView(suggestionRoot, lp); - suggestionRoot.setOnClickListener((v) -> { + + // Set the suggestion view to be non-focusable so that if its background is set to a + // ripple drawable, the ripple won't be shown initially. + suggestionView.setFocusable(false); + suggestionView.setOnClickListener((v) -> { try { - if (suggestionView.hasOnClickListeners()) { - suggestionView.callOnClick(); - } callback.onClick(); } catch (RemoteException e) { Log.w(TAG, "RemoteException calling onClick()"); } }); - - suggestionRoot.setOnLongClickListener((v) -> { + final View.OnLongClickListener onLongClickListener = + suggestionView.getOnLongClickListener(); + suggestionView.setOnLongClickListener((v) -> { + if (onLongClickListener != null) { + onLongClickListener.onLongClick(v); + } try { - if (suggestionView.hasOnLongClickListeners()) { - suggestionView.performLongClick(); - } callback.onLongClick(); } catch (RemoteException e) { Log.w(TAG, "RemoteException calling onLongClick()"); diff --git a/core/java/android/service/autofill/InlineSuggestionRoot.java b/core/java/android/service/autofill/InlineSuggestionRoot.java index 653e513f13d8..c879653859d8 100644 --- a/core/java/android/service/autofill/InlineSuggestionRoot.java +++ b/core/java/android/service/autofill/InlineSuggestionRoot.java @@ -52,13 +52,8 @@ public class InlineSuggestionRoot extends FrameLayout { } @Override - public boolean onInterceptTouchEvent(MotionEvent ev) { - return true; - } - - @Override @SuppressLint("ClickableViewAccessibility") - public boolean onTouchEvent(@NonNull MotionEvent event) { + public boolean dispatchTouchEvent(@NonNull MotionEvent event) { switch (event.getActionMasked()) { case MotionEvent.ACTION_DOWN: { mDownX = event.getX(); @@ -80,6 +75,6 @@ public class InlineSuggestionRoot extends FrameLayout { } } break; } - return super.onTouchEvent(event); + return super.dispatchTouchEvent(event); } } diff --git a/core/java/android/service/autofill/SaveInfo.java b/core/java/android/service/autofill/SaveInfo.java index 4df43628b5d3..e640eecc03c0 100644 --- a/core/java/android/service/autofill/SaveInfo.java +++ b/core/java/android/service/autofill/SaveInfo.java @@ -719,7 +719,7 @@ public final class SaveInfo implements Parcelable { * * <p>The sanitizer can also be used as an alternative for a * {@link #setValidator(Validator) validator}. If any of the {@code ids} is a - * {@link #SaveInfo.Builder(int, AutofillId[]) required id} and the {@code sanitizer} fails + * {@link #Builder(int, AutofillId[]) required id} and the {@code sanitizer} fails * because of it, then the save UI is not shown. * * @param sanitizer an implementation provided by the Android System. @@ -777,7 +777,7 @@ public final class SaveInfo implements Parcelable { * Builds a new {@link SaveInfo} instance. * * @throws IllegalStateException if no - * {@link #SaveInfo.Builder(int, AutofillId[]) required ids}, + * {@link #Builder(int, AutofillId[]) required ids}, * or {@link #setOptionalIds(AutofillId[]) optional ids}, or {@link #FLAG_DELAY_SAVE} * were set */ diff --git a/core/java/android/telephony/PhoneStateListener.java b/core/java/android/telephony/PhoneStateListener.java index c36a33f7a53d..e4fbf9f0e187 100644 --- a/core/java/android/telephony/PhoneStateListener.java +++ b/core/java/android/telephony/PhoneStateListener.java @@ -379,8 +379,6 @@ public class PhoneStateListener { * * <p>Requires permission {@link android.Manifest.permission#READ_PHONE_STATE} or the calling * app has carrier privileges (see {@link TelephonyManager#hasCarrierPrivileges}). - * - * @see #onEmergencyNumberListChanged */ public static final int LISTEN_EMERGENCY_NUMBER_LIST = 0x01000000; @@ -459,7 +457,7 @@ public class PhoneStateListener { * <p>Requires permission {@link android.Manifest.permission#READ_PRECISE_PHONE_STATE} or * the calling app has carrier privileges (see {@link TelephonyManager#hasCarrierPrivileges}). * - * @see #onRegistrationFailed() + * @see #onRegistrationFailed */ @RequiresPermission(Manifest.permission.READ_PRECISE_PHONE_STATE) public static final int LISTEN_REGISTRATION_FAILURE = 0x40000000; @@ -470,7 +468,7 @@ public class PhoneStateListener { * <p>Requires permission {@link android.Manifest.permission#READ_PRECISE_PHONE_STATE} or * the calling app has carrier privileges (see {@link TelephonyManager#hasCarrierPrivileges}). * - * @see #onBarringInfoChanged() + * @see #onBarringInfoChanged */ @RequiresPermission(Manifest.permission.READ_PRECISE_PHONE_STATE) public static final int LISTEN_BARRING_INFO = 0x80000000; diff --git a/core/java/android/util/proto/ProtoOutputStream.java b/core/java/android/util/proto/ProtoOutputStream.java index 2c260f6b8cbe..5fcd38e2fd9c 100644 --- a/core/java/android/util/proto/ProtoOutputStream.java +++ b/core/java/android/util/proto/ProtoOutputStream.java @@ -2275,7 +2275,7 @@ public final class ProtoOutputStream extends ProtoStream { /** * Write an individual field tag by hand. * - * @see See <a href="https://developers.google.com/protocol-buffers/docs/encoding">Protobuf + * See <a href="https://developers.google.com/protocol-buffers/docs/encoding">Protobuf * Encoding</a> for details on the structure of how tags and data are written. */ public void writeTag(int id, @WireType int wireType) { diff --git a/core/java/android/view/SurfaceControl.java b/core/java/android/view/SurfaceControl.java index 0625806e40ef..c0c29eba41d1 100644 --- a/core/java/android/view/SurfaceControl.java +++ b/core/java/android/view/SurfaceControl.java @@ -1464,8 +1464,23 @@ public final class SurfaceControl implements Parcelable { */ public static final class DesiredDisplayConfigSpecs { public int defaultConfig; - public float minRefreshRate; - public float maxRefreshRate; + /** + * The primary refresh rate range represents display manager's general guidance on the + * display configs surface flinger will consider when switching refresh rates. Unless + * surface flinger has a specific reason to do otherwise, it will stay within this range. + */ + public float primaryRefreshRateMin; + public float primaryRefreshRateMax; + /** + * The app request refresh rate range allows surface flinger to consider more display + * configs when switching refresh rates. Although surface flinger will generally stay within + * the primary range, specific considerations, such as layer frame rate settings specified + * via the setFrameRate() api, may cause surface flinger to go outside the primary + * range. Surface flinger never goes outside the app request range. The app request range + * will be greater than or equal to the primary refresh rate range, never smaller. + */ + public float appRequestRefreshRateMin; + public float appRequestRefreshRateMax; public DesiredDisplayConfigSpecs() {} @@ -1473,11 +1488,14 @@ public final class SurfaceControl implements Parcelable { copyFrom(other); } - public DesiredDisplayConfigSpecs( - int defaultConfig, float minRefreshRate, float maxRefreshRate) { + public DesiredDisplayConfigSpecs(int defaultConfig, float primaryRefreshRateMin, + float primaryRefreshRateMax, float appRequestRefreshRateMin, + float appRequestRefreshRateMax) { this.defaultConfig = defaultConfig; - this.minRefreshRate = minRefreshRate; - this.maxRefreshRate = maxRefreshRate; + this.primaryRefreshRateMin = primaryRefreshRateMin; + this.primaryRefreshRateMax = primaryRefreshRateMax; + this.appRequestRefreshRateMin = appRequestRefreshRateMin; + this.appRequestRefreshRateMax = appRequestRefreshRateMax; } @Override @@ -1490,8 +1508,10 @@ public final class SurfaceControl implements Parcelable { */ public boolean equals(DesiredDisplayConfigSpecs other) { return other != null && defaultConfig == other.defaultConfig - && minRefreshRate == other.minRefreshRate - && maxRefreshRate == other.maxRefreshRate; + && primaryRefreshRateMin == other.primaryRefreshRateMin + && primaryRefreshRateMax == other.primaryRefreshRateMax + && appRequestRefreshRateMin == other.appRequestRefreshRateMin + && appRequestRefreshRateMax == other.appRequestRefreshRateMax; } @Override @@ -1504,14 +1524,18 @@ public final class SurfaceControl implements Parcelable { */ public void copyFrom(DesiredDisplayConfigSpecs other) { defaultConfig = other.defaultConfig; - minRefreshRate = other.minRefreshRate; - maxRefreshRate = other.maxRefreshRate; + primaryRefreshRateMin = other.primaryRefreshRateMin; + primaryRefreshRateMax = other.primaryRefreshRateMax; + appRequestRefreshRateMin = other.appRequestRefreshRateMin; + appRequestRefreshRateMax = other.appRequestRefreshRateMax; } @Override public String toString() { - return String.format("defaultConfig=%d min=%.0f max=%.0f", defaultConfig, - minRefreshRate, maxRefreshRate); + return String.format("defaultConfig=%d primaryRefreshRateRange=[%.0f %.0f]" + + " appRequestRefreshRateRange=[%.0f %.0f]", + defaultConfig, primaryRefreshRateMin, primaryRefreshRateMax, + appRequestRefreshRateMin, appRequestRefreshRateMax); } } diff --git a/core/java/android/view/VerifiedInputEvent.java b/core/java/android/view/VerifiedInputEvent.java index 531b3ed39fc3..e2db50165f77 100644 --- a/core/java/android/view/VerifiedInputEvent.java +++ b/core/java/android/view/VerifiedInputEvent.java @@ -92,8 +92,6 @@ public abstract class VerifiedInputEvent implements Parcelable { * time base. * * @see InputEvent#getEventTime() - * @see KeyEvent#getEventTimeNano() - * @see MotionEvent#getEventTimeNano() */ @SuppressLint("MethodNameUnits") public long getEventTimeNanos() { diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java index 310299910e96..facf8619111c 100644 --- a/core/java/android/view/View.java +++ b/core/java/android/view/View.java @@ -7263,6 +7263,16 @@ public class View implements Drawable.Callback, KeyEvent.Callback, } /** + * @return the registered {@link OnLongClickListener} if there is one, {@code null} otherwise. + * @hide + */ + @Nullable + public OnLongClickListener getOnLongClickListener() { + ListenerInfo li = mListenerInfo; + return (li != null) ? li.mOnLongClickListener : null; + } + + /** * Register a callback to be invoked when this view is context clicked. If the view is not * context clickable, it becomes context clickable. * @@ -26175,9 +26185,9 @@ public class View implements Drawable.Callback, KeyEvent.Callback, /** * Returns the View object that had been passed to the - * {@link #View.DragShadowBuilder(View)} + * {@link #DragShadowBuilder(View)} * constructor. If that View parameter was {@code null} or if the - * {@link #View.DragShadowBuilder()} + * {@link #DragShadowBuilder()} * constructor was used to instantiate the builder object, this method will return * null. * diff --git a/core/java/android/view/WindowManager.java b/core/java/android/view/WindowManager.java index e4dbd63765b6..9a3c7066e7f8 100644 --- a/core/java/android/view/WindowManager.java +++ b/core/java/android/view/WindowManager.java @@ -700,7 +700,6 @@ public interface WindowManager extends ViewManager { * @see #TYPE_TOAST * @see #TYPE_SYSTEM_OVERLAY * @see #TYPE_PRIORITY_PHONE - * @see #TYPE_STATUS_BAR_PANEL * @see #TYPE_SYSTEM_DIALOG * @see #TYPE_KEYGUARD_DIALOG * @see #TYPE_SYSTEM_ERROR diff --git a/core/java/android/view/accessibility/AccessibilityNodeInfo.java b/core/java/android/view/accessibility/AccessibilityNodeInfo.java index 6646c3188fc7..eaaaa80f65ed 100644 --- a/core/java/android/view/accessibility/AccessibilityNodeInfo.java +++ b/core/java/android/view/accessibility/AccessibilityNodeInfo.java @@ -5120,7 +5120,7 @@ public class AccessibilityNodeInfo implements Parcelable { * Obtains a pooled instance that is a clone of another one. * * <p>In most situations object pooling is not beneficial. Create a new instance using the - * constructor {@link AccessibilityNodeInfo.RangeInfo#AccessibilityNodeInfo.RangeInfo(int, + * constructor {@link AccessibilityNodeInfo.RangeInfo#RangeInfo(int, * float, float, float)} instead. * * @param other The instance to clone. @@ -5135,7 +5135,7 @@ public class AccessibilityNodeInfo implements Parcelable { * Obtains a pooled instance. * * <p>In most situations object pooling is not beneficial. Create a new instance using the - * constructor {@link AccessibilityNodeInfo.RangeInfo#AccessibilityNodeInfo.RangeInfo(int, + * constructor {@link AccessibilityNodeInfo.RangeInfo#RangeInfo(int, * float, float, float)} instead. * * @param type The type of the range. @@ -5271,7 +5271,7 @@ public class AccessibilityNodeInfo implements Parcelable { * * <p>In most situations object pooling is not beneficial. Create a new instance using the * constructor {@link - * AccessibilityNodeInfo.CollectionInfo#AccessibilityNodeInfo.CollectionInfo} instead. + * AccessibilityNodeInfo.CollectionInfo#CollectionInfo} instead. * * @param other The instance to clone. * @hide @@ -5286,7 +5286,7 @@ public class AccessibilityNodeInfo implements Parcelable { * * <p>In most situations object pooling is not beneficial. Create a new instance using the * constructor {@link - * AccessibilityNodeInfo.CollectionInfo#AccessibilityNodeInfo.CollectionInfo(int, int, + * AccessibilityNodeInfo.CollectionInfo#CollectionInfo(int, int, * boolean)} instead. * * @param rowCount The number of rows, or -1 if count is unknown. @@ -5303,7 +5303,7 @@ public class AccessibilityNodeInfo implements Parcelable { * * <p>In most situations object pooling is not beneficial. Create a new instance using the * constructor {@link - * AccessibilityNodeInfo.CollectionInfo#AccessibilityNodeInfo.CollectionInfo(int, int, + * AccessibilityNodeInfo.CollectionInfo#CollectionInfo(int, int, * boolean, int)} instead. * * @param rowCount The number of rows. @@ -5440,7 +5440,7 @@ public class AccessibilityNodeInfo implements Parcelable { * * <p>In most situations object pooling is not beneficial. Create a new instance using the * constructor {@link - * AccessibilityNodeInfo.CollectionItemInfo#AccessibilityNodeInfo.CollectionItemInfo} + * AccessibilityNodeInfo.CollectionItemInfo#CollectionItemInfo} * instead. * * @param other The instance to clone. @@ -5456,7 +5456,7 @@ public class AccessibilityNodeInfo implements Parcelable { * * <p>In most situations object pooling is not beneficial. Create a new instance using the * constructor {@link - * AccessibilityNodeInfo.CollectionItemInfo#AccessibilityNodeInfo.CollectionItemInfo(int, + * AccessibilityNodeInfo.CollectionItemInfo#CollectionItemInfo(int, * int, int, int, boolean)} instead. * * @param rowIndex The row index at which the item is located. @@ -5476,7 +5476,7 @@ public class AccessibilityNodeInfo implements Parcelable { * * <p>In most situations object pooling is not beneficial. Creates a new instance using the * constructor {@link - * AccessibilityNodeInfo.CollectionItemInfo#AccessibilityNodeInfo.CollectionItemInfo(int, + * AccessibilityNodeInfo.CollectionItemInfo#CollectionItemInfo(int, * int, int, int, boolean, boolean)} instead. * * @param rowIndex The row index at which the item is located. diff --git a/core/java/android/view/inspector/StaticInspectionCompanionProvider.java b/core/java/android/view/inspector/StaticInspectionCompanionProvider.java index 42a892dedf4d..903fc13a03ea 100644 --- a/core/java/android/view/inspector/StaticInspectionCompanionProvider.java +++ b/core/java/android/view/inspector/StaticInspectionCompanionProvider.java @@ -21,8 +21,6 @@ import android.annotation.Nullable; /** * An inspection companion provider that finds companions as inner classes or generated code. - * - * @see android.processor.view.inspector.PlatformInspectableProcessor */ public class StaticInspectionCompanionProvider implements InspectionCompanionProvider { /** diff --git a/core/java/android/widget/Toast.java b/core/java/android/widget/Toast.java index fb962103990c..b35eb065e3fb 100644 --- a/core/java/android/widget/Toast.java +++ b/core/java/android/widget/Toast.java @@ -714,9 +714,7 @@ public class Toast { /** * Callback object to be called when the toast is shown or hidden. * - * <p>Callback methods will be called on the looper thread used for the {@link Toast} object. - * - * @see #makeText(Context, Looper, CharSequence, int) + * @see #makeText(Context, CharSequence, int) * @see #addCallback(Callback) */ public abstract static class Callback { diff --git a/core/java/com/android/internal/policy/GestureNavigationSettingsObserver.java b/core/java/com/android/internal/policy/GestureNavigationSettingsObserver.java index 4786d41fef4b..0e703fa686e0 100644 --- a/core/java/com/android/internal/policy/GestureNavigationSettingsObserver.java +++ b/core/java/com/android/internal/policy/GestureNavigationSettingsObserver.java @@ -26,6 +26,7 @@ import android.os.Handler; import android.os.UserHandle; import android.provider.DeviceConfig; import android.provider.Settings; +import android.util.DisplayMetrics; import android.util.TypedValue; /** @@ -99,12 +100,13 @@ public class GestureNavigationSettingsObserver extends ContentObserver { } private int getSensitivity(Resources userRes, String side) { + final DisplayMetrics dm = userRes.getDisplayMetrics(); final float defaultInset = userRes.getDimension( - com.android.internal.R.dimen.config_backGestureInset); + com.android.internal.R.dimen.config_backGestureInset) / dm.density; final float backGestureInset = DeviceConfig.getFloat(DeviceConfig.NAMESPACE_SYSTEMUI, BACK_GESTURE_EDGE_WIDTH, defaultInset); final float inset = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, backGestureInset, - userRes.getDisplayMetrics()); + dm); final float scale = Settings.Secure.getFloatForUser( mContext.getContentResolver(), side, 1.0f, UserHandle.USER_CURRENT); return (int) (inset * scale); diff --git a/core/jni/android_view_SurfaceControl.cpp b/core/jni/android_view_SurfaceControl.cpp index 58697875b2c3..36b4b6aad4b4 100644 --- a/core/jni/android_view_SurfaceControl.cpp +++ b/core/jni/android_view_SurfaceControl.cpp @@ -174,8 +174,10 @@ static struct { jclass clazz; jmethodID ctor; jfieldID defaultConfig; - jfieldID minRefreshRate; - jfieldID maxRefreshRate; + jfieldID primaryRefreshRateMin; + jfieldID primaryRefreshRateMax; + jfieldID appRequestRefreshRateMin; + jfieldID appRequestRefreshRateMax; } gDesiredDisplayConfigSpecsClassInfo; class JNamedColorSpace { @@ -919,13 +921,24 @@ static jboolean nativeSetDesiredDisplayConfigSpecs(JNIEnv* env, jclass clazz, jo jint defaultConfig = env->GetIntField(desiredDisplayConfigSpecs, gDesiredDisplayConfigSpecsClassInfo.defaultConfig); - jfloat minRefreshRate = env->GetFloatField(desiredDisplayConfigSpecs, - gDesiredDisplayConfigSpecsClassInfo.minRefreshRate); - jfloat maxRefreshRate = env->GetFloatField(desiredDisplayConfigSpecs, - gDesiredDisplayConfigSpecsClassInfo.maxRefreshRate); - - size_t result = SurfaceComposerClient::setDesiredDisplayConfigSpecs( - token, defaultConfig, minRefreshRate, maxRefreshRate); + jfloat primaryRefreshRateMin = + env->GetFloatField(desiredDisplayConfigSpecs, + gDesiredDisplayConfigSpecsClassInfo.primaryRefreshRateMin); + jfloat primaryRefreshRateMax = + env->GetFloatField(desiredDisplayConfigSpecs, + gDesiredDisplayConfigSpecsClassInfo.primaryRefreshRateMax); + jfloat appRequestRefreshRateMin = + env->GetFloatField(desiredDisplayConfigSpecs, + gDesiredDisplayConfigSpecsClassInfo.appRequestRefreshRateMin); + jfloat appRequestRefreshRateMax = + env->GetFloatField(desiredDisplayConfigSpecs, + gDesiredDisplayConfigSpecsClassInfo.appRequestRefreshRateMax); + + size_t result = SurfaceComposerClient::setDesiredDisplayConfigSpecs(token, defaultConfig, + primaryRefreshRateMin, + primaryRefreshRateMax, + appRequestRefreshRateMin, + appRequestRefreshRateMax); return result == NO_ERROR ? JNI_TRUE : JNI_FALSE; } @@ -934,16 +947,23 @@ static jobject nativeGetDesiredDisplayConfigSpecs(JNIEnv* env, jclass clazz, job if (token == nullptr) return nullptr; int32_t defaultConfig; - float minRefreshRate; - float maxRefreshRate; - if (SurfaceComposerClient::getDesiredDisplayConfigSpecs(token, &defaultConfig, &minRefreshRate, - &maxRefreshRate) != NO_ERROR) { + float primaryRefreshRateMin; + float primaryRefreshRateMax; + float appRequestRefreshRateMin; + float appRequestRefreshRateMax; + if (SurfaceComposerClient::getDesiredDisplayConfigSpecs(token, &defaultConfig, + &primaryRefreshRateMin, + &primaryRefreshRateMax, + &appRequestRefreshRateMin, + &appRequestRefreshRateMax) != + NO_ERROR) { return nullptr; } return env->NewObject(gDesiredDisplayConfigSpecsClassInfo.clazz, - gDesiredDisplayConfigSpecsClassInfo.ctor, defaultConfig, minRefreshRate, - maxRefreshRate); + gDesiredDisplayConfigSpecsClassInfo.ctor, defaultConfig, + primaryRefreshRateMin, primaryRefreshRateMax, appRequestRefreshRateMin, + appRequestRefreshRateMax); } static jint nativeGetActiveConfig(JNIEnv* env, jclass clazz, jobject tokenObj) { @@ -1757,13 +1777,17 @@ int register_android_view_SurfaceControl(JNIEnv* env) gDesiredDisplayConfigSpecsClassInfo.clazz = MakeGlobalRefOrDie(env, desiredDisplayConfigSpecsClazz); gDesiredDisplayConfigSpecsClassInfo.ctor = - GetMethodIDOrDie(env, gDesiredDisplayConfigSpecsClassInfo.clazz, "<init>", "(IFF)V"); + GetMethodIDOrDie(env, gDesiredDisplayConfigSpecsClassInfo.clazz, "<init>", "(IFFFF)V"); gDesiredDisplayConfigSpecsClassInfo.defaultConfig = GetFieldIDOrDie(env, desiredDisplayConfigSpecsClazz, "defaultConfig", "I"); - gDesiredDisplayConfigSpecsClassInfo.minRefreshRate = - GetFieldIDOrDie(env, desiredDisplayConfigSpecsClazz, "minRefreshRate", "F"); - gDesiredDisplayConfigSpecsClassInfo.maxRefreshRate = - GetFieldIDOrDie(env, desiredDisplayConfigSpecsClazz, "maxRefreshRate", "F"); + gDesiredDisplayConfigSpecsClassInfo.primaryRefreshRateMin = + GetFieldIDOrDie(env, desiredDisplayConfigSpecsClazz, "primaryRefreshRateMin", "F"); + gDesiredDisplayConfigSpecsClassInfo.primaryRefreshRateMax = + GetFieldIDOrDie(env, desiredDisplayConfigSpecsClazz, "primaryRefreshRateMax", "F"); + gDesiredDisplayConfigSpecsClassInfo.appRequestRefreshRateMin = + GetFieldIDOrDie(env, desiredDisplayConfigSpecsClazz, "appRequestRefreshRateMin", "F"); + gDesiredDisplayConfigSpecsClassInfo.appRequestRefreshRateMax = + GetFieldIDOrDie(env, desiredDisplayConfigSpecsClazz, "appRequestRefreshRateMax", "F"); return err; } diff --git a/core/res/res/values/attrs.xml b/core/res/res/values/attrs.xml index a8d1605c6fdd..b92bbd6b2461 100644 --- a/core/res/res/values/attrs.xml +++ b/core/res/res/values/attrs.xml @@ -4820,7 +4820,7 @@ May be a string value, which is a comma-separated language tag list, such as "ja-JP,zh-CN". When not specified or an empty string is given, it will fallback to the default one. {@see android.os.LocaleList#forLanguageTags(String)} - {@see android.text.TextView#setTextLocales(android.os.LocaleList)} --> + {@see android.widget.TextView#setTextLocales(android.os.LocaleList)} --> <attr name="textLocale" format="string" /> <!-- Text color for links. --> <attr name="textColorLink" /> diff --git a/core/tests/coretests/src/android/app/activity/ActivityThreadTest.java b/core/tests/coretests/src/android/app/activity/ActivityThreadTest.java index 34417e68f11c..a93dacf47050 100644 --- a/core/tests/coretests/src/android/app/activity/ActivityThreadTest.java +++ b/core/tests/coretests/src/android/app/activity/ActivityThreadTest.java @@ -44,8 +44,11 @@ import android.app.servertransaction.StopActivityItem; import android.content.Context; import android.content.Intent; import android.content.res.Configuration; +import android.content.res.Resources; +import android.graphics.Rect; import android.hardware.display.DisplayManager; import android.os.IBinder; +import android.util.DisplayMetrics; import android.util.MergedConfiguration; import android.view.Display; import android.view.View; @@ -367,6 +370,58 @@ public class ActivityThreadTest { } @Test + public void testHandleConfigurationChanged_DoesntOverrideActivityConfig() { + final TestActivity activity = mActivityTestRule.launchActivity(new Intent()); + + InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> { + final Configuration oldActivityConfig = + new Configuration(activity.getResources().getConfiguration()); + final DisplayMetrics oldActivityMetrics = new DisplayMetrics(); + activity.getDisplay().getMetrics(oldActivityMetrics); + final Resources oldAppResources = activity.getApplication().getResources(); + final Configuration oldAppConfig = + new Configuration(oldAppResources.getConfiguration()); + final DisplayMetrics oldApplicationMetrics = new DisplayMetrics(); + oldApplicationMetrics.setTo(oldAppResources.getDisplayMetrics()); + assertEquals("Process config must match the top activity config by default", + 0, oldActivityConfig.diffPublicOnly(oldAppConfig)); + assertEquals("Process config must match the top activity config by default", + oldActivityMetrics, oldApplicationMetrics); + + // Update the application configuration separately from activity config + final Configuration newAppConfig = new Configuration(oldAppConfig); + newAppConfig.densityDpi += 100; + newAppConfig.screenHeightDp += 100; + final Rect newBounds = new Rect(newAppConfig.windowConfiguration.getAppBounds()); + newBounds.bottom += 100; + newAppConfig.windowConfiguration.setAppBounds(newBounds); + newAppConfig.windowConfiguration.setBounds(newBounds); + newAppConfig.seq++; + + final ActivityThread activityThread = activity.getActivityThread(); + activityThread.handleConfigurationChanged(newAppConfig); + + // Verify that application config update was applied, but didn't change activity config. + assertEquals("Activity config must not change if the process config changes", + oldActivityConfig, activity.getResources().getConfiguration()); + + final DisplayMetrics newActivityMetrics = new DisplayMetrics(); + activity.getDisplay().getMetrics(newActivityMetrics); + assertEquals("Activity display size must not change if the process config changes", + oldActivityMetrics, newActivityMetrics); + final Resources newAppResources = activity.getApplication().getResources(); + assertEquals("Application config must be updated", + newAppConfig, newAppResources.getConfiguration()); + final DisplayMetrics newApplicationMetrics = new DisplayMetrics(); + newApplicationMetrics.setTo(newAppResources.getDisplayMetrics()); + assertNotEquals("Application display size must be updated after config update", + oldApplicationMetrics, newApplicationMetrics); + assertNotEquals("Application display size must be updated after config update", + newActivityMetrics, newApplicationMetrics); + }); + } + + @Test public void testResumeAfterNewIntent() { final Activity activity = mActivityTestRule.launchActivity(new Intent()); final ActivityThread activityThread = activity.getActivityThread(); diff --git a/graphics/java/android/graphics/RenderNode.java b/graphics/java/android/graphics/RenderNode.java index 752695fd8e52..22f5489be3b1 100644 --- a/graphics/java/android/graphics/RenderNode.java +++ b/graphics/java/android/graphics/RenderNode.java @@ -998,7 +998,7 @@ public final class RenderNode { * Sets the rotation value for the display list around the Z axis. * * @param rotation The rotation value of the display list, in degrees - * @see View#setRotationZ(float) + * @see View#setRotation(float) * @see #getRotationZ() * @return True if the value changed, false if the new value was the same as the previous value. */ diff --git a/graphics/java/android/graphics/drawable/Drawable.java b/graphics/java/android/graphics/drawable/Drawable.java index e70529b6cd1a..9cf12f121e0a 100644 --- a/graphics/java/android/graphics/drawable/Drawable.java +++ b/graphics/java/android/graphics/drawable/Drawable.java @@ -617,7 +617,7 @@ public abstract class Drawable { * {@link #setTintList(ColorStateList) tint}. * </p> * - * @see {@link #setColorFilter(ColorFilter)} } + * @see #setColorFilter(ColorFilter) * @deprecated use {@link #setColorFilter(ColorFilter)} with an instance * of {@link android.graphics.BlendModeColorFilter} */ diff --git a/graphics/java/android/graphics/fonts/FontStyle.java b/graphics/java/android/graphics/fonts/FontStyle.java index af517d623b01..09799fdf5a13 100644 --- a/graphics/java/android/graphics/fonts/FontStyle.java +++ b/graphics/java/android/graphics/fonts/FontStyle.java @@ -217,7 +217,7 @@ public final class FontStyle { /** * Gets the weight value * - * @see FontStyle#setWeight(int) + * @see #FontStyle(int, int) * @return a weight value */ public @IntRange(from = 0, to = 1000) int getWeight() { diff --git a/graphics/java/android/graphics/text/LineBreaker.java b/graphics/java/android/graphics/text/LineBreaker.java index 54622c5e74df..babcfc3815f4 100644 --- a/graphics/java/android/graphics/text/LineBreaker.java +++ b/graphics/java/android/graphics/text/LineBreaker.java @@ -320,7 +320,7 @@ public class LineBreaker { /** * Returns the array of tab stops in pixels. * - * @see #setTabStops(float[], int) + * @see #setTabStops */ public @Nullable float[] getTabStops() { return mVariableTabStops; @@ -329,7 +329,7 @@ public class LineBreaker { /** * Returns the default tab stops in pixels. * - * @see #setTabStop(float[], int) + * @see #setTabStops */ public @Px @FloatRange(from = 0) float getDefaultTabStop() { return mDefaultTabStop; diff --git a/libs/hwui/RenderNode.cpp b/libs/hwui/RenderNode.cpp index 6761435a8171..31e45558139d 100644 --- a/libs/hwui/RenderNode.cpp +++ b/libs/hwui/RenderNode.cpp @@ -27,7 +27,6 @@ #include "DamageAccumulator.h" #include "pipeline/skia/SkiaDisplayList.h" #endif -#include "utils/FatVector.h" #include "utils/MathUtils.h" #include "utils/StringUtils.h" #include "utils/TraceUtils.h" @@ -37,6 +36,7 @@ #include <atomic> #include <sstream> #include <string> +#include <ui/FatVector.h> namespace android { namespace uirenderer { diff --git a/libs/hwui/RenderNode.h b/libs/hwui/RenderNode.h index d55e5b0ce836..c0ec2174bb35 100644 --- a/libs/hwui/RenderNode.h +++ b/libs/hwui/RenderNode.h @@ -27,6 +27,8 @@ #include <androidfw/ResourceTypes.h> +#include <ui/FatVector.h> + #include "AnimatorManager.h" #include "CanvasTransform.h" #include "Debug.h" @@ -35,7 +37,6 @@ #include "RenderProperties.h" #include "pipeline/skia/SkiaDisplayList.h" #include "pipeline/skia/SkiaLayer.h" -#include "utils/FatVector.h" #include <vector> diff --git a/libs/hwui/jni/FontFamily.cpp b/libs/hwui/jni/FontFamily.cpp index 0ce04a2437b9..a2fef1e19328 100644 --- a/libs/hwui/jni/FontFamily.cpp +++ b/libs/hwui/jni/FontFamily.cpp @@ -29,9 +29,9 @@ #include <hwui/MinikinSkia.h> #include <hwui/Typeface.h> -#include <utils/FatVector.h> #include <minikin/FontFamily.h> #include <minikin/LocaleList.h> +#include <ui/FatVector.h> #include <memory> @@ -104,7 +104,7 @@ static jlong FontFamily_getFamilyReleaseFunc(CRITICAL_JNI_PARAMS) { static bool addSkTypeface(NativeFamilyBuilder* builder, sk_sp<SkData>&& data, int ttcIndex, jint weight, jint italic) { - uirenderer::FatVector<SkFontArguments::Axis, 2> skiaAxes; + FatVector<SkFontArguments::Axis, 2> skiaAxes; for (const auto& axis : builder->axes) { skiaAxes.emplace_back(SkFontArguments::Axis{axis.axisTag, axis.value}); } diff --git a/libs/hwui/jni/fonts/Font.cpp b/libs/hwui/jni/fonts/Font.cpp index 7e8f8d8d173c..5714cd1d0390 100644 --- a/libs/hwui/jni/fonts/Font.cpp +++ b/libs/hwui/jni/fonts/Font.cpp @@ -28,8 +28,8 @@ #include <hwui/MinikinSkia.h> #include <hwui/Typeface.h> -#include <utils/FatVector.h> #include <minikin/FontFamily.h> +#include <ui/FatVector.h> #include <memory> @@ -93,7 +93,7 @@ static jlong Font_Builder_build(JNIEnv* env, jobject clazz, jlong builderPtr, jo sk_sp<SkData> data(SkData::MakeWithProc(fontPtr, fontSize, release_global_ref, reinterpret_cast<void*>(fontRef))); - uirenderer::FatVector<SkFontArguments::Axis, 2> skiaAxes; + FatVector<SkFontArguments::Axis, 2> skiaAxes; for (const auto& axis : builder->axes) { skiaAxes.emplace_back(SkFontArguments::Axis{axis.axisTag, axis.value}); } diff --git a/libs/hwui/pipeline/skia/ReorderBarrierDrawables.h b/libs/hwui/pipeline/skia/ReorderBarrierDrawables.h index cfc0f9b258da..d669f84c5ee2 100644 --- a/libs/hwui/pipeline/skia/ReorderBarrierDrawables.h +++ b/libs/hwui/pipeline/skia/ReorderBarrierDrawables.h @@ -21,7 +21,7 @@ #include <SkCanvas.h> #include <SkDrawable.h> -#include <utils/FatVector.h> +#include <ui/FatVector.h> namespace android { namespace uirenderer { diff --git a/libs/hwui/renderthread/RenderThread.cpp b/libs/hwui/renderthread/RenderThread.cpp index cae3e3b5188c..206b58f62ea7 100644 --- a/libs/hwui/renderthread/RenderThread.cpp +++ b/libs/hwui/renderthread/RenderThread.cpp @@ -27,7 +27,6 @@ #include "pipeline/skia/SkiaOpenGLPipeline.h" #include "pipeline/skia/SkiaVulkanPipeline.h" #include "renderstate/RenderState.h" -#include "utils/FatVector.h" #include "utils/TimeUtils.h" #include "utils/TraceUtils.h" @@ -40,6 +39,8 @@ #include <utils/Mutex.h> #include <thread> +#include <ui/FatVector.h> + namespace android { namespace uirenderer { namespace renderthread { diff --git a/libs/hwui/renderthread/VulkanManager.cpp b/libs/hwui/renderthread/VulkanManager.cpp index a5355fc3499d..ba70afc8b8d2 100644 --- a/libs/hwui/renderthread/VulkanManager.cpp +++ b/libs/hwui/renderthread/VulkanManager.cpp @@ -23,13 +23,13 @@ #include <GrContext.h> #include <GrTypes.h> #include <android/sync.h> +#include <ui/FatVector.h> #include <vk/GrVkExtensions.h> #include <vk/GrVkTypes.h> #include "Properties.h" #include "RenderThread.h" #include "renderstate/RenderState.h" -#include "utils/FatVector.h" #include "utils/TraceUtils.h" namespace android { diff --git a/libs/hwui/tests/unit/FatVectorTests.cpp b/libs/hwui/tests/unit/FatVectorTests.cpp index 8523e6c9e973..6585a6249b44 100644 --- a/libs/hwui/tests/unit/FatVectorTests.cpp +++ b/libs/hwui/tests/unit/FatVectorTests.cpp @@ -15,7 +15,7 @@ */ #include <gtest/gtest.h> -#include <utils/FatVector.h> +#include <ui/FatVector.h> #include <tests/common/TestUtils.h> diff --git a/libs/hwui/utils/FatVector.h b/libs/hwui/utils/FatVector.h deleted file mode 100644 index 49f1984b779f..000000000000 --- a/libs/hwui/utils/FatVector.h +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Copyright 2015, 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. - */ - -#ifndef ANDROID_FAT_VECTOR_H -#define ANDROID_FAT_VECTOR_H - -#include "utils/Macros.h" - -#include <stddef.h> -#include <stdlib.h> -#include <utils/Log.h> -#include <type_traits> - -#include <vector> - -namespace android { -namespace uirenderer { - -template <typename T, size_t SIZE> -class InlineStdAllocator { -public: - struct Allocation { - PREVENT_COPY_AND_ASSIGN(Allocation); - - public: - Allocation(){}; - // char array instead of T array, so memory is uninitialized, with no destructors run - char array[sizeof(T) * SIZE]; - bool inUse = false; - }; - - typedef T value_type; // needed to implement std::allocator - typedef T* pointer; // needed to implement std::allocator - - explicit InlineStdAllocator(Allocation& allocation) : mAllocation(allocation) {} - InlineStdAllocator(const InlineStdAllocator& other) : mAllocation(other.mAllocation) {} - ~InlineStdAllocator() {} - - T* allocate(size_t num, const void* = 0) { - if (!mAllocation.inUse && num <= SIZE) { - mAllocation.inUse = true; - return (T*)mAllocation.array; - } else { - return (T*)malloc(num * sizeof(T)); - } - } - - void deallocate(pointer p, size_t num) { - if (p == (T*)mAllocation.array) { - mAllocation.inUse = false; - } else { - // 'free' instead of delete here - destruction handled separately - free(p); - } - } - Allocation& mAllocation; -}; - -/** - * std::vector with SIZE elements preallocated into an internal buffer. - * - * Useful for avoiding the cost of malloc in cases where only SIZE or - * fewer elements are needed in the common case. - */ -template <typename T, size_t SIZE> -class FatVector : public std::vector<T, InlineStdAllocator<T, SIZE>> { -public: - FatVector() - : std::vector<T, InlineStdAllocator<T, SIZE>>( - InlineStdAllocator<T, SIZE>(mAllocation)) { - this->reserve(SIZE); - } - - explicit FatVector(size_t capacity) : FatVector() { this->resize(capacity); } - -private: - typename InlineStdAllocator<T, SIZE>::Allocation mAllocation; -}; - -} // namespace uirenderer -} // namespace android - -#endif // ANDROID_FAT_VECTOR_H diff --git a/media/java/android/media/AudioFocusRequest.java b/media/java/android/media/AudioFocusRequest.java index 4e7050129058..4c0850b675a8 100644 --- a/media/java/android/media/AudioFocusRequest.java +++ b/media/java/android/media/AudioFocusRequest.java @@ -80,9 +80,9 @@ import android.os.Looper; * <p>An {@code AudioFocusRequest} instance always contains one of the four types of requests * explained above. It is passed when building an {@code AudioFocusRequest} instance with its * builder in the {@link Builder} constructor - * {@link AudioFocusRequest.Builder#AudioFocusRequest.Builder(int)}, or + * {@link AudioFocusRequest.Builder#Builder(int)}, or * with {@link AudioFocusRequest.Builder#setFocusGain(int)} after copying an existing instance with - * {@link AudioFocusRequest.Builder#AudioFocusRequest.Builder(AudioFocusRequest)}. + * {@link AudioFocusRequest.Builder#Builder(AudioFocusRequest)}. * * <h3>Qualifying your focus request</h3> * <h4>Use case requiring a focus request</h4> diff --git a/media/java/android/media/AudioTrack.java b/media/java/android/media/AudioTrack.java index 1d229b80cb2c..9f3fc5d94a98 100644 --- a/media/java/android/media/AudioTrack.java +++ b/media/java/android/media/AudioTrack.java @@ -1357,7 +1357,7 @@ public class AudioTrack extends PlayerBase * Can only be called only if the AudioTrack is opened in offload mode * {@see Builder#setOffloadedPlayback(boolean)}. * Can only be called only if the AudioTrack is in state {@link #PLAYSTATE_PLAYING} - * {@see #getPlaystate()}. + * {@see #getPlayState()}. * Use this method in the same thread as any write() operation. */ public void setOffloadEndOfStream() { diff --git a/media/java/android/media/MediaMetadataRetriever.java b/media/java/android/media/MediaMetadataRetriever.java index 1617b875c6f7..559a61daec38 100644 --- a/media/java/android/media/MediaMetadataRetriever.java +++ b/media/java/android/media/MediaMetadataRetriever.java @@ -535,7 +535,7 @@ public class MediaMetadataRetriever implements AutoCloseable { * if such a frame cannot be retrieved. {@link Bitmap#getConfig()} can * be used to query the actual {@link Bitmap.Config}. * - * @see {@link #getFrameAtTime(long, int, BitmapParams)} + * @see #getFrameAtTime(long, int, BitmapParams) */ public @Nullable Bitmap getFrameAtTime(long timeUs, @Option int option) { if (option < OPTION_PREVIOUS_SYNC || @@ -581,7 +581,7 @@ public class MediaMetadataRetriever implements AutoCloseable { * @return A Bitmap containing a representative video frame, which * can be null, if such a frame cannot be retrieved. * - * @see {@link #getFrameAtTime(long, int)} + * @see #getFrameAtTime(long, int) */ public @Nullable Bitmap getFrameAtTime( long timeUs, @Option int option, @NonNull BitmapParams params) { @@ -623,7 +623,7 @@ public class MediaMetadataRetriever implements AutoCloseable { * be used to query the actual {@link Bitmap.Config}. * @throws IllegalArgumentException if passed in invalid option or width by height * is less than or equal to 0. - * @see {@link #getScaledFrameAtTime(long, int, int, int, BitmapParams)} + * @see #getScaledFrameAtTime(long, int, int, int, BitmapParams) */ public @Nullable Bitmap getScaledFrameAtTime(long timeUs, @Option int option, @IntRange(from=1) int dstWidth, @IntRange(from=1) int dstHeight) { @@ -668,7 +668,7 @@ public class MediaMetadataRetriever implements AutoCloseable { * scaled video frame, which can be null, if such a frame cannot be retrieved. * @throws IllegalArgumentException if passed in invalid option or width by height * is less than or equal to 0. - * @see {@link #getScaledFrameAtTime(long, int, int, int)} + * @see #getScaledFrameAtTime(long, int, int, int) */ public @Nullable Bitmap getScaledFrameAtTime(long timeUs, @Option int option, @IntRange(from=1) int dstWidth, @IntRange(from=1) int dstHeight, diff --git a/packages/CtsShim/build/Android.bp b/packages/CtsShim/build/Android.bp index d41c6728559b..43e386852713 100644 --- a/packages/CtsShim/build/Android.bp +++ b/packages/CtsShim/build/Android.bp @@ -79,6 +79,7 @@ android_app { "com.android.apex.cts.shim.v2_unsigned_payload", "com.android.apex.cts.shim.v3", ], + min_sdk_version: "24", } //########################################################## @@ -152,4 +153,5 @@ android_app { "com.android.apex.cts.shim.v2_unsigned_payload", "com.android.apex.cts.shim.v3", ], + min_sdk_version: "24", } diff --git a/packages/ExternalStorageProvider/src/com/android/externalstorage/ExternalStorageProvider.java b/packages/ExternalStorageProvider/src/com/android/externalstorage/ExternalStorageProvider.java index 83319cf788c2..0c70e104f9a6 100644 --- a/packages/ExternalStorageProvider/src/com/android/externalstorage/ExternalStorageProvider.java +++ b/packages/ExternalStorageProvider/src/com/android/externalstorage/ExternalStorageProvider.java @@ -32,6 +32,7 @@ import android.os.IBinder; import android.os.UserHandle; import android.os.UserManager; import android.os.storage.DiskInfo; +import android.os.storage.StorageEventListener; import android.os.storage.StorageManager; import android.os.storage.VolumeInfo; import android.provider.DocumentsContract; @@ -119,6 +120,14 @@ public class ExternalStorageProvider extends FileSystemProvider { mUserManager = getContext().getSystemService(UserManager.class); updateVolumes(); + + mStorageManager.registerListener(new StorageEventListener() { + @Override + public void onVolumeStateChanged(VolumeInfo vol, int oldState, int newState) { + updateVolumes(); + } + }); + return true; } diff --git a/packages/SettingsLib/res/values-af/strings.xml b/packages/SettingsLib/res/values-af/strings.xml index 7e0ff8174b81..fdf9d0d2e050 100644 --- a/packages/SettingsLib/res/values-af/strings.xml +++ b/packages/SettingsLib/res/values-af/strings.xml @@ -284,7 +284,8 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Wys opsies vir draadlose skermsertifisering"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Verhoog Wi-Fi-aantekeningvlak, wys per SSID RSSI in Wi‑Fi-kieser"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"Verlaag batteryverbruik en verbeter netwerk se werkverrigting"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"Hierdie skakelaar beïnvloed MAC-verewekansiginggedrag net vir klantmodus.\nWanneer hierdie modus geaktiveer is, kan enige netwerke waarvoor MAC-verewekansiging geaktiveer is, se MAC-adresse tydens die assosiasie weer verewigkansig word, na gelang van wanneer die klant laas van die netwerk ontkoppel het. Herverewekansiging vind nie plaas as die toestel binne 4 uur of korter herkoppel nie."</string> + <!-- no translation found for wifi_enhanced_mac_randomization_summary (1210663439867489931) --> + <skip /> <string name="wifi_metered_label" msgid="8737187690304098638">"Beperk"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"Onbeperk"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"Loggerbuffer se groottes"</string> @@ -373,8 +374,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"Wys Program Reageer Nie-dialoog vir agtergrondprogramme"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"Wys kennisgewingkanaalwaarskuwings"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"Wys waarskuwing op skerm wanneer \'n program \'n kennisgewing sonder \'n geldige kanaal plaas"</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"Dwing kortpaaie vir gesprekkennisgewings af"</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"Kennisgewings moet deur \'n langleef-delingkortpad gerugsteun word om in gesprekafdeling te kan verskyn"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"Dwing toelating op eksterne berging"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"Maak dat enige program na eksterne berging geskryf kan word, ongeag manifeswaardes"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"Dwing aktiwiteite om verstelbaar te wees"</string> diff --git a/packages/SettingsLib/res/values-am/strings.xml b/packages/SettingsLib/res/values-am/strings.xml index 391ceb7a32ea..f448a7e85975 100644 --- a/packages/SettingsLib/res/values-am/strings.xml +++ b/packages/SettingsLib/res/values-am/strings.xml @@ -284,7 +284,8 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"የገመድ አልባ ማሳያ እውቅና ማረጋገጫ አማራጮችን አሳይ"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"የWi‑Fi ምዝግብ ማስታወሻ አያያዝ ደረጃ ጨምር፣ በWi‑Fi መምረጫ ውስጥ በአንድ SSID RSSI አሳይ"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"የባትሪ መላሸቅን ይቀንሳል እንዲሁም የአውታረ መረብ አፈጻጸም ብቃትን ያሻሽላል"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"ይህ ማብሪያ/ማጥፊያ የማክ ዘፈቀደ ማድረጊያ ባህሪ ላይ ተጽዕኖ የሚያሳርፈው ለደንበኛ ሁነታ ብቻ ነው።\nይህ ሁነታ ገቢር ሲደረግ የማክ ዘፈቀደ ማድረጊያ የነቃላቸው ማናቸውም አውታረ መረቦች ደንበኛው ከአውታረ መረቡ ጋር የተላቀቀበት መጨረሻ ጊዜ ላይ የሚወሰን ሆኖ በጉድኝቱ ጊዜ የማክ አድራሻዎቻቸው የዘፈቀደ ተደርጎ ሊሆን ይችላል። መሣሪያው በ4 ሰዓቶች ወይም ከዚያ ባነሰ ጊዜ ውስጥ ዳግም ከተገናኘ ዳግም የዘፈቀደ አይደረግም።"</string> + <!-- no translation found for wifi_enhanced_mac_randomization_summary (1210663439867489931) --> + <skip /> <string name="wifi_metered_label" msgid="8737187690304098638">"የሚለካ"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"ያልተለካ"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"የምዝግብ ማስታወሻ ያዥ መጠኖች"</string> @@ -373,8 +374,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"ለጀርባ መተግበሪያዎች የመተግበሪያ ምላሽ አይሰጥም መገናኛን አሳይ"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"የማሳወቂያ ሰርጥ ማስጠንቀቂያዎችን አሳይ"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"አንድ መተግበሪያ የሚሰራ ሰርጥ ሳይኖረው ማሳወቂያ ሲለጥፍ በማያ ገጽ-ላይ ማስጠንቀቂያን ያሳያል"</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"ለውይይት ማሳወቂያዎች አቋራጮች ተፈጻሚ ያድርጉ"</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"በውይይት ክፍል ውስጥ እንዲታይ በረዥም ጊዜ የሚቆይ የማጋራት አቋርጭ እንዲደገፉ ማሳወቂያዎችን ይጠይቁ"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"በውጫዊ ላይ ሃይል ይፈቀዳል"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"የዝርዝር ሰነዶች እሴቶች ግምት ውስጥ ሳያስገባ ማንኛውም መተግበሪያ ወደ ውጫዊ ማከማቻው ለመጻፍ ብቁ ያደርጋል"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"እንቅስቃሴዎች ዳግመኛ እንዲመጣጠኑ አስገድድ"</string> diff --git a/packages/SettingsLib/res/values-ar/strings.xml b/packages/SettingsLib/res/values-ar/strings.xml index 51eae81b8aa3..38b7179a6cae 100644 --- a/packages/SettingsLib/res/values-ar/strings.xml +++ b/packages/SettingsLib/res/values-ar/strings.xml @@ -179,7 +179,7 @@ <string name="tts_engine_settings_title" msgid="7849477533103566291">"إعدادات <xliff:g id="TTS_ENGINE_NAME">%s</xliff:g>"</string> <string name="tts_engine_settings_button" msgid="477155276199968948">"تشغيل إعدادات المحرك"</string> <string name="tts_engine_preference_section_title" msgid="3861562305498624904">"المحرّك المفضّل"</string> - <string name="tts_general_section_title" msgid="8919671529502364567">"عامة"</string> + <string name="tts_general_section_title" msgid="8919671529502364567">"إعدادات عامة"</string> <string name="tts_reset_speech_pitch_title" msgid="7149398585468413246">"إعادة ضبط طبقة صوت الكلام"</string> <string name="tts_reset_speech_pitch_summary" msgid="6822904157021406449">"إعادة ضبط طبقة الصوت التي يتم قول النص بها على الإعداد التلقائي."</string> <string-array name="tts_rate_entries"> @@ -284,7 +284,8 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"عرض خيارات شهادة عرض شاشة لاسلكي"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"زيادة مستوى تسجيل Wi-Fi، وعرض لكل SSID RSSI في منتقي Wi-Fi"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"لتقليل استنفاد البطارية وتحسين أداء الشبكة."</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"يؤثر مفتاح التبديل هذا في سلوك التوزيع العشوائي لعنوان MAC في وضع العميل فقط.\nعند تفعيل هذا الوضع، قد تتم عشوائيًا إعادة توزيع عناوين MAC أثناء الربط على أي شبكات تم تفعيل ميزة التوزيع العشوائي لعناوين MAC عليها، ويعتمد ذلك على آخر مرة تم فصل العميل فيها من الشبكة. لن تتم إعادة التوزيع العشوائي إذا تمت إعادة اتصال الجهاز خلال 4 ساعات أو أقل."</string> + <!-- no translation found for wifi_enhanced_mac_randomization_summary (1210663439867489931) --> + <skip /> <string name="wifi_metered_label" msgid="8737187690304098638">"تفرض تكلفة استخدام"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"بدون قياس"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"أحجام ذاكرة التخزين المؤقت للتسجيل"</string> @@ -373,8 +374,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"عرض مربع الحوار \"التطبيق لا يستجيب\" مع تطبيقات الخلفية"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"عرض تحذيرات قناة الإشعار"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"عرض تحذير على الشاشة عندما ينشر تطبيق إشعارًا بدون قناة صالحة"</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"فرض اختصارات لإشعارات المحادثات"</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"يجب دعم الإشعارات باختصار مشاركة قديم لتظهر في قسم المحادثات."</string> <string name="force_allow_on_external" msgid="9187902444231637880">"السماح بإدراج التطبيقات في وحدة تخزين خارجية"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"تأهيل أي تطبيق بحيث تتم كتابته على وحدة تخزين خارجية، بغض النظر عن قيم البيان"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"فرض إمكانية تغيير حجم الأنشطة"</string> diff --git a/packages/SettingsLib/res/values-as/strings.xml b/packages/SettingsLib/res/values-as/strings.xml index 587151fdccea..b6e62498a69e 100644 --- a/packages/SettingsLib/res/values-as/strings.xml +++ b/packages/SettingsLib/res/values-as/strings.xml @@ -284,7 +284,8 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"বেতাঁৰ ডিছপ্লে’ প্ৰমাণপত্ৰৰ বাবে বিকল্পসমূহ দেখুৱাওক"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"ৱাই-ফাই লগিঙৰ মাত্ৰা বঢ়াওক, Wi‑Fi পিকাৰত প্ৰতি SSID RSSI দেখুৱাওক"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"বেটাৰীৰ খৰচ কমায় আৰু নেটৱৰ্কৰ কাৰ্যক্ষমতা বৃদ্ধি কৰে"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"এই ট\'গল কৰা কার্যই MAC যাদৃচ্ছিকীকৰণৰ আচৰণ কেৱল ক্লায়েণ্ট ম\'ডৰ বাবে প্ৰভাৱিত কৰে।\nএই ম\'ডটো সক্ৰিয় কৰাৰ সময়ত, ক্লায়েণ্টে শেষবাৰৰ বাবে নেটৱর্কটোৰ পৰা কেতিয়া সংযোগ বিচ্ছিন্ন কৰিছে তাৰ ভিত্তিত MAC যাদৃচ্ছিকীকৰণ সক্ষম কৰি থোৱা যিকোনো নেটৱর্কৰ সংযোজনৰ সময়ত MAC ঠিকনাসমূহৰ পুনৰ যাদৃচ্ছিকীকৰণ হ\'ব পাৰে। ডিভাইচটো ৪ ঘণ্টা অথবা তাতকৈ কম সময়ৰ ভিতৰত পুনৰ সংযুক্ত হ\'লে পুনৰ যাদৃচ্ছিকীকৰণ নহয়।"</string> + <!-- no translation found for wifi_enhanced_mac_randomization_summary (1210663439867489931) --> + <skip /> <string name="wifi_metered_label" msgid="8737187690304098638">"নিৰিখ-নিৰ্দিষ্ট"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"নিৰিখ অনিৰ্দিষ্ট"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"লগাৰৰ বাফাৰৰ আকাৰ"</string> @@ -373,8 +374,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"নেপথ্য এপসমূহৰ বাবে এপে সঁহাৰি দিয়া নাই ডায়ল\'গ প্ৰদৰ্শন কৰক"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"জাননী চ্চেনেলৰ সকীয়নিসমূহ দেখুৱাওক"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"কোনো এপে বৈধ চ্চেনেল নোহোৱাকৈ কোনো জাননী প\'ষ্ট কৰিলে স্ক্ৰীণত সকীয়নি প্ৰদৰ্শন হয়"</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"বার্তালাপৰ জাননীৰ বাবে শ্বৰ্টকাট কাৰ্যকৰী কৰক"</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"বার্তালাপৰ শাখাত প্ৰদর্শিত হ\'বলৈ জাননী কোনো দীর্ঘস্থায়ী শ্বেয়াৰিং শ্বৰ্টকাটৰ সমৰ্থিত হ\'ব লাগে"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"বাহ্যিক সঞ্চয়াগাৰত এপক বলেৰে অনুমতি দিয়ক"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"মেনিফেষ্টৰ মান যিয়েই নহওক, বাহ্যিক সঞ্চয়াগাৰত লিখিবলৈ যিকোনো এপক উপযুক্ত কৰি তোলে"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"বলেৰে কাৰ্যকলাপসমূহৰ আকাৰ সলনি কৰিব পৰা কৰক"</string> diff --git a/packages/SettingsLib/res/values-az/strings.xml b/packages/SettingsLib/res/values-az/strings.xml index 738480f5cae8..8e95942fe83d 100644 --- a/packages/SettingsLib/res/values-az/strings.xml +++ b/packages/SettingsLib/res/values-az/strings.xml @@ -284,7 +284,8 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Simsiz displey sertifikatlaşması üçün seçimləri göstərir"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Wi‑Fi giriş səviyyəsini qaldırın, Wi‑Fi seçəndə hər SSID RSSI üzrə göstərin"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"Batareya istifadəsini azaldır & şəbəkə performansını yaxşılaşdırır"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"Bu keçid yalnız müştəri rejimi üçün MAC randomizasiyasına təsir edir.\nBu rejim aktivləşdirildikdə müştərinin şəbəkədən sonuncu dəfə ayrıldığı vaxtdan asılı olaraq, əlaqələndirmə zamanı MAC randomizasiyası aktivləşdirilmiş istənilən şəbəkənin MAC ünvanı təkrar randomizasiya olunacaq. Cihaz 4 saat və ya daha qısa zaman sonra təkrar qoşularsa, təkrar randomizasiya baş vermir."</string> + <!-- no translation found for wifi_enhanced_mac_randomization_summary (1210663439867489931) --> + <skip /> <string name="wifi_metered_label" msgid="8737187690304098638">"Ödənişli"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"Limitsiz"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"Logger bufer ölçüləri"</string> @@ -373,8 +374,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"Arxa fon tətbiqləri üçün Tətbiq Cavab Vermir dialoqunu göstərin"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"Xəbərdarlıqları göstərin"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"Bildiriş paylaşıldıqda xəbərdarlıq göstərir"</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"Söhbət bildirişləri üçün qısayolları tətbiq edin"</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"Söhbət bölməsində görünmək üçün bildirişlərin uzunmüddətli paylaşım qısayolu ilə dəstəklənməsini tələb edin"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"Tətbiqlərə xaricdən məcburi icazə"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"Seçilmiş hər hansı tətbiqi bəyannamə dəyərlərindən aslı olmayaraq xarici yaddaşa yazılabilən edir."</string> <string name="force_resizable_activities" msgid="7143612144399959606">"Ölçü dəyişdirmək üçün məcburi fəaliyyətlər"</string> diff --git a/packages/SettingsLib/res/values-b+sr+Latn/strings.xml b/packages/SettingsLib/res/values-b+sr+Latn/strings.xml index 6187f93a81d4..32f9ba0c1da5 100644 --- a/packages/SettingsLib/res/values-b+sr+Latn/strings.xml +++ b/packages/SettingsLib/res/values-b+sr+Latn/strings.xml @@ -284,7 +284,8 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Prikaz opcija za sertifikaciju bežičnog ekrana"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Povećava nivo evidentiranja za Wi‑Fi. Prikaz po SSID RSSI-u u biraču Wi‑Fi mreže"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"Smanjuje potrošnju baterije i poboljšava učinak mreže"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"Ovaj prekidač utiče na ponašanje nasumičnog razvrstavanja MAC adresa samo za režim klijenta.\nKada se ovaj režim aktivira, za mreže na kojima je omogućeno nasumično razvrstavanje MAC adresa može da dođe do ponovnog nasumičnog razvrstavanja MAC adresa tokom povezivanja, u zavisnosti od toga kada se klijent pre toga isključio sa mreže. Do ponovnog nasumičnog razvrstavanja ne dolazi ako se uređaj ponovo poveže za 4 sata ili manje."</string> + <!-- no translation found for wifi_enhanced_mac_randomization_summary (1210663439867489931) --> + <skip /> <string name="wifi_metered_label" msgid="8737187690304098638">"Sa ograničenjem"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"Bez ograničenja"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"Veličine bafera podataka u programu za evidentiranje"</string> @@ -373,8 +374,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"Prikaži dijalog Aplikacija ne reaguje za aplikacije u pozadini"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"Prikazuj upozorenja zbog kanala za obaveštenja"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"Prikazuje upozorenje na ekranu kada aplikacija postavi obaveštenje bez važećeg kanala"</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"Primenjuj prečice za obaveštenja o konverzacijama"</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"Zahteva da obaveštenja imaju i dugoročnu prečicu za deljenje kako bi se pojavljivala u odeljku za konverzacije"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"Prinudno dozvoli aplikacije u spoljnoj"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"Omogućava upisivanje svih aplikacija u spoljnu memoriju, bez obzira na vrednosti manifesta"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"Prinudno omogući promenu veličine aktivnosti"</string> diff --git a/packages/SettingsLib/res/values-be/strings.xml b/packages/SettingsLib/res/values-be/strings.xml index 6cca97da0a38..3e2bbfeab15d 100644 --- a/packages/SettingsLib/res/values-be/strings.xml +++ b/packages/SettingsLib/res/values-be/strings.xml @@ -284,7 +284,8 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Паказаць опцыі сертыфікацыі бесправаднога экрана"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Пры выбары сеткі Wi-Fi указваць у журнале RSSI для кожнага SSID"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"Зніжае расход зараду акумулятара і павышае прадукцыйнасць мабільных сетак"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"Гэты пераключальнік уплывае на рандамізацыю MAC-адрасоў толькі ў кліенцкім рэжыме.\nКалі гэты рэжым актываваны, ва ўсіх сетках з уключанай рандамізацыяй MAC-адрасоў падчас прывязвання можа выконвацца паўторная рандамізацыя ў залежнасці ад таго, калі кліент адключаўся ад сеткі ў апошні раз. Паўторная рандамізацыя не выконваецца, калі прылада зноў падключаецца да сеткі менш чым праз 4 гадзіны."</string> + <!-- no translation found for wifi_enhanced_mac_randomization_summary (1210663439867489931) --> + <skip /> <string name="wifi_metered_label" msgid="8737187690304098638">"Сетка з улікам трафіка"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"Сетка без уліку трафіка"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"Памеры буфера журнала"</string> @@ -373,8 +374,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"Паведамляць аб тым, што праграма не адказвае"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"Паказваць папярэджанні канала апавяшчэннаў"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"Паказвае папярэджанне на экране, калі праграма публікуе апавяшчэнне без сапраўднага канала"</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"Выкарыстоўваць ярлыкі для апавяшчэнняў з размоў"</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"Каб апавяшчэнні паяўляліся ў раздзеле размоў, абавязкова дубліраваць іх з дапамогай ярлыкоў з працяглым паказам"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"Прымусова дазволіць праграмы на вонкавым сховішчы"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"Робіць любую праграму даступнай для запісу на вонкавае сховішча, незалежна ад значэнняў маніфеста"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"Зрабіць вокны дзеянняў даступнымі для змены памеру"</string> diff --git a/packages/SettingsLib/res/values-bg/strings.xml b/packages/SettingsLib/res/values-bg/strings.xml index c128f3d0a7d8..95476edc091d 100644 --- a/packages/SettingsLib/res/values-bg/strings.xml +++ b/packages/SettingsLib/res/values-bg/strings.xml @@ -284,7 +284,8 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Показване на опциите за сертифициране на безжичния дисплей"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"По-подробно регистр. на Wi‑Fi – данни за RSSI на SSID в инстр. за избор на Wi‑Fi"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"Намалява изразходването на батерията и подобрява ефективността на мрежата"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"Този превключвател оказва влияние върху поведението при рандомизиране на MAC адреси само в режим на клиентска програма.\nКогато този режим е активиран, MAC адресът на всяка мрежа, за която функцията за рандомизиране е включена, може да бъде повторно рандомизиран по време на свързването в зависимост от това, кога последно клиентската програма е прекратила връзката си с мрежата. Не възниква повторно рандомизиране, ако устройството отново установи връзка до 4 часа."</string> + <!-- no translation found for wifi_enhanced_mac_randomization_summary (1210663439867489931) --> + <skip /> <string name="wifi_metered_label" msgid="8737187690304098638">"С отчитане"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"Без отчитане"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"Размери на регистрац. буфери"</string> @@ -373,8 +374,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"Показване на диалоговия прозорец за грешки от типа ANR за приложенията на заден план"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"Предупрежд. за канала за известия"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"Показва се предупреждение, когато приложение публикува известие без валиден канал"</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"Налагане на преки пътища за извест. за разговори"</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"За известията да се създава рез. копие чрез постоянен пряк път за споделяне, за да се показват в секцията с разговори"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"Външно хран.: принуд. разрешаване на приложенията"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"Всички приложения ще отговарят на условията да бъдат записвани във външното хранилище независимо от стойностите в манифеста"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"Възможност за преоразмеряване на активностите"</string> diff --git a/packages/SettingsLib/res/values-bn/strings.xml b/packages/SettingsLib/res/values-bn/strings.xml index bdc93380f31b..94e1f2383388 100644 --- a/packages/SettingsLib/res/values-bn/strings.xml +++ b/packages/SettingsLib/res/values-bn/strings.xml @@ -284,7 +284,8 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"ওয়্যারলেস প্রদর্শন সার্টিফিকেশন জন্য বিকল্পগুলি দেখান"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"ওয়াই-ফাই লগিং স্তর বাড়ান, ওয়াই-ফাই চয়নকারীতে SSID RSSI অনুযায়ী দেখান"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"ব্যাটারির খরচ কমায় এবং নেটওয়ার্কের পারফর্ম্যান্স উন্নত করে"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"এই টগলটি কেবল ক্লায়েন্ট মোডের জন্য ম্যাক র্যান্ডমাইজেশন আচরণকে প্রভাবিত করে।\nযখন এই মোডটি চালু করা হয়, তখন ক্লায়েন্টটি কখন নেটওয়ার্ক থেকে ডিসকানেক্ট হয়েছিল তার উপর নির্ভর করে কানেকশনটি সর্বশেষ কানেক্ট হওয়ার পরে MAC র্যান্ডম দ্বারা চালু করা যেকোনও MAC অ্যাড্রেস যেকোনও নেটওয়ার্কে আবার র্যান্ডমাইজেশন করা যেতে পারে। যদি ডিভাইসটি ৪ ঘন্টা বা তারও কম সময়ে আবার কানেক্ট করা হয় তবে এটি আর র্যান্ডমাইজেশন হবে না।"</string> + <!-- no translation found for wifi_enhanced_mac_randomization_summary (1210663439867489931) --> + <skip /> <string name="wifi_metered_label" msgid="8737187690304098638">"মিটার্ড"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"পরিমাপ করা নয়"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"লগার বাফারের আকারগুলি"</string> @@ -373,8 +374,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"ব্যাকগ্রাউন্ডের অ্যাপগুলির জন্য \'অ্যাপ থেকে সাড়া পাওয়া যাচ্ছে না\' মেসেজ দেখান"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"বিজ্ঞপ্তির সতর্কতা দেখুন"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"অ্যাপ সঠিক চ্যানেল ছাড়া বিজ্ঞপ্তি দেখালে সতর্ক করে"</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"কথোপকথনের বিজ্ঞপ্তির জন্য শর্টকাট ব্যবহার করুন"</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"কথোপকথন বিভাগে দেখানোর জন্য বিজ্ঞপ্তিতে অনেকটা সময় ধরে চলে এমন শেয়ারিং শর্টকাট যেন থাকে"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"বহিরাগততে বলপূর্বক মঞ্জুরি"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"ম্যানিফেস্ট মানগুলি নির্বিশেষে যেকোনো অ্যাপ্লিকেশানকে বাহ্যিক সঞ্চয়স্থানে লেখার উপযুক্ত বানায়"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"আকার পরিবর্তনযোগ্য করার জন্য ক্রিয়াকলাপগুলিকে জোর করুন"</string> diff --git a/packages/SettingsLib/res/values-bs/strings.xml b/packages/SettingsLib/res/values-bs/strings.xml index 6f9188d5ac36..2f486aa51158 100644 --- a/packages/SettingsLib/res/values-bs/strings.xml +++ b/packages/SettingsLib/res/values-bs/strings.xml @@ -284,7 +284,8 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Prikaz opcija za certifikaciju bežičnog prikaza"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Povećani nivo zapisnika za WiFi. Prikaz po SSID RSSI-ju u Biraču WiFi-ja"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"Smanjuje potrošnju baterije i poboljšava performanse mreže"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"Ovo aktiviranje/deaktiviranje utiče na ponašanje nasumičnog odabira MAC adrese isključivo za način rada klijenta.\nKada je taj način aktiviran, na svakoj mreži na kojoj je omogućen nasumični odabir MAC adrese može doći do ponovnog nasumičnog odabira MAC adrese za vrijeme povezivanja, u zavisnosti od toga kada je posljednji put prekinuta povezanost klijenta s mrežom. Do ponovnog nasumičnog odabira ne dolazi ako se uređaj ponovo poveže u roku od 4 sata ili ranije."</string> + <!-- no translation found for wifi_enhanced_mac_randomization_summary (1210663439867489931) --> + <skip /> <string name="wifi_metered_label" msgid="8737187690304098638">"S naplatom"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"Mreža bez naplate"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"Veličine međumemorije zapisnika"</string> @@ -373,8 +374,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"Prikaz dijaloga \"Aplikacija ne reagira\" za aplikacije pokrenute u pozadini"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"Prikaži upozorenja kanala obavještenja"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"Prikaz upozorenja na ekranu kada aplikacija pošalje obavještenje bez važećeg kanala"</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"Primijeni prečice za obavještenja o razgovorima"</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"Traži da obavještenja imaju dugotrajnu prečicu za dijeljenje radi prikaza u odjeljku za razgovore"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"Nametni aplikacije na vanjskoj pohrani"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"Omogućava upisivanje svih aplikacija u vanjsku pohranu, bez obzira na prikazane vrijednosti"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"Nametni aktivnostima mijenjanje veličina"</string> diff --git a/packages/SettingsLib/res/values-ca/strings.xml b/packages/SettingsLib/res/values-ca/strings.xml index da70d3b04f38..baee1517711b 100644 --- a/packages/SettingsLib/res/values-ca/strings.xml +++ b/packages/SettingsLib/res/values-ca/strings.xml @@ -284,7 +284,8 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Mostra les opcions per a la certificació de pantalla sense fil"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Augmenta nivell de registre Wi‑Fi, mostra\'l per SSID RSSI al selector de Wi‑Fi"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"Redueix el consum de bateria i millora el rendiment de la xarxa"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"Aquest commutador afecta el comportament de l\'aleatorització d\'adreces MAC només en el mode client.\nQuan aquest mode està activat, és possible que les adreces MAC de les xarxes que tinguin activada l’aleatorització es tornin a ordenar de manera aleatòria durant l’associació, en funció de l\'última vegada que el client s\'ha desconnectat de la xarxa. Les adreces no es tornen a ordenar de manera aleatòria si el dispositiu es torna a connectar abans de 4 hores."</string> + <!-- no translation found for wifi_enhanced_mac_randomization_summary (1210663439867489931) --> + <skip /> <string name="wifi_metered_label" msgid="8737187690304098638">"D\'ús mesurat"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"D\'ús no mesurat"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"Mides de la mem. intermèdia del registrador"</string> @@ -373,8 +374,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"Mostra el quadre de diàleg L\'aplicació no respon per a aplicacions en segon pla"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"Mostra avisos del canal de notificacions"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"Mostra un avís en pantalla quan una aplicació publica una notificació sense un canal vàlid"</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"Aplica dreceres per a notificacions de converses"</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"Requereix que les notificacions tinguin una drecera permanent de compartició perquè apareguin a la secció de converses"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"Força permetre aplicacions de manera externa"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"Permet que qualsevol aplicació es pugui escriure en un dispositiu d’emmagatzematge extern, independentment dels valors definits"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"Força l\'ajust de la mida de les activitats"</string> diff --git a/packages/SettingsLib/res/values-cs/strings.xml b/packages/SettingsLib/res/values-cs/strings.xml index 4d071b091543..26fb72ea860f 100644 --- a/packages/SettingsLib/res/values-cs/strings.xml +++ b/packages/SettingsLib/res/values-cs/strings.xml @@ -284,7 +284,8 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Zobrazit možnosti certifikace bezdrátového displeje"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Zvýšit úroveň protokolování Wi‑Fi zobrazenou v SSID a RSSI při výběru sítě Wi‑Fi."</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"Snižuje vyčerpávání baterie a vylepšuje výkon sítě"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"Tento přepínač má vliv pouze na chování randomizace adres MAC pro režim klienta.\nKdyž je tento režim aktivován, u sítí s povolenou randomizací adresa MAC mohou být během přidružování adresy MAC randomizovány znovu, podle toho, kdy se klient od sítě naposledy odpojil. Opětovná randomizace se neprovádí, pokud se zařízení připojí znovu do 4 hodin."</string> + <!-- no translation found for wifi_enhanced_mac_randomization_summary (1210663439867489931) --> + <skip /> <string name="wifi_metered_label" msgid="8737187690304098638">"Měřená"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"Neměřená"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"Vyrovnávací paměť protokol. nástroje"</string> @@ -373,8 +374,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"Zobrazovat dialog „Aplikace neodpovídá“ pro aplikace na pozadí"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"Zobrazovat upozornění ohledně kanálu oznámení"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"Když aplikace odešle oznámení bez platného kanálu, na obrazovce se zobrazí upozornění"</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"U oznámení konverzací vyžadovat zkratky"</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"V sekci konverzace zobrazovat pouze oznámení podložená dlouhodobými sdílecími zkratkami"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"Vynutit povolení aplikací na externím úložišti"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"Každou aplikaci bude možné zapsat do externího úložiště, bez ohledu na hodnoty manifestu"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"Vynutit možnost změny velikosti aktivit"</string> diff --git a/packages/SettingsLib/res/values-da/strings.xml b/packages/SettingsLib/res/values-da/strings.xml index ba56d32a6680..ed3d8c550958 100644 --- a/packages/SettingsLib/res/values-da/strings.xml +++ b/packages/SettingsLib/res/values-da/strings.xml @@ -284,7 +284,8 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Vis valgmuligheder for certificering af trådløs skærm"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Øg mængden af Wi‑Fi-logføring. Vis opdelt efter SSID RSSI i Wi‑Fi-vælgeren"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"Reducerer batteriforbruget og forbedrer netværkets effektivitet"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"Denne skift påvirker kun MAC-randomisering for klienttilstand.\nNår denne tilstand er aktiveret, kan netværk, der har Mac-randomisering aktiveret, få deres MAC-adresser randomiseret igen, når der oprettes forbindelse, afhængigt af hvornår klienten sidst afbrød forbindelse til netværket. Randomisering sker ikke igen, hvis enheden forbinder igen inden for højst 4 timer."</string> + <!-- no translation found for wifi_enhanced_mac_randomization_summary (1210663439867489931) --> + <skip /> <string name="wifi_metered_label" msgid="8737187690304098638">"Forbrugsafregnet"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"Ikke forbrugsafregnet"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"Størrelser for Logger-buffer"</string> @@ -373,8 +374,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"Vis dialogboksen \"Appen svarer ikke\" for baggrundsapps"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"Vis advarsler om notifikationskanal"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"Viser en advarsel, når en app sender en notifikation uden en gyldig kanal"</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"Kræv genveje til samtalenotifikationer"</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"Kræv, at notifikationer bakkes op af en langvarig delingsgenvej, hvis de skal vises i samtalesektionen"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"Gennemtving tilladelse til eksternt lager"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"Gør det muligt at overføre enhver app til et eksternt lager uafhængigt af manifestværdier"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"Gennemtving, at aktiviteter kan tilpasses"</string> diff --git a/packages/SettingsLib/res/values-de/strings.xml b/packages/SettingsLib/res/values-de/strings.xml index 59c5b1d96eb3..bce0e3d62559 100644 --- a/packages/SettingsLib/res/values-de/strings.xml +++ b/packages/SettingsLib/res/values-de/strings.xml @@ -284,7 +284,8 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Optionen zur Zertifizierung für kabellose Übertragung anzeigen"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"WLAN-Protokollierungsebene erhöhen, pro SSID RSSI in WiFi Picker anzeigen"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"Verringert den Akkuverbrauch und verbessert die Netzwerkleistung"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"Hiermit wird das Verhalten der MAC-Adressrandomisierung ausschließlich für den Clientmodus umgeschaltet.\nWenn dieser Modus aktiviert ist, werden bei allen Netzwerken, bei denen die MAC-Randomisierung aktiviert ist, die MAC-Adressen während der Verknüpfung abhängig davon, wann der Client zuletzt vom Netzwerk getrennt wurde, wieder randomisiert. Die erneute Randomisierung findet nicht statt, wenn die Verbindung des Geräts innerhalb von maximal 4 Stunden wiederhergestellt wird."</string> + <!-- no translation found for wifi_enhanced_mac_randomization_summary (1210663439867489931) --> + <skip /> <string name="wifi_metered_label" msgid="8737187690304098638">"Kostenpflichtig"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"Kostenlos"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"Logger-Puffergrößen"</string> @@ -373,8 +374,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"Bei Abstürzen von Hintergrund-Apps \"App reagiert nicht\"-Dialog anzeigen"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"Benachrichtigungskanal- Warnungen anzeigen"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"Bei Benachrichtigungen ohne gültigen Kanal wird eine Warnung angezeigt"</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"Tastenkombination für Benachrichtigungen zur Unterhaltung erzwingen"</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"Benachrichtigungen müssen durch eine langlebige Tastenkombination zum Teilen unterstützt werden, um im Bereich der Unterhaltung zu erscheinen"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"Sperrung des externen Speichers für alle Apps aufheben"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"Jede App kann, ungeachtet der Manifestwerte, in den externen Speicher geschrieben werden"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"Aktivitätengröße darf immer angepasst werden"</string> diff --git a/packages/SettingsLib/res/values-el/strings.xml b/packages/SettingsLib/res/values-el/strings.xml index 85defcb1dc2d..bdf65cc8f0cb 100644 --- a/packages/SettingsLib/res/values-el/strings.xml +++ b/packages/SettingsLib/res/values-el/strings.xml @@ -284,7 +284,8 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Εμφάνιση επιλογών για πιστοποίηση ασύρματης οθόνης"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Αύξηση επιπέδου καταγ. Wi-Fi, εμφάνιση ανά SSID RSSI στο εργαλείο επιλογής Wi-Fi"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"Περιορίζει την κατανάλωση της μπαταρίας και βελτιώνει την απόδοση του δικτύου"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"Αυτός ο διακόπτης επηρεάζει τη συμπεριφορά της ρύθμισης τυχαίας σειράς διευθύνσεων MAC μόνο για τη λειτουργία εφαρμογής πελάτη.\nΌταν αυτή η λειτουργία είναι ενεργοποιημένη, σε όλα τα δίκτυα που είναι ενεργή η ρύθμιση τυχαίας σειράς διευθύνσεων MAC ενδέχεται να αλλάξει ξανά η τυχαία σειρά των διευθύνσεων MAC κατά τη συσχέτιση, ανάλογα με το πότε έγινε η τελευταία αποσύνδεση της εφαρμογής πελάτη από το δίκτυο. Αν η συσκευή επανασυνδεθεί μέσα σε 4 ώρες ή λιγότερες, τότε δεν θα αλλάξει η τυχαία σειρά."</string> + <!-- no translation found for wifi_enhanced_mac_randomization_summary (1210663439867489931) --> + <skip /> <string name="wifi_metered_label" msgid="8737187690304098638">"Μέτρηση με βάση τη χρήση"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"Χωρίς μέτρηση με βάση τη χρήση"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"Μέγεθος προσωρινής μνήμης για τη λειτουργία καταγραφής"</string> @@ -373,8 +374,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"Εμφάνιση του παραθύρου \"Η εφαρμογή δεν αποκρίνεται\" για εφαρμογές παρασκηνίου"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"Εμφάνιση προειδοπ. καναλιού ειδοπ."</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"Εμφανίζει προειδοποίηση όταν μια εφαρμογή δημοσιεύει ειδοποίηση χωρίς έγκυρο κανάλι"</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"Επιβολή συντομεύσεων για ειδοποιήσεις συνομιλίας"</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"Να απαιτείται η υποστήριξη των ειδοπ. από μια συντόμευση κοινοποίησης μεγάλης διάρκειας για να εμφανίζονται στην ενότητα συνομιλίας"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"Να επιτρέπονται υποχρεωτικά εφαρμογές σε εξωτ.συσ."</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"Κάνει κάθε εφαρμογή κατάλληλη για εγγραφή σε εξωτερικό αποθηκευτικό χώρο, ανεξάρτητα από τις τιμές του μανιφέστου"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"Αναγκαστική δυνατότητα αλλαγής μεγέθους δραστηριοτήτων"</string> diff --git a/packages/SettingsLib/res/values-en-rAU/strings.xml b/packages/SettingsLib/res/values-en-rAU/strings.xml index 06be94227e1c..c013a734e255 100644 --- a/packages/SettingsLib/res/values-en-rAU/strings.xml +++ b/packages/SettingsLib/res/values-en-rAU/strings.xml @@ -284,7 +284,8 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Show options for wireless display certification"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Increase Wi‑Fi logging level, show per SSID RSSI in Wi‑Fi Picker"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"Reduces battery drain and improves network performance"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"This toggle affects MAC randomisation behaviour for client mode only.\nWhen this mode is activated, any networks that have MAC randomisation enabled may have their MAC addresses re‑randomised during association, depending on when the client last disconnected from the network. Re‑randomisation does not occur if the device reconnects in four hours or less."</string> + <!-- no translation found for wifi_enhanced_mac_randomization_summary (1210663439867489931) --> + <skip /> <string name="wifi_metered_label" msgid="8737187690304098638">"Metered"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"Unmetered"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"Logger buffer sizes"</string> @@ -373,8 +374,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"Display App Not Responding dialogue for background apps"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"Show notification channel warnings"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"Displays on-screen warning when an app posts a notification without a valid channel"</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"Enforce shortcuts for conversation notifications"</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"Require notifications to be backed by a long-lived sharing shortcut in order to appear in the conversation section"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"Force allow apps on external"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"Makes any app eligible to be written to external storage, regardless of manifest values"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"Force activities to be resizeable"</string> diff --git a/packages/SettingsLib/res/values-en-rCA/strings.xml b/packages/SettingsLib/res/values-en-rCA/strings.xml index 06be94227e1c..c013a734e255 100644 --- a/packages/SettingsLib/res/values-en-rCA/strings.xml +++ b/packages/SettingsLib/res/values-en-rCA/strings.xml @@ -284,7 +284,8 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Show options for wireless display certification"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Increase Wi‑Fi logging level, show per SSID RSSI in Wi‑Fi Picker"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"Reduces battery drain and improves network performance"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"This toggle affects MAC randomisation behaviour for client mode only.\nWhen this mode is activated, any networks that have MAC randomisation enabled may have their MAC addresses re‑randomised during association, depending on when the client last disconnected from the network. Re‑randomisation does not occur if the device reconnects in four hours or less."</string> + <!-- no translation found for wifi_enhanced_mac_randomization_summary (1210663439867489931) --> + <skip /> <string name="wifi_metered_label" msgid="8737187690304098638">"Metered"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"Unmetered"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"Logger buffer sizes"</string> @@ -373,8 +374,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"Display App Not Responding dialogue for background apps"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"Show notification channel warnings"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"Displays on-screen warning when an app posts a notification without a valid channel"</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"Enforce shortcuts for conversation notifications"</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"Require notifications to be backed by a long-lived sharing shortcut in order to appear in the conversation section"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"Force allow apps on external"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"Makes any app eligible to be written to external storage, regardless of manifest values"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"Force activities to be resizeable"</string> diff --git a/packages/SettingsLib/res/values-en-rGB/strings.xml b/packages/SettingsLib/res/values-en-rGB/strings.xml index 06be94227e1c..c013a734e255 100644 --- a/packages/SettingsLib/res/values-en-rGB/strings.xml +++ b/packages/SettingsLib/res/values-en-rGB/strings.xml @@ -284,7 +284,8 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Show options for wireless display certification"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Increase Wi‑Fi logging level, show per SSID RSSI in Wi‑Fi Picker"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"Reduces battery drain and improves network performance"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"This toggle affects MAC randomisation behaviour for client mode only.\nWhen this mode is activated, any networks that have MAC randomisation enabled may have their MAC addresses re‑randomised during association, depending on when the client last disconnected from the network. Re‑randomisation does not occur if the device reconnects in four hours or less."</string> + <!-- no translation found for wifi_enhanced_mac_randomization_summary (1210663439867489931) --> + <skip /> <string name="wifi_metered_label" msgid="8737187690304098638">"Metered"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"Unmetered"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"Logger buffer sizes"</string> @@ -373,8 +374,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"Display App Not Responding dialogue for background apps"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"Show notification channel warnings"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"Displays on-screen warning when an app posts a notification without a valid channel"</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"Enforce shortcuts for conversation notifications"</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"Require notifications to be backed by a long-lived sharing shortcut in order to appear in the conversation section"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"Force allow apps on external"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"Makes any app eligible to be written to external storage, regardless of manifest values"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"Force activities to be resizeable"</string> diff --git a/packages/SettingsLib/res/values-en-rIN/strings.xml b/packages/SettingsLib/res/values-en-rIN/strings.xml index 06be94227e1c..c013a734e255 100644 --- a/packages/SettingsLib/res/values-en-rIN/strings.xml +++ b/packages/SettingsLib/res/values-en-rIN/strings.xml @@ -284,7 +284,8 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Show options for wireless display certification"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Increase Wi‑Fi logging level, show per SSID RSSI in Wi‑Fi Picker"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"Reduces battery drain and improves network performance"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"This toggle affects MAC randomisation behaviour for client mode only.\nWhen this mode is activated, any networks that have MAC randomisation enabled may have their MAC addresses re‑randomised during association, depending on when the client last disconnected from the network. Re‑randomisation does not occur if the device reconnects in four hours or less."</string> + <!-- no translation found for wifi_enhanced_mac_randomization_summary (1210663439867489931) --> + <skip /> <string name="wifi_metered_label" msgid="8737187690304098638">"Metered"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"Unmetered"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"Logger buffer sizes"</string> @@ -373,8 +374,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"Display App Not Responding dialogue for background apps"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"Show notification channel warnings"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"Displays on-screen warning when an app posts a notification without a valid channel"</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"Enforce shortcuts for conversation notifications"</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"Require notifications to be backed by a long-lived sharing shortcut in order to appear in the conversation section"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"Force allow apps on external"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"Makes any app eligible to be written to external storage, regardless of manifest values"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"Force activities to be resizeable"</string> diff --git a/packages/SettingsLib/res/values-en-rXC/strings.xml b/packages/SettingsLib/res/values-en-rXC/strings.xml index b0424e22fb77..95bc93628f21 100644 --- a/packages/SettingsLib/res/values-en-rXC/strings.xml +++ b/packages/SettingsLib/res/values-en-rXC/strings.xml @@ -284,7 +284,7 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Show options for wireless display certification"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Increase Wi‑Fi logging level, show per SSID RSSI in Wi‑Fi Picker"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"Reduces battery drain & improves network performance"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"This toggle affects MAC randomization behavior for client mode only.\nWhen this mode is activated, any networks that have MAC randomization enabled may have their MAC addresses re‑randomized during association, depending on when the client last disconnected from the network. Re‑randomization does not occur if the device reconnects in 4 hours or less."</string> + <string name="wifi_enhanced_mac_randomization_summary" msgid="1210663439867489931">"When this mode is enabled, this device’s MAC address may change each time it connects to a network that has MAC randomization enabled."</string> <string name="wifi_metered_label" msgid="8737187690304098638">"Metered"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"Unmetered"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"Logger buffer sizes"</string> @@ -373,8 +373,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"Display App Not Responding dialog for background apps"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"Show notification channel warnings"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"Displays on-screen warning when an app posts a notification without a valid channel"</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"Enforce shortcuts for conversation notifications"</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"Require notifications to be backed by a long-lived sharing shortcut in order to appear in the conversation section"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"Force allow apps on external"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"Makes any app eligible to be written to external storage, regardless of manifest values"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"Force activities to be resizable"</string> diff --git a/packages/SettingsLib/res/values-es-rUS/strings.xml b/packages/SettingsLib/res/values-es-rUS/strings.xml index 8744cb1735a9..303f2e5f1403 100644 --- a/packages/SettingsLib/res/values-es-rUS/strings.xml +++ b/packages/SettingsLib/res/values-es-rUS/strings.xml @@ -284,7 +284,8 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Mostrar opciones de certificación de pantalla inalámbrica"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Aumentar nivel de registro Wi-Fi; mostrar por SSID RSSI en el selector de Wi-Fi"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"Reduce el consumo de batería y mejora el rendimiento de la red"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"Esta activación afecta el comportamiento de aleatorización de MAC para el modo de cliente solamente.\nCuando este modo está activado, todas las redes que tienen aleatorización de MAC habilitada pueden volver a establecer de manera aleatoria sus direcciones MAC durante la asociación, según cuándo el cliente se desconectó por última vez de la red. El proceso volver a establecer de manera aleatoria no se produce si el dispositivo se vuelve a conectar en 4 horas o menos."</string> + <!-- no translation found for wifi_enhanced_mac_randomization_summary (1210663439867489931) --> + <skip /> <string name="wifi_metered_label" msgid="8737187690304098638">"Con uso medido"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"Sin tarifa plana"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"Tamaños de búfer de Logger"</string> @@ -373,8 +374,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"Mostrar diálogo cuando las apps en segundo plano no responden"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"Alertas de notificaciones"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"Advertencia en pantalla cuando una app publica una notificación sin canal válido"</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"Acc. dir. notif. de conv."</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"Notif. requieren acc. dir. permanente de uso comp."</string> <string name="force_allow_on_external" msgid="9187902444231637880">"Forzar permisos en almacenamiento externo"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"Cualquier app puede escribirse en un almacenamiento externo, sin importar los valores del manifiesto"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"Forzar actividades para que cambien de tamaño"</string> diff --git a/packages/SettingsLib/res/values-es/strings.xml b/packages/SettingsLib/res/values-es/strings.xml index f1540e6dac87..c7c374fd2c3e 100644 --- a/packages/SettingsLib/res/values-es/strings.xml +++ b/packages/SettingsLib/res/values-es/strings.xml @@ -153,7 +153,7 @@ <string name="unknown" msgid="3544487229740637809">"Desconocido"</string> <string name="running_process_item_user_label" msgid="3988506293099805796">"Usuario: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> <string name="launch_defaults_some" msgid="3631650616557252926">"Se han establecido algunos valores predeterminados"</string> - <string name="launch_defaults_none" msgid="8049374306261262709">"No se han establecido valores predeterminados"</string> + <string name="launch_defaults_none" msgid="8049374306261262709">"No se han establecido opciones predeterminadas"</string> <string name="tts_settings" msgid="8130616705989351312">"Ajustes de síntesis de voz"</string> <string name="tts_settings_title" msgid="7602210956640483039">"Síntesis de voz"</string> <string name="tts_default_rate_title" msgid="3964187817364304022">"Velocidad de la voz"</string> @@ -207,7 +207,7 @@ <string name="enable_adb_summary" msgid="3711526030096574316">"Activar el modo de depuración cuando el dispositivo esté conectado por USB"</string> <string name="clear_adb_keys" msgid="3010148733140369917">"Revocar autorizaciones de depuración USB"</string> <string name="enable_adb_wireless" msgid="6973226350963971018">"Depuración inalámbrica"</string> - <string name="enable_adb_wireless_summary" msgid="7344391423657093011">"Activar el modo Depuración cuando tenga conexión Wi‑Fi"</string> + <string name="enable_adb_wireless_summary" msgid="7344391423657093011">"Activa el modo de depuración cuando haya conexión Wi‑Fi"</string> <string name="adb_wireless_error" msgid="721958772149779856">"Error"</string> <string name="adb_wireless_settings" msgid="2295017847215680229">"Depuración inalámbrica"</string> <string name="adb_wireless_list_empty_off" msgid="1713707973837255490">"Para ver y utilizar los dispositivos disponibles, activa la depuración inalámbrica"</string> @@ -226,12 +226,12 @@ <string name="adb_pairing_device_dialog_pairing_code_label" msgid="3639239786669722731">"Código de sincronización de Wi‑Fi"</string> <string name="adb_pairing_device_dialog_failed_title" msgid="3426758947882091735">"No se ha podido vincular"</string> <string name="adb_pairing_device_dialog_failed_msg" msgid="6611097519661997148">"Comprueba que el dispositivo está conectado a la misma red."</string> - <string name="adb_wireless_qrcode_summary" msgid="8051414549011801917">"Vincula un dispositivo a través de Wi‑Fi con un código QR"</string> + <string name="adb_wireless_qrcode_summary" msgid="8051414549011801917">"Vincula un dispositivo mediante Wi‑Fi con un código QR"</string> <string name="adb_wireless_verifying_qrcode_text" msgid="6123192424916029207">"Vinculando dispositivo…"</string> <string name="adb_qrcode_pairing_device_failed_msg" msgid="6936292092592914132">"No se ha podido vincular el dispositivo. El código QR no era correcto o el dispositivo no estaba conectado a la misma red."</string> <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"Dirección IP y puerto"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"Escanea el código QR"</string> - <string name="adb_wireless_qrcode_pairing_description" msgid="6014121407143607851">"Vincula un dispositivo a través de Wi‑Fi escaneando un código QR"</string> + <string name="adb_wireless_qrcode_pairing_description" msgid="6014121407143607851">"Vincula un dispositivo mediante Wi‑Fi escaneando un código QR"</string> <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"Conéctate a una red Wi-Fi"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, depuración, desarrollo"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"Atajo a informe de errores"</string> @@ -284,7 +284,8 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Mostrar opciones para la certificación de la pantalla inalámbrica"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Aumentar el nivel de registro de Wi-Fi y mostrar por SSID RSSI en el selector Wi-Fi"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"Reduce el consumo de batería y mejora el rendimiento de las redes"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"Este interruptor solo afecta al comportamiento al aleatorizar direcciones MAC en el modo cliente.\nCuando este modo está activado, las direcciones MAC de las redes que tengan activada la aleatorización de la dirección MAC se pueden volver a aleatorizar durante la asociación. Esto depende de la última vez en la que el cliente se desconectó de la red. No se volverán a aleatorizar si transcurrieron 4 horas o menos desde la última conexión del dispositivo."</string> + <!-- no translation found for wifi_enhanced_mac_randomization_summary (1210663439867489931) --> + <skip /> <string name="wifi_metered_label" msgid="8737187690304098638">"Medida"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"No medida"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"Tamaños del búfer para registrar"</string> @@ -373,8 +374,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"Mostrar el diálogo de que la aplicación no responde para aplicaciones en segundo plano"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"Ver advertencias del canal de notificaciones"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"Mostrar una advertencia en pantalla cuando una aplicación publica una notificación sin un canal válido"</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"Implementar atajos en notific. de conversaciones"</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"Exigir que las notificaciones tengan un atajo para compartir y que así aparezcan en la sección de conversaciones"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"Forzar permitir aplicaciones de forma externa"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"Hacer que cualquier aplicación se pueda escribir en un dispositivo de almacenamiento externo independientemente de los valores definidos"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"Forzar el ajuste de tamaño de las actividades"</string> diff --git a/packages/SettingsLib/res/values-et/strings.xml b/packages/SettingsLib/res/values-et/strings.xml index 206917e0d3c2..d5b96c13dfa4 100644 --- a/packages/SettingsLib/res/values-et/strings.xml +++ b/packages/SettingsLib/res/values-et/strings.xml @@ -284,7 +284,8 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Juhtmeta ekraaniühenduse sertifitseerimisvalikute kuvamine"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Suurenda WiFi logimistaset, kuva WiFi valijas SSID RSSI järgi"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"Aeglustab aku tühjenemist ja parandab võrgu toimivust"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"See lüliti mõjutab MAC-aadressi juhuslikustamise käitumist ainult kliendirežiimis.\nSelle režiimi aktiveerimisel võidakse seostamise ajal MAC-aadressid uuesti juhuslikustada kõigi võrkude jaoks, millel on MAC-aadressi juhuslikustamine lubatud, olenevalt sellest, millal klient viimati ühenduse võrguga katkestas. Uuesti juhuslikustamist ei toimu juhul, kui seade loob uuesti ühenduse kuni 4 tunni jooksul."</string> + <!-- no translation found for wifi_enhanced_mac_randomization_summary (1210663439867489931) --> + <skip /> <string name="wifi_metered_label" msgid="8737187690304098638">"Mahupõhine"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"Mittemahupõhine"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"Logija puhvri suurused"</string> @@ -373,8 +374,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"Kuva taustarakenduste puhul dialoog Rakendus ei reageeri"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"Kuva märguandekanali hoiatused"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"Esitab ekraanil hoiatuse, kui rakendus postitab kehtiva kanalita märguande"</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"Otseteede jõustamine vestluste märguannete jaoks"</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"Nõutakse märguannete toetamist pikaajalise jagamise otseteega, et selle saaks vestluse jaotises kuvada"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"Luba rakendused välises salvestusruumis"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"Lubab mis tahes rakendusi kirjutada välisesse salvestusruumi manifesti väärtustest olenemata"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"Muuda tegevuste suurused muudetavaks"</string> diff --git a/packages/SettingsLib/res/values-eu/strings.xml b/packages/SettingsLib/res/values-eu/strings.xml index d2c2ae4dd299..685facb4dea9 100644 --- a/packages/SettingsLib/res/values-eu/strings.xml +++ b/packages/SettingsLib/res/values-eu/strings.xml @@ -284,7 +284,8 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Erakutsi hari gabe bistaratzeko ziurtagiriaren aukerak"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Erakutsi datu gehiago wifi-sareetan saioa hastean. Erakutsi sarearen identifikatzailea eta seinalearen indarra wifi-sareen hautatzailean."</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"Bateria gutxiago kontsumituko da, eta sarearen errendimendua hobetuko."</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"Bezero modurako soilik MAC helbideak ausaz aukeratzeko eginbidearen portaerari eragiten dio etengailu honek.\nModu hau aktibatuta dagoenean, baliteke MAC helbideak ausaz aukeratzeko eginbidea aktibatuta daukaten sareen MAC helbideak berriro ausaz aukeratzea haiek lotu bitartean, bezeroa saretik deskonektatuta ematen duen denboraren arabera. Gailua lau ordu edo gutxiagoren buruan berriro konektatzen bada, ez da berriro MAC helbiderik ausaz aukeratuko."</string> + <!-- no translation found for wifi_enhanced_mac_randomization_summary (1210663439867489931) --> + <skip /> <string name="wifi_metered_label" msgid="8737187690304098638">"Sare neurtua"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"Neurtu gabeko sarea"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"Erregistroen buffer-tamainak"</string> @@ -373,8 +374,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"Erakutsi aplikazioak ez erantzutearen (ANR) leihoa atzeko planoan dabiltzan aplikazioen kasuan"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"Erakutsi jakinarazpenen kanalen abisuak"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"Bistaratu abisuak aplikazioek baliozko kanalik gabeko jakinarazpenak argitaratzean"</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"Erabili lasterbideak elkarrizketen jakinarazpenetan"</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"Eskatu jakinarazpenak partekatze-lasterbide iragankor batean oinarrituta egotea elkarrizketa-atalean agertzeko"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"Behartu aplikazioak onartzea kanpoko memorian"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"Aplikazioek kanpoko memorian idatz dezakete, ezarritako balioak kontuan izan gabe"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"Behartu jardueren tamaina doitu ahal izatea"</string> diff --git a/packages/SettingsLib/res/values-fa/strings.xml b/packages/SettingsLib/res/values-fa/strings.xml index fba9ae5532f2..12a6486ac65d 100644 --- a/packages/SettingsLib/res/values-fa/strings.xml +++ b/packages/SettingsLib/res/values-fa/strings.xml @@ -284,7 +284,8 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"نمایش گزینهها برای گواهینامه نمایش بیسیم"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"افزایش سطح گزارشگیری Wi‑Fi، نمایش به ازای SSID RSSI در انتخابکننده Wi‑Fi"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"تخلیه باتری راکاهش میدهد و عملکرد شبکه را بهبود میبخشد"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"فعال/غیرفعال کردن این تنظیم فقط درحالت کارخواه بر عملکرد تصادفیسازی MAC تأثیر میگذارد.\nوقتی این حالت فعال باشد، ممکن است در شبکههایی که تصادفیسازی MAC فعال است، نشانیهای MAC درطول ارتباط دوباره تصادفیسازی شوند، بسته به اینکه اتصال کارخواه آخرین بار چه زمانی از شبکه قطع شده باشد. اگر دستگاه ظرف ۴ ساعت یا کمتر دوباره متصل شود، تصادفیسازی مجدد انجام نمیشود."</string> + <!-- no translation found for wifi_enhanced_mac_randomization_summary (1210663439867489931) --> + <skip /> <string name="wifi_metered_label" msgid="8737187690304098638">"محدودشده"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"محدودنشده"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"اندازههای حافظه موقت ثبتکننده"</string> @@ -373,8 +374,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"نمایش گفتگوی \"برنامه پاسخ نمیدهد\" برای برنامههای پسزمینه"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"نمایش هشدارهای کانال اعلان"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"هنگامی که برنامهای بدون وجود کانالی معتبر، اعلانی پست میکند، هشدار روی صفحهای نمایش میدهد"</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"اجرای میانبرها برای اعلانهای مکالمه"</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"اعلانها باید با میانبر ماندگار همرسانی پشتیبانی شوند تا در بخش مکالمه نشان داده شوند"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"اجازه اجباری به برنامههای دستگاه ذخیره خارجی"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"بدون توجه به مقادیر آشکار، هر برنامهای را برای نوشتن در حافظه خارجی واجد شرایط میکند"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"اجبار فعالیتها به قابل تغییر اندازه بودن"</string> diff --git a/packages/SettingsLib/res/values-fi/strings.xml b/packages/SettingsLib/res/values-fi/strings.xml index 969180f2fd1e..c8cf2d131333 100644 --- a/packages/SettingsLib/res/values-fi/strings.xml +++ b/packages/SettingsLib/res/values-fi/strings.xml @@ -284,7 +284,8 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Näytä langattoman näytön sertifiointiin liittyvät asetukset."</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Lisää Wi‑Fin lokikirjaustasoa, näytä SSID RSSI -kohtaisesti Wi‑Fi-valitsimessa."</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"Vähentää virrankulutusta ja parantaa verkon toimintaa"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"Tämä vaihto vaikuttaa MAC-satunnaistamistoimintaan vain asiakastilassa.\nTämän tilan ollessa aktivoituna niiden verkkojen, joissa MAC-satunnaistaminen on käytössä, MAC-osoitteet voidaan satunnaistaa uudelleen yhdistämisen aikana riippuen siitä, milloin asiakas katkaisi viimeksi yhteyden verkkoon. Uudelleensatunnaistamista ei tapahdu, jos laite yhdistetään uudelleen enintään neljän tunnin sisällä."</string> + <!-- no translation found for wifi_enhanced_mac_randomization_summary (1210663439867489931) --> + <skip /> <string name="wifi_metered_label" msgid="8737187690304098638">"Maksullinen"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"Maksuton"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"Lokipuskurien koot"</string> @@ -373,8 +374,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"Näytä taustalla olevien sovellusten Sovellus ei vastaa ‑valintaikkunat."</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"Näytä ilmoituskanavan varoitukset"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"Näyttää varoituksen, kun sovellus julkaisee ilmoituksen ilman kelvollista kanavaa."</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"Pakota pikanäppäimet keskusteluilmoituksissa"</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"Vaadi ilmoitusten tukemista pitkäaikaisella jakopikanäppäimellä, jotta ne näkyvät keskusteluosiossa"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"Salli aina ulkoinen tallennus"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"Mahdollistaa sovelluksen tietojen tallentamisen ulkoiseen tallennustilaan luetteloarvoista riippumatta."</string> <string name="force_resizable_activities" msgid="7143612144399959606">"Pakota kaikki toiminnot hyväksymään koon muutos"</string> diff --git a/packages/SettingsLib/res/values-fr-rCA/strings.xml b/packages/SettingsLib/res/values-fr-rCA/strings.xml index 51f79baea6bd..397db9f3a1c9 100644 --- a/packages/SettingsLib/res/values-fr-rCA/strings.xml +++ b/packages/SettingsLib/res/values-fr-rCA/strings.xml @@ -284,7 +284,8 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Afficher les options pour la certification d\'affichage sans fil"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Détailler davantage les données Wi-Fi, afficher par SSID RSSI dans sélect. Wi-Fi"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"Réduit l\'utilisation de la pile et améliore les performances réseau"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"Ce commutateur a un impact sur le comportement de sélection aléatoire des adresses MAC pour le mode client uniquement.\nLorsque ce mode est activé, l\'association pourrait forcer la réorganisation de manière aléatoire des adresses MAC pour les réseaux sur lesquels la sélection aléatoire des adresses MAC est activée, en fonction de la dernière fois que le client s\'est déconnecté du réseau. La réorganisation de manière aléatoire des adresses MAC ne se produit pas si l\'appareil se reconnecte d\'ici quatre heures ou moins."</string> + <!-- no translation found for wifi_enhanced_mac_randomization_summary (1210663439867489931) --> + <skip /> <string name="wifi_metered_label" msgid="8737187690304098638">"Facturé à l\'usage"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"Non mesuré"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"Tailles des mémoires tampons d\'enregistreur"</string> @@ -373,8 +374,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"Afficher le message « L\'application ne répond plus » pour les applications en arrière-plan"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"Affich. avertiss. canal notification"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"Afficher avertiss. à l\'écran quand une app présente une notific. sans canal valide"</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"Appliquer les raccourcis pour les notifications de conversation"</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"Exiger le soutien des notifications par un raccourci de partage longue durée pour qu\'elles s\'affichent dans la section des conversations"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"Forcer l\'autor. d\'applis sur stockage externe"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"Rend possible l\'enregistrement de toute application sur un espace de stockage externe, indépendamment des valeurs du fichier manifeste"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"Forcer les activités à être redimensionnables"</string> diff --git a/packages/SettingsLib/res/values-fr/strings.xml b/packages/SettingsLib/res/values-fr/strings.xml index 5e6ee8691377..6a88f6353cf9 100644 --- a/packages/SettingsLib/res/values-fr/strings.xml +++ b/packages/SettingsLib/res/values-fr/strings.xml @@ -284,7 +284,8 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Afficher les options pour la certification de l\'affichage sans fil"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Détailler les infos Wi-Fi, afficher par RSSI de SSID dans l\'outil de sélection Wi-Fi"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"Réduit la décharge de la batterie et améliore les performances du réseau"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"Ce paramètre modifie uniquement le changement aléatoire de l\'adresse MAC en mode client.\nSi ce mode est activé, les réseaux pour lesquels le changement aléatoire d\'adresse MAC est activé peuvent faire l\'objet de nouveaux changements aléatoires d\'adresse lors des associations, en fonction du temps écoulé depuis la dernière fois que le client s\'est déconnecté du réseau. Aucun changement aléatoire d\'adresse n\'a lieu si un appareil se connecte à nouveau après un délai inférieur à quatre heures."</string> + <!-- no translation found for wifi_enhanced_mac_randomization_summary (1210663439867489931) --> + <skip /> <string name="wifi_metered_label" msgid="8737187690304098638">"Facturé à l\'usage"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"Non facturé à l\'usage"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"Tailles des tampons de l\'enregistreur"</string> @@ -373,8 +374,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"Afficher la boîte de dialogue \"L\'application ne répond plus\" pour les applications en arrière-plan"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"Afficher les avertissements liés aux canaux de notification"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"Afficher un avertissement lorsqu\'une application publie une notification sans canal valide"</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"Utiliser des raccourcis pour les notifications des conversations"</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"Exiger la sauvegarde des notifications via un raccourci de partage permanent pour qu\'elles s\'affichent dans la section des conversations"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"Forcer l\'autorisation d\'applis sur stockage externe"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"Autoriser l\'enregistrement de toute application sur un espace de stockage externe, indépendamment des valeurs du fichier manifeste"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"Forcer le redimensionnement des activités"</string> diff --git a/packages/SettingsLib/res/values-gl/strings.xml b/packages/SettingsLib/res/values-gl/strings.xml index caa1f1bf171e..1591141f41c3 100644 --- a/packages/SettingsLib/res/values-gl/strings.xml +++ b/packages/SettingsLib/res/values-gl/strings.xml @@ -284,7 +284,8 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Mostra opcións para o certificado de visualización sen fíos"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Aumenta o nivel de rexistro da wifi, móstrao por SSID RSSI no selector de wifi"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"Reduce o consumo de batería e mellora o rendemento da rede"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"Esta opción só lle afecta ao comportamento da selección aleatoria de enderezo MAC do modo de cliente.\nCando este modo está activado, os enderezos MAC das redes que teñan activada a selección automática de enderezo MAC pódense volver seleccionar aleatoriamente durante a asociación. Isto depende de cando se desconectase da rede cada cliente por última vez, xa que a selección aleatoria non se repite se transcorreron 4 horas ou menos desde a última conexión."</string> + <!-- no translation found for wifi_enhanced_mac_randomization_summary (1210663439867489931) --> + <skip /> <string name="wifi_metered_label" msgid="8737187690304098638">"Sen tarifa plana"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"Con tarifa plana"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"Tamaño dos búfers do rexistrador"</string> @@ -373,8 +374,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"Indica que unha aplicación en segundo plano non responde"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"Mostrar avisos de notificacións"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"Mostra avisos cando unha aplicación publica notificacións sen unha canle válida"</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"Usar atallos para notificacións de conversas"</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"Require que as notificacións teñan un atallo de uso compartido permanente para aparecer na sección de conversas"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"Forzar permiso de aplicacións de forma externa"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"Permite que calquera aplicación compatible se poida escribir nun almacenamento externo, independentemente dos valores do manifesto"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"Forzar o axuste do tamaño das actividades"</string> diff --git a/packages/SettingsLib/res/values-gu/strings.xml b/packages/SettingsLib/res/values-gu/strings.xml index 5bfe3a3f9e5f..b6845a0f5246 100644 --- a/packages/SettingsLib/res/values-gu/strings.xml +++ b/packages/SettingsLib/res/values-gu/strings.xml @@ -284,7 +284,8 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"વાયરલેસ ડિસ્પ્લે પ્રમાણપત્ર માટેના વિકલ્પો બતાવો"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"વાઇ-ફાઇ લોગિંગ સ્તર વધારો, વાઇ-ફાઇ પીકરમાં SSID RSSI દીઠ બતાવો"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"બૅટરીનો ચાર્જ ઝડપથી ઓછો થવાનું ટાળે છે અને નેટવર્કની કાર્યક્ષમતામાં સુધારો કરે છે"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"આ ટોગલ માત્ર ક્લાયન્ટ મોડ માટે MAC રેન્ડમાઇઝ કરવાની વર્તણૂકને અસર કરે છે.\nઆ મોડ સક્રિય કરાય, ત્યારે MAC રેન્ડમાઇઝ કરવાનું ચાલુ કર્યું હોય તેવા કોઈપણ નેટવર્કના સંકલન દરમિયાન તેમના MAC ઍડ્રેસને રેન્ડમાઇઝ કરી શકાય છે અને તેનો આધાર ક્લાયન્ટ દ્વારા છેલ્લે ક્યારે નેટવર્કમાંથી ડિસ્કનેક્ટ કરાયું હતું તેના પર રહે છે. ડિવાઇસ 4 કલાક કે તેથી ઓછા સમયમાં ફરીથી કનેક્ટ થાય તો ફરી રેન્ડમાઇઝ કરાતું નથી."</string> + <!-- no translation found for wifi_enhanced_mac_randomization_summary (1210663439867489931) --> + <skip /> <string name="wifi_metered_label" msgid="8737187690304098638">"મીટર કરેલ"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"મીટર ન કરેલ"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"લોગર બફર કદ"</string> @@ -373,8 +374,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"બૅકગ્રાઉન્ડ ઍપ માટે \"ઍપ પ્રતિસાદ આપતી નથી\" સંવાદ બતાવો"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"નોટિફિકેશન ચૅનલની ચેતવણી બતાવો"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"ઍપ્લિકેશન માન્ય ચૅનલ વિના નોટિફિકેશન પોસ્ટ કરે તો સ્ક્રીન પર ચેતવણી દેખાય છે"</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"વાતચીત સૂચનો માટે શૉર્ટકટ"</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"વાતચીત વિભાગમાં દેખાવા એક લાંબું ટકતા શેરિંગ શૉર્ટકટ દ્વારા ટેકો મેળવતા નોટિફિકેશન જરૂરી છે"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"બાહ્ય પર એપ્લિકેશનોને મંજૂરી આપવાની ફરજ પાડો"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"મેનિફેસ્ટ મૂલ્યોને ધ્યાનમાં લીધા સિવાય, કોઈપણ ઍપ્લિકેશનને બાહ્ય સ્ટોરેજ પર લખાવા માટે લાયક બનાવે છે"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"પ્રવૃત્તિઓને ફરીથી કદ યોગ્ય થવા માટે ફરજ પાડો"</string> diff --git a/packages/SettingsLib/res/values-hi/strings.xml b/packages/SettingsLib/res/values-hi/strings.xml index 999e344812b4..aae58c497125 100644 --- a/packages/SettingsLib/res/values-hi/strings.xml +++ b/packages/SettingsLib/res/values-hi/strings.xml @@ -284,7 +284,8 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"वायरलेस डिसप्ले सर्टिफ़िकेशन के विकल्प दिखाएं"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"वाई-फ़ाई लॉगिंग का स्तर बढ़ाएं, वाई-फ़ाई पिकर में प्रति SSID RSSI दिखाएं"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"बैटरी की खपत कम और नेटवर्क की परफ़ॉर्मेंस बेहतर होती है"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"इस टॉगल से सिर्फ़ क्लाइंट मोड में, वाई-फ़ाई नेटवर्क से जुड़ते समय मैक पते को बदलने की सुविधा पर असर पड़ता है.\nजब इस मोड को चालू किया जाता है, तब ऐसे किसी भी नेटवर्क का मैक पता फिर से बदला जा सकता है जिन पर मैक पते को बदलने की सुविधा चालू होती है. ऐसा तभी होता है, जब वे नेटवर्क जुड़े हों. यह इस पर भी निर्भर करता है कि क्लाइंट ने उसे नेटवर्क से कब डिसकनेक्ट किया था. अगर डिवाइस चार घंटे या उससे कम में, फिर से कनेक्ट होता है, तो मैक पते को दोबारा बदला नहीं जा सकता."</string> + <!-- no translation found for wifi_enhanced_mac_randomization_summary (1210663439867489931) --> + <skip /> <string name="wifi_metered_label" msgid="8737187690304098638">"डेटा इस्तेमाल करने की सीमा तय की गई है"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"डेटा इस्तेमाल करने की सीमा तय नहीं की गई है"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"लॉगर बफ़र आकार"</string> @@ -373,8 +374,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"बैकग्राउंड में चलने वाले ऐप्लिकेशन के लिए, यह ऐप्लिकेशन नहीं चल रहा मैसेज दिखाएं"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"सूचना चैनल चेतावनी दिखाएं"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"ऐप्लिकेशन, मान्य चैनल के बिना सूचना पोस्ट करे तो स्क्रीन पर चेतावनी दिखाएं"</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"सिर्फ़ वही सूचनाएं दिखाएं जो बातचीत सेक्शन में सही शॉर्टकट के साथ भी लिंक हैं"</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"ज़रूरी सूचनाओं के लिए ऐसा शेयरिंग शॉर्टकट होना चाहिए जो हमेशा (long-lived) मौजूद रहे, ताकि सूचनाओं को बातचीत वाले सेक्शन में देखा जा सके"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"ऐप्लिकेशन को बाहरी मेमोरी पर ही चलाएं"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"इससे कोई भी ऐप्लिकेशन बाहरी मेमोरी में रखने लायक बन जाता है चाहे उसकी मेनिफ़ेस्ट वैल्यू कुछ भी हो"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"विंडो के हिसाब से गतिविधियों का आकार बदल दें"</string> diff --git a/packages/SettingsLib/res/values-hr/strings.xml b/packages/SettingsLib/res/values-hr/strings.xml index 391d62c02e40..167db2fd33e2 100644 --- a/packages/SettingsLib/res/values-hr/strings.xml +++ b/packages/SettingsLib/res/values-hr/strings.xml @@ -284,7 +284,8 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Prikaz opcija za certifikaciju bežičnog prikaza"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Povećana razina prijave na Wi‑Fi, prikaz po SSID RSSI-ju u Biraču Wi‑Fi-ja"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"Smanjuje potrošnju baterije i poboljšava rad mreže"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"Ovaj prekidač utječe na ponašanje nasumičnog odabira MAC-a samo za način korisnika.\nKad je aktiviran ovaj način rada, kod bilo koje mreže koja ima omogućen nasumični odabir MAC-a može doći do ponovnog nasumičnog odabira MAC adrese tijekom povezivanja, ovisno o tome kad se klijent posljednji put odspojio s mreže. Nema ponovnog nasumičnog odabira ako se uređaj ponovno spoji za manje od 4 sata."</string> + <!-- no translation found for wifi_enhanced_mac_randomization_summary (1210663439867489931) --> + <skip /> <string name="wifi_metered_label" msgid="8737187690304098638">"S ograničenim prometom"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"Bez ograničenja prometa"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"Veličine međuspremnika zapisnika"</string> @@ -373,8 +374,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"Dijalog o pozadinskim aplikacijama koje ne reagiraju"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"Prikaži upozorenja kanala obavijesti"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"Prikazuje upozorenje na zaslonu kada aplikacija objavi obavijest bez važećeg kanala"</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"Primjena prečaca za obavijesti razgovora"</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"Obavijesti moraju imati dugotrajni prečac za dijeljenje da bi se prikazale u odjeljku razgovora"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"Prisilno dopusti aplikacije u vanjskoj pohrani"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"Aplikacije se mogu zapisivati u vanjsku pohranu neovisno o vrijednostima manifesta"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"Nametni mogućnost promjene veličine za aktivnosti"</string> diff --git a/packages/SettingsLib/res/values-hu/strings.xml b/packages/SettingsLib/res/values-hu/strings.xml index 02a7b67c2f6b..ca410f27314f 100644 --- a/packages/SettingsLib/res/values-hu/strings.xml +++ b/packages/SettingsLib/res/values-hu/strings.xml @@ -284,7 +284,8 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Vezeték nélküli kijelző tanúsítványával kapcsolatos lehetőségek megjelenítése"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Wi‑Fi-naplózási szint növelése, RSSI/SSID megjelenítése a Wi‑Fi-választóban"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"Csökkenti az akkumulátorhasználatot, és javítja a hálózat teljesítményét"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"Kizárólag ügyfélmód esetében be- vagy kikapcsolja a MAC-címet randomizáló viselkedést.\nHa a mód aktív, az olyan hálózatokon, amelyeken engedélyezve van a MAC-címek randomizálása, a társítás során újra megtörténhet a randomizálás, attól függően, hogy az ügyfél mikor bontotta utoljára a kapcsolatot a hálózattal. Az ismételt randomizálás nem következik be, ha az eszköz négy órán belül újracsatlakozik."</string> + <!-- no translation found for wifi_enhanced_mac_randomization_summary (1210663439867489931) --> + <skip /> <string name="wifi_metered_label" msgid="8737187690304098638">"Forgalomkorlátos"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"Nem forgalomkorlátos"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"Naplózási puffer mérete"</string> @@ -373,8 +374,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"Az Alkalmazás nem válaszol ablak megjelenítése a háttérben futó alkalmazásoknál"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"Értesítő csatorna figyelmeztetései"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"Figyelmeztet, ha egy alkalmazás érvényes csatorna nélkül küld értesítést"</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"Gyorsparancsok kényszerítése beszélgetésértesítésekhez"</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"Megköveteli, hogy az értesítéseket hosszú életű megosztási gyorsparancs támogassa, hogy megjelenhessenek a beszélgetési szakaszban"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"Külső tárhely alkalmazásainak engedélyezése"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"Lehetővé teszi bármely alkalmazás külső tárhelyre való írását a jegyzékértékektől függetlenül"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"Tevékenységek átméretezésének kényszerítése"</string> diff --git a/packages/SettingsLib/res/values-hy/strings.xml b/packages/SettingsLib/res/values-hy/strings.xml index 8b7679a4b54c..3c0072e3c0fc 100644 --- a/packages/SettingsLib/res/values-hy/strings.xml +++ b/packages/SettingsLib/res/values-hy/strings.xml @@ -278,13 +278,14 @@ <string name="select_private_dns_configuration_dialog_title" msgid="3731422918335951912">"Ընտրեք մասնավոր DNS-ի ռեժիմը"</string> <string name="private_dns_mode_off" msgid="7065962499349997041">"Անջատված է"</string> <string name="private_dns_mode_opportunistic" msgid="1947864819060442354">"Ավտոմատ"</string> - <string name="private_dns_mode_provider" msgid="3619040641762557028">"Մասնավոր DNS ծառայության մատակարարի խնամորդի անունը"</string> + <string name="private_dns_mode_provider" msgid="3619040641762557028">"Մասնավոր DNS մատակարարի սերվերը"</string> <string name="private_dns_mode_provider_hostname_hint" msgid="6564868953748514595">"Մուտքագրեք DNS ծառայության մատակարարի խնամորդի անունը"</string> <string name="private_dns_mode_provider_failure" msgid="8356259467861515108">"Չհաջողվեց միանալ"</string> <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Ցույց տալ անլար էկրանների հավաստագրման ընտրանքները"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Բարձրացնել մակարդակը, Wi‑Fi ընտրիչում ամեն մի SSID-ի համար ցույց տալ RSSI"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"Նվազեցնում է մարտկոցի սպառումը և լավացնում ցանցի աշխատանքը"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"Այս կարգավորումը միացնում է MAC հասցեների պատահական ընտրությունը միայն սպասառուի ռեժիմում։\nԵրբ այս ռեժիմն ակտիվացված է, բոլոր ցանցերը, որոնց համար միացված է MAC հասցեների պատահական ընտրությունը, կապակցման ժամանակ կարող են նորից պատահական MAC հասցե ընտրել՝ կախված այն բանից, թե երբ է սպասառուն վերջին անգամ անջատվել ցանցից։ Պատահական ընտրության կրկնությունը տեղի չի ունենում, եթե սարքը նորից է միանում ցանցին 4 ժամից պակաս ժամանակահատվածում։"</string> + <!-- no translation found for wifi_enhanced_mac_randomization_summary (1210663439867489931) --> + <skip /> <string name="wifi_metered_label" msgid="8737187690304098638">"Վճարովի թրաֆիկ"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"Անսահմանափակ թրաֆիկ"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"Մատյանի բուֆերի չափերը"</string> @@ -373,8 +374,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"Ցուցադրել «Հավելվածը չի արձագանքում» պատուհանը ֆոնային հավելվածների համար"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"Ցուցադրել ծանուցումների ալիքի զգուշացումները"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"Էկրանին ցուցադրվում է զգուշացում, երբ որևէ հավելված փակցնում է ծանուցում առանց վավեր ալիքի"</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"Միացնել զրույցների ծանուցումների դյուրանցումները"</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"Պահանջել, որ ծանուցումները պահվեն երկարաժամկետ հասանելիության դյուրանցումով՝ զրույցների բաժնում հայտնվելու համար"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"Թույլատրել պահումն արտաքին կրիչներում"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"Թույլ է տալիս ցանկացած հավելված պահել արտաքին սարքում՝ մանիֆեստի արժեքներից անկախ"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"Չափերի փոփոխում բազմապատուհան ռեժիմում"</string> diff --git a/packages/SettingsLib/res/values-in/strings.xml b/packages/SettingsLib/res/values-in/strings.xml index fade9fc2e068..9226c95a25fe 100644 --- a/packages/SettingsLib/res/values-in/strings.xml +++ b/packages/SettingsLib/res/values-in/strings.xml @@ -284,7 +284,8 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Tampilkan opsi untuk sertifikasi layar nirkabel"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Tingkatkan level pencatatan log Wi-Fi, tampilkan per SSID RSSI di Pemilih Wi‑Fi"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"Memperlambat kehabisan baterai & meningkatkan performa jaringan"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"Pengaktifan mode ini memengaruhi perilaku pengacakan MAC hanya untuk mode klien.\nSaat mode ini diaktifkan, jaringan yang mengaktifkan pengacakan MAC mungkin mengalami pengacakan ulang alamat MAC selama terhubung, bergantung pada kapan klien terakhir kali terputus dari jaringan. Pengacakan ulang tidak terjadi jika perangkat terhubung kembali dalam 4 jam atau kurang."</string> + <!-- no translation found for wifi_enhanced_mac_randomization_summary (1210663439867489931) --> + <skip /> <string name="wifi_metered_label" msgid="8737187690304098638">"Berbayar"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"Tidak berbayar"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"Ukuran buffer pencatat log"</string> @@ -373,8 +374,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"Tampilkan dialog Aplikasi Tidak Merespons untuk aplikasi yang berjalan di background"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"Tampilkan peringatan saluran notifikasi"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"Menampilkan peringatan di layar saat aplikasi memposting notifikasi tanpa channel yang valid"</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"Terapkan pintasan untuk notifikasi percakapan"</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"Mengharuskan notifikasi didukung oleh pintasan berbagi yang berdurasi panjang untuk muncul di bagian percakapan"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"Paksa izinkan aplikasi di eksternal"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"Membuat semua aplikasi dapat ditulis ke penyimpanan eksternal, terlepas dari nilai manifes"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"Paksa aktivitas agar ukurannya dapat diubah"</string> diff --git a/packages/SettingsLib/res/values-is/strings.xml b/packages/SettingsLib/res/values-is/strings.xml index 543403a66735..39dfcf8d8ebc 100644 --- a/packages/SettingsLib/res/values-is/strings.xml +++ b/packages/SettingsLib/res/values-is/strings.xml @@ -284,7 +284,8 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Sýna valkosti fyrir vottun þráðlausra skjáa"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Auka skráningarstig Wi-Fi, sýna RSSI fyrir hvert SSID í Wi-Fi vali"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"Dregur úr rafhlöðunotkun og eykur netafköst"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"Þessi rofi hefur eingöngu áhrif á slembival MAC-vistfanga fyrir biðlarastillingu.\nÞegar þessi stilling er virk geta öll netkerfi sem eru með slembival MAC-vistfanga virkt látið slembiraða MAC-vistföngum aftur við tengingu, allt eftir því hvenær biðlarinn aftengdist netinu síðast. Endurslembiröðun á sér ekki stað ef tækið tengist aftur innan fjögurra klukkustunda."</string> + <!-- no translation found for wifi_enhanced_mac_randomization_summary (1210663439867489931) --> + <skip /> <string name="wifi_metered_label" msgid="8737187690304098638">"Mæld notkun"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"Notkun ekki mæld"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"Annálsritastærðir biðminna"</string> @@ -373,8 +374,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"Sýna „Forrit svarar ekki“ fyrir bakgrunnsforrit"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"Sýna viðvaranir tilkynningarásar"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"Birtir viðvörun á skjánum þegar forrit birtir tilkynningu án gildrar rásar"</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"Þvinga flýtileiðir fyrir tilkynningar um samtöl"</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"Krefjast þess að flýtileiðir séu studdar af langvarandi deilingarflýtileið fyrir birtingu í samtalshluta"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"Þvinga fram leyfi forrita í ytri geymslu"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"Gerir öll forrit skrifanleg í ytra geymslurými, óháð gildum í upplýsingaskrá"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"Þvinga breytanlega stærð virkni"</string> diff --git a/packages/SettingsLib/res/values-it/strings.xml b/packages/SettingsLib/res/values-it/strings.xml index dd597d02005f..957eb6a90c66 100644 --- a/packages/SettingsLib/res/values-it/strings.xml +++ b/packages/SettingsLib/res/values-it/strings.xml @@ -284,7 +284,8 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Mostra opzioni per la certificazione display wireless"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Aumenta livello di logging Wi-Fi, mostra SSID RSSI nel selettore Wi-Fi"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"Riduce il consumo della batteria e migliora le prestazioni della rete"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"Questa opzione influenza il comportamento della randomizzazione MAC solo nella modalità client.\nQuando questa modalità è attiva, durante l\'associazione gli indirizzi MAC di tutte le reti con randomizzazione MAC abilitata potrebbero essere nuovamente sottoposti a randomizzazione, a seconda di quando il client è stato disconnesso l\'ultima volta dalla rete. La randomizzazione non viene eseguita nuovamente se il dispositivo si riconnette entro quattro ore."</string> + <!-- no translation found for wifi_enhanced_mac_randomization_summary (1210663439867489931) --> + <skip /> <string name="wifi_metered_label" msgid="8737187690304098638">"A consumo"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"Non a consumo"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"Dimensioni buffer logger"</string> @@ -373,8 +374,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"Mostra finestra di dialogo ANR per app in background"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"Mostra avvisi canale di notifica"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"Viene mostrato un avviso sullo schermo quando un\'app pubblica una notifica senza un canale valido"</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"Applica scorciatoie per notifiche delle conversazioni"</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"Richiedi il supporto di una scorciatoia di condivisione di lunga durata per la visualizzazione delle notifiche nella sezione delle conversazioni"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"Forza autorizzazione app su memoria esterna"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"Consente l\'installazione di qualsiasi app su memoria esterna, indipendentemente dai valori manifest"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"Imponi formato modificabile alle attività"</string> diff --git a/packages/SettingsLib/res/values-iw/strings.xml b/packages/SettingsLib/res/values-iw/strings.xml index a7862a15a520..ca0849e82b75 100644 --- a/packages/SettingsLib/res/values-iw/strings.xml +++ b/packages/SettingsLib/res/values-iw/strings.xml @@ -284,7 +284,8 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"הצג אפשרויות עבור אישור של תצוגת WiFi"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"העלה את רמת הרישום של Wi‑Fi ביומן, הצג לכל SSID RSSI ב-Wi‑Fi Picker"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"מפחית את קצב התרוקנות הסוללה ומשפר את ביצועי הרשת"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"לחצן החלפת המצב משפיע על התנהגות הרנדומיזציה של כתובות MAC במצב לקוח בלבד.\nכשמצב זה מופעל, ברשת שבה מופעלת רנדומיזציה של כתובות MAC, ייתכן שתתבצע רנדומיזציה מחדש של כתובות ה-MAC במהלך השיוך, בהתאם למועד הניתוק האחרון של הלקוח מהרשת. לא תתבצע רנדומיזציה מחדש אם המכשיר מתחבר מחדש תוך ארבע שעות או פחות."</string> + <!-- no translation found for wifi_enhanced_mac_randomization_summary (1210663439867489931) --> + <skip /> <string name="wifi_metered_label" msgid="8737187690304098638">"נמדדת"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"לא נמדדת"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"גדלי מאגר של יומן רישום"</string> @@ -373,8 +374,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"הצגת תיבת דו-שיח של \'אפליקציה לא מגיבה\' עבור אפליקציות שפועלות ברקע"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"אזהרות לגבי ערוץ התראות"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"הצגת אזהרה כשאפליקציה שולחת התראה ללא ערוץ חוקי"</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"אילוץ קיצורי דרך להתראות על שיחות"</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"כדי שההודעות יופיעו בקטע השיחות, יש צורך בגיבוי שלהן באמצעות קיצור דרך לשיתוף בעל מחזור חיים ארוך"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"אילוץ הרשאת אפליקציות באחסון חיצוני"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"מאפשר כתיבה של כל אפליקציה באחסון חיצוני, ללא התחשבות בערכי המניפסט"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"אלץ יכולת קביעת גודל של הפעילויות"</string> diff --git a/packages/SettingsLib/res/values-ja/strings.xml b/packages/SettingsLib/res/values-ja/strings.xml index 9947b18ec5da..604ceb223155 100644 --- a/packages/SettingsLib/res/values-ja/strings.xml +++ b/packages/SettingsLib/res/values-ja/strings.xml @@ -284,7 +284,8 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"ワイヤレス ディスプレイ認証のオプションを表示"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Wi-Fi ログレベルを上げて、Wi-Fi 選択ツールで SSID RSSI ごとに表示します"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"電池の消耗が軽減され、ネットワーク パフォーマンスが改善されます"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"この切り替えは、クライアント モードの MAC のランダム化動作にのみ影響します。\nこのモードがアクティブの場合、MAC のランダム化が有効になっているすべてのネットワークで、クライアントがネットワークから最後に切断されたタイミングに応じて、関連付けの際に MAC アドレスが再ランダム化されることがあります。再ランダム化は、デバイスが 4 時間以内に再接続された場合は行われません。"</string> + <!-- no translation found for wifi_enhanced_mac_randomization_summary (1210663439867489931) --> + <skip /> <string name="wifi_metered_label" msgid="8737187690304098638">"従量制"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"定額制"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"ログバッファのサイズ"</string> @@ -373,8 +374,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"バックグラウンド アプリが応答しない場合にダイアログを表示"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"通知チャネルの警告を表示"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"アプリから有効なチャネルのない通知が投稿されたときに画面上に警告を表示します"</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"会話通知用のショートカット"</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"会話セクションに表示されるように、通知が長期の共有ショートカットに対応することを要件とします"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"外部ストレージへのアプリの書き込みを許可"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"マニフェストの値に関係なく、すべてのアプリを外部ストレージに書き込めるようになります"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"アクティビティをサイズ変更可能にする"</string> diff --git a/packages/SettingsLib/res/values-ka/strings.xml b/packages/SettingsLib/res/values-ka/strings.xml index 5240b0c54978..994334f7c38c 100644 --- a/packages/SettingsLib/res/values-ka/strings.xml +++ b/packages/SettingsLib/res/values-ka/strings.xml @@ -284,7 +284,8 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"უსადენო ეკრანის სერტიფიცირების ვარიანტების ჩვენება"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Wi‑Fi-ს აღრიცხვის დონის გაზრდა, Wi‑Fi ამომრჩეველში ყოველ SSID RSSI-ზე ჩვენება"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"ამცირებს ბატარეის ხარჯვას და აუმჯობესებს ქსელის მუშაობას"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"ეს გადასართავი მხოლოდ კლიენტის რეჟიმში მოქმედებს MAC მისამართის შემთხვევითობაზე.\nამ რეჟიმის გააქტიურების შემთხვევაში, ნებისმიერმა ქსელმა, რომლისთვისაც MAC მისამართის შემთხვევითობა ჩართულია, შეიძლება ხელახლა მოახდინოს MAC მისამართთა შემთხვევითობის განხორციელება დაკავშირებისას, იმის გათვალისწინებით, თუ როდის გაწყვიტა კლიენტმა ბოლოს ქსელთან კავშირი. შემთხვევითობა აღარ განმეორდება, თუ ეს მოწყობილობა ქსელს 4 საათის ფარგლებში ან უფრო ნაკლებ დროში დაუკავშირდება."</string> + <!-- no translation found for wifi_enhanced_mac_randomization_summary (1210663439867489931) --> + <skip /> <string name="wifi_metered_label" msgid="8737187690304098638">"ლიმიტირებული"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"არალიმიტირებული"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"ჟურნალიზაციის ბუფერის ზომები"</string> @@ -373,8 +374,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"„აპი არ რეაგირებს“ შეტყობინების ჩვენება, როცა ფონური აპლიკაცია არ პასუხობს"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"შეტყობინებათა არხის გაფრთხილებების ჩვენება"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"ეკრანზე აჩვენებს გაფრთხილებას, როცა აპი შეტყობინებას სწორი არხის გარეშე განათავსებს"</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"მალსახმობების მოთხოვნა მიმოწერის შეტყობინებებისთვის"</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"მოითხოვეთ, შეტყობინებები ეყრდნობოდეს ხანგრძლივად არსებულ გაზიარების მალსახმობებს მიმოწერის სექციაში გამოსაჩენად"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"აპების დაშვება გარე მეხსიერებაში"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"აპები ჩაიწერება გარე მეხსიერებაზე აღწერის ფაილების მნიშვნელობების მიუხედავად"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"ზომაცვლადი აქტივობების იძულება"</string> diff --git a/packages/SettingsLib/res/values-kk/strings.xml b/packages/SettingsLib/res/values-kk/strings.xml index 84d0bb65c25a..f8437b5bc5c8 100644 --- a/packages/SettingsLib/res/values-kk/strings.xml +++ b/packages/SettingsLib/res/values-kk/strings.xml @@ -284,7 +284,8 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Сымсыз дисплей сертификаты опцияларын көрсету"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Wi‑Fi тіркеу деңгейін арттыру, Wi‑Fi таңдағанда әр SSID RSSI бойынша көрсету"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"Батарея зарядының шығынын азайтады және желі жұмысын жақсартады."</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"Бұл қосқыш тек клиент режимі үшін MAC рандомизациясының әрекетіне әсер етеді.\nБұл режим қосылған кезде, MAC рандомизациясы қосулы кез келген желі MAC мекенжайларын қайта рандомизациялайды. Бұл үшін клиенттің желіден ең соңғы ажыратылған уақыты негізге алынады. Құрылғы желіге 4 сағат немесе одан аз уақыт ішінде қайта қосылса, қайта рандомизацияланбайды."</string> + <!-- no translation found for wifi_enhanced_mac_randomization_summary (1210663439867489931) --> + <skip /> <string name="wifi_metered_label" msgid="8737187690304098638">"Трафик саналады"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"Трафик саналмайды"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"Журналға тіркеуші буферінің өлшемдері"</string> @@ -373,8 +374,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"Фондық қолданбалар үшін \"Қолданба жауап бермейді\" терезесін шығару"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"Хабарландыру арнасының ескертулерін көрсету"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"Қолданба жарамсыз арна арқылы хабарландыру жариялағанда, экранға ескерту шығарады"</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"Чат хабарландырулары үшін таңбашаларды пайдалану"</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"Хабарландырулар чат бөлімінде көрсетілуі үшін, оларды ұзақ көрсетілетін таңбаша арқылы міндетті түрде қайталап көрсету"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"Сыртқы жадта қолданбаларға рұқсат ету"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"Манифест мәндеріне қарамастан, кез келген қолданбаны сыртқы жадқа жазу мүмкіндігін береді"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"Әрекеттердің өлшемін өзгертуге рұқсат ету"</string> diff --git a/packages/SettingsLib/res/values-km/strings.xml b/packages/SettingsLib/res/values-km/strings.xml index f1e42db85619..92ea817f591b 100644 --- a/packages/SettingsLib/res/values-km/strings.xml +++ b/packages/SettingsLib/res/values-km/strings.xml @@ -284,7 +284,8 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"បង្ហាញជម្រើសសម្រាប់សេចក្តីបញ្ជាក់ការបង្ហាញឥតខ្សែ"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"បង្កើនកម្រិតកំណត់ហេតុ Wi-Fi បង្ហាញក្នុង SSID RSSI ក្នុងកម្មវិធីជ្រើសរើស Wi-Fi"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"កាត់បន្ថយការប្រើប្រាស់ថ្ម និងកែលម្អប្រតិបត្តិការបណ្ដាញ"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"ការបិទ/បើកនេះប៉ះពាល់ដល់សកម្មភាពតម្រៀប MAC តាមលំដាប់ចៃដន្យសម្រាប់មុខងារភ្ញៀវតែប៉ុណ្ណោះ។\nនៅពេលបើកដំណើរការមុខងារនេះ បណ្ដាញទាំងឡាយដែលបានបើកការតម្រៀប MAC តាមលំដាប់ចៃដន្យប្រហែលជាត្រូវបានតម្រៀបអាសយដ្ឋាន MAC របស់វាតាមលំដាប់ចៃដន្យឡើងវិញ អំឡុងពេលភ្ជាប់ ដោយផ្អែកលើពេលវេលាដែលមុខងារភ្ញៀវបានផ្ដាច់លើកចុងក្រោយពីបណ្ដាញ។ ការតម្រៀបតាមលំដាប់ចៃដន្យឡើងវិញមិនកើតឡើងទេ ប្រសិនបើឧបករណ៍ភ្ជាប់ឡើងវិញក្នុងរយៈពេល 4 ម៉ោង ឬឆាប់ជាងនេះ។"</string> + <!-- no translation found for wifi_enhanced_mac_randomization_summary (1210663439867489931) --> + <skip /> <string name="wifi_metered_label" msgid="8737187690304098638">"មានការកំណត់"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"មិនមានការកំណត់"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"ទំហំកន្លែងផ្ទុករបស់ logger"</string> @@ -373,8 +374,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"បង្ហាញប្រអប់កម្មវិធីមិនឆ្លើយតបសម្រាប់កម្មវិធីផ្ទៃខាងក្រោយ"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"បង្ហាញការព្រមានអំពីបណ្តាញជូនដំណឹង"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"បង្ហាញការព្រមាននៅលើអេក្រង់ នៅពេលកម្មវិធីបង្ហោះការជូនដំណឹងដោយមិនមានបណ្តាញត្រឹមត្រូវ"</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"ជំរុញឱ្យប្រើផ្លូវកាត់សម្រាប់ការជូនដំណឹងពីការសន្ទនា"</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"តម្រូវឱ្យបម្រុងទុកការជូនដំណឹង តាមរយៈផ្លូវកាត់ចែករំលែកដែលមានអាយុកាលយូរទើបអាចបង្ហាញនៅក្នុងផ្នែកនៃការសន្ទនាបាន"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"បង្ខំឲ្យអនុញ្ញាតកម្មវិធីលើឧបករណ៍ផ្ទុកខាងក្រៅ"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"ធ្វើឲ្យកម្មវិធីទាំងឡាយមានសិទ្ធិសរសេរទៅកាន់ឧបករណ៍ផ្ទុកខាងក្រៅ ដោយមិនគិតពីតម្លៃជាក់លាក់"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"បង្ខំឲ្យសកម្មភាពអាចប្តូរទំហំបាន"</string> diff --git a/packages/SettingsLib/res/values-kn/strings.xml b/packages/SettingsLib/res/values-kn/strings.xml index 5e60928c9290..e42a7cf01718 100644 --- a/packages/SettingsLib/res/values-kn/strings.xml +++ b/packages/SettingsLib/res/values-kn/strings.xml @@ -284,7 +284,8 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"ವೈರ್ಲೆಸ್ ಪ್ರದರ್ಶನ ಪ್ರಮಾಣೀಕರಣಕ್ಕಾಗಿ ಆಯ್ಕೆಗಳನ್ನು ತೋರಿಸು"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Wi‑Fi ಲಾಗಿಂಗ್ ಮಟ್ಟನ್ನು ಹೆಚ್ಚಿಸಿ, Wi‑Fi ಆಯ್ಕೆಯಲ್ಲಿ ಪ್ರತಿಯೊಂದು SSID RSSI ತೋರಿಸಿ"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"ಬ್ಯಾಟರಿ ಹೆಚ್ಚು ಬಾಳಿಕೆ ಬರುವಂತೆ ಮಾಡುತ್ತದೆ ಮತ್ತು ನೆಟ್ವರ್ಕ್ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಸುಧಾರಿಸುತ್ತದೆ"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"ಈ ಟಾಗಲ್, ಕ್ಲೈಂಟ್ ಮೋಡ್ಗಾಗಿ ಮಾತ್ರ MAC ಯಾದೃಚ್ಛಿಕರಣ ವರ್ತನೆಯ ಮೇಲೆ ಪರಿಣಾಮ ಬೀರುತ್ತದೆ.\nಈ ಮೋಡ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿದಾಗ, MAC ಯಾದೃಚ್ಛಿಕರಣವನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿದ ಯಾವುದೇ ನೆಟ್ವರ್ಕ್ ಸಂಯೋಜನೆಯನ್ನು ಸ್ಥಾಪಿಸುವಾಗ MAC ವಿಳಾಸವನ್ನು ಮರು-ಯಾದೃಚ್ಛಿಕರಣಗೊಳಿಸಬಹುದು (ಕ್ಲೈಂಟ್ ಕೊನೆಯದಾಗಿ ಸಂಪರ್ಕ ಕಡಿತಗೊಳಿಸಿರುವುದನ್ನು ಅವಲಂಬಿಸಿರುತ್ತದೆ). ಸಾಧನವು 4 ಗಂಟೆಗಳು ಅಥವಾ ಕಡಿಮೆ ಸಮಯದಲ್ಲಿ ಮರುಸಂಪರ್ಕಿಸಿದರೆ, ಯಾವುದೇ ಮರು-ಯಾದೃಚ್ಛಿಕರಣ ಸಂಭವಿಸುವುದಿಲ್ಲ."</string> + <!-- no translation found for wifi_enhanced_mac_randomization_summary (1210663439867489931) --> + <skip /> <string name="wifi_metered_label" msgid="8737187690304098638">"ಮೀಟರ್ ಮಾಡಲಾಗಿದೆ"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"ಮೀಟರ್ ಮಾಡಲಾಗಿಲ್ಲ"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"ಲಾಗರ್ ಬಫರ್ ಗಾತ್ರಗಳು"</string> @@ -373,8 +374,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"ಹಿನ್ನೆಲೆ ಅಪ್ಲಿಕೇಶನ್ಗಳಿಗಾಗಿ ಅಪ್ಲಿಕೇಶನ್ ಪ್ರತಿಕ್ರಿಯಿಸುತ್ತಿಲ್ಲ ಎಂಬ ಸಂಭಾಷಣೆ ತೋರಿಸಿ"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"ಅಧಿಸೂಚನೆ ಎಚ್ಚರಿಕೆ ತೋರಿಸಿ"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"ಅಮಾನ್ಯ ಚಾನಲ್ ಅಧಿಸೂಚನೆಗಾಗಿ ಪರದೆಯಲ್ಲಿ ಎಚ್ಚರಿಕೆ"</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"ಸಂಭಾಷಣೆ ಅಧಿಸೂಚನೆಗಳಿಗಾಗಿ ಶಾರ್ಟ್ಕಟ್ಗಳನ್ನು ಜಾರಿಗೊಳಿಸಿ"</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"ಸಂಭಾಷಣೆ ವಿಭಾಗದಲ್ಲಿ ಕಾಣಿಸಿಕೊಳ್ಳಲು, ಅಧಿಸೂಚನೆಗಳನ್ನು ದೀರ್ಘಕಾಲದ ಹಂಚಿಕೆ ಶಾರ್ಟ್ಕಟ್ ಮೂಲಕ ಬೆಂಬಲಿಸುವ ಅಗತ್ಯವಿದೆ"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"ಬಾಹ್ಯವಾಗಿ ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ಒತ್ತಾಯವಾಗಿ ಅನುಮತಿಸಿ"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"ಮ್ಯಾನಿಫೆಸ್ಟ್ ಮೌಲ್ಯಗಳು ಯಾವುದೇ ಆಗಿದ್ದರೂ, ಬಾಹ್ಯ ಸಂಗ್ರಹಣೆಗೆ ಬರೆಯಲು ಯಾವುದೇ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಅರ್ಹಗೊಳಿಸುತ್ತದೆ"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"ಚಟುವಟಿಕೆಗಳನ್ನು ಮರುಗಾತ್ರಗೊಳಿಸುವಂತೆ ಒತ್ತಾಯ ಮಾಡಿ"</string> diff --git a/packages/SettingsLib/res/values-ko/strings.xml b/packages/SettingsLib/res/values-ko/strings.xml index 7c20c94b0ea3..8443d1818f9b 100644 --- a/packages/SettingsLib/res/values-ko/strings.xml +++ b/packages/SettingsLib/res/values-ko/strings.xml @@ -284,7 +284,8 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"무선 디스플레이 인증서 옵션 표시"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Wi‑Fi 로깅 수준을 높이고, Wi‑Fi 선택도구에서 SSID RSSI당 값을 표시"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"배터리 소모를 줄이고 네트워크 성능 개선"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"이 전환은 클라이언트 모드의 MAC 무작위 순서 지정 방식에만 영향을 줍니다.\n이 모드를 활성화하면 네트워크와 클라이언트 연결이 끊긴 마지막 시점에 따라 MAC 무작위 순서 지정이 사용 설정된 네트워크에서 연결 중에 MAC 주소를 다시 무작위 순서로 지정할 수 있습니다. 기기가 4시간 이내에 재연결된 경우 무작위 순서 지정이 다시 발생하지 않습니다."</string> + <!-- no translation found for wifi_enhanced_mac_randomization_summary (1210663439867489931) --> + <skip /> <string name="wifi_metered_label" msgid="8737187690304098638">"종량제 네트워크"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"무제한 네트워크"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"로거 버퍼 크기"</string> @@ -373,8 +374,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"백그라운드 앱과 관련해 앱 응답 없음 대화상자 표시"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"알림 채널 경고 표시"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"앱에서 유효한 채널 없이 알림을 게시하면 화면에 경고 표시"</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"대화 알림에 단축키 적용"</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"알림이 대화 섹션에 표시되려면 오래 지속되는 공유 단축키의 지원을 받도록 요구"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"외부에서 앱 강제 허용"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"매니페스트 값과 관계없이 모든 앱이 외부 저장소에 작성되도록 허용"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"활동의 크기가 조정 가능하도록 설정"</string> diff --git a/packages/SettingsLib/res/values-ky/strings.xml b/packages/SettingsLib/res/values-ky/strings.xml index 8ec5f3ac661c..0702737f4392 100644 --- a/packages/SettingsLib/res/values-ky/strings.xml +++ b/packages/SettingsLib/res/values-ky/strings.xml @@ -284,7 +284,8 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Зымсыз мониторлорду тастыктамалоо параметрлери көрүнүп турат"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Wi-Fi тандалганда ар бир SSID үчүн RSSI көрүнүп турат"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"Батареянын коротулушун чектеп, тармактын иштешин жакшыртат"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"Бул жөндөөнүн өчүрүлүшү/күйгүзүлүшү MAC даректерин башаламан түзүү тартибине кардар режиминде гана таасирин тийгизет.\nБул режим иштетилсе, MAC даректерин башаламан түзүү иштетилген бардык тармактарда байланышуу учурунда, кардар тармактан акыркы жолу качан ажыратылганына жараша, алардын MAC даректери кайрадан башаламан түзүлүшү мүмкүн. Эгер түзмөк 4 саатка жетпеген убакытта кайра туташтырылса, даректерди башаламан түзүү аракети аткарылбайт."</string> + <!-- no translation found for wifi_enhanced_mac_randomization_summary (1210663439867489931) --> + <skip /> <string name="wifi_metered_label" msgid="8737187690304098638">"Трафик ченелет"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"Чектелбеген тармак"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"Журнал буферинин өлчөмү"</string> @@ -373,8 +374,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"Фондогу колдонмо жооп бербей жатат деп билдирип турат"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"Билдирмелер каналынын эскертүүлөрүн көрсөтүү"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"Тыюу салынган каналдын колдонмосунун жаңы билдирмелери тууралуу эскертүүлөр көрүнөт"</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"Жазышуу билдирмелери үчүн ыкчам баскычтарды иштетиңиз"</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"Жазышуу бөлүмүндө көрсөтүү үчүн билдирмелерди узак убакытка колдонулуучу ыкчам баскычтар менен колдоону талап кылыңыз"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"Тышкы сактагычка сактоого уруксат берүү"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"Манифест маанилерине карабастан бардык колдонмолорду тышкы сактагычка сактоого уруксат берет"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"Бир нече терезе режиминде өлчөмдү өзгөртүү"</string> diff --git a/packages/SettingsLib/res/values-lo/strings.xml b/packages/SettingsLib/res/values-lo/strings.xml index 1fb181db0df8..9ef0c25c0c6a 100644 --- a/packages/SettingsLib/res/values-lo/strings.xml +++ b/packages/SettingsLib/res/values-lo/strings.xml @@ -284,7 +284,8 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"ສະແດງໂຕເລືອກສຳລັບການສະແດງການຮັບຮອງລະບົບໄຮ້ສາຍ"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"ເພີ່ມລະດັບການເກັບປະຫວັດ Wi‑Fi, ສະແດງຕໍ່ SSID RSSI ໃນ Wi‑Fi Picker"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"ຫຼຸດການໃຊ້ແບັດເຕີຣີ ແລະ ປັບປຸງປະສິດທິພາບເຄືອຂ່າຍ"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"ການເປີດ/ປິດນີ້ຈະມີຜົນກັບພຶດຕິກຳການສຸ່ມ MAC ສຳລັບໂໝດລູກຂ່າຍເທົ່ານັ້ນ.\nເມື່ອເປີດໃຊ້ໂໝດນີ້, ເຄືອຂ່າຍໃດກໍຕາມທີ່ເປີດການນຳໃຊ້ການສຸ່ມ MAC ອາດສຸ່ມທີ່ຢູ່ MAC ຂອງເຂົາເຈົ້າຄືນໃໝ່ໃນລະຫວ່າງການເຊື່ອມໂຍງ, ຂຶ້ນກັບວ່າລູກຂ່າຍຕັດການເຊື່ອມຕໍ່ຈາກເຄືອຂ່າຍຫຼ້າສຸດຕອນໃດ. ການສຸ່ມໃໝ່ຈະບໍ່ເກີດຂຶ້ນຫາກອຸປະກອນເຊື່ອມຕໍ່ຄືນໃໝ່ພາຍໃນ 4 ຊົ່ວໂມງ ຫຼື ໜ້ອຍກວ່ານັ້ນ."</string> + <!-- no translation found for wifi_enhanced_mac_randomization_summary (1210663439867489931) --> + <skip /> <string name="wifi_metered_label" msgid="8737187690304098638">"ມີການວັດແທກ"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"ບໍ່ໄດ້ວັດແທກ"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"ຂະໜາດບັບເຟີຕົວບັນທຶກ"</string> @@ -373,8 +374,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"ສະແດງກ່ອງຂໍ້ຄວາມບໍ່ຕອບສະໜອງແອັບສຳລັບແອັບພື້ນຫຼັງ"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"ສະແດງຄຳເຕືອນຊ່ອງການແຈ້ງເຕືອນ"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"ສະແດງຄຳເຕືອນໃນໜ້າຈໍເມື່ອແອັບໂພສການແຈ້ງເຕືອນໂດຍບໍ່ມີຊ່ອງທີ່ຖືກຕ້ອງ"</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"ບັງຄັບໃຊ້ທາງລັດສຳລັບການແຈ້ງເຕືອນການສົນທະນາ"</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"ຕ້ອງໃຊ້ການແຈ້ງເຕືອນເພື່ອຮັບການສະໜັບສະໜຸນໂດຍທາງລັດການແບ່ງປັນທີ່ຢູ່ດົນເພື່ອໃຫ້ປາກົດໃນພາກສ່ວນການສົນທະນາ"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"ບັງຄັບອະນຸຍາດແອັບຢູ່ພາຍນອກ"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"ເຮັດໃຫ້ທຸກແອັບມີສິດໄດ້ຮັບການຂຽນໃສ່ພື້ນທີ່ຈັດເກັບຂໍ້ມູນພາຍນອກ, ໂດຍບໍ່ຄຳນຶງເຖິງຄ່າ manifest"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"ບັງຄັງໃຫ້ການເຄື່ອນໄຫວປ່ຽນຂະໜາດໄດ້"</string> diff --git a/packages/SettingsLib/res/values-lt/strings.xml b/packages/SettingsLib/res/values-lt/strings.xml index cc43d5aeff9b..eefc7092217d 100644 --- a/packages/SettingsLib/res/values-lt/strings.xml +++ b/packages/SettingsLib/res/values-lt/strings.xml @@ -284,7 +284,8 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Rodyti belaidžio rodymo sertifikavimo parinktis"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Padidinti „Wi‑Fi“ įrašymo į žurnalą lygį, rodyti SSID RSSI „Wi-Fi“ rinkiklyje"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"Sumažinamas akumuliatoriaus eikvojimas ir patobulinamas tinklo našumas"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"Perjungiamas tik atsitiktinis MAC adreso parinkimas dirbant kliento režimu.\nKai suaktyvintas šis režimas, visuose tinkluose, kuriuose įgalintas atsitiktinis MAC adreso parinkimas, susiejant šie adresai gali būti atsitiktinai parenkami iš naujo, atsižvelgiant į tai, kada klientas paskutinį kartą atsijungė nuo tinklo. Atsitiktinis MAC adreso parinkimas nevykdomas iš naujo, jei įrenginys vėl prisijungia ne daugiau nei po keturių valandų."</string> + <!-- no translation found for wifi_enhanced_mac_randomization_summary (1210663439867489931) --> + <skip /> <string name="wifi_metered_label" msgid="8737187690304098638">"Matuojamas"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"Neišmatuotas"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"Registruotuvo buferio dydžiai"</string> @@ -373,8 +374,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"Foninėse programose rodyti dialogo langą „Programa neatsako“"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"Rodyti pran. kan. įspėj."</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"Ekr. rod. įsp., kai progr. pask. pr. be tink. kan."</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"Nustatyti pokalbio pranešimų šaukinius"</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"Kad pranešimai būtų rodomi pokalbių skiltyje, būtinas ilgalaikis jų bendrinimo šaukinys"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"Priverstinai leisti programas išorinėje atmintin."</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"Nustatoma, kad visas programas būtų galima įrašyti į išorinę saugyklą, nepaisant aprašo verčių"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"Priv. nust., kad veiksm. b. g. atl. kelių d. lang."</string> diff --git a/packages/SettingsLib/res/values-lv/strings.xml b/packages/SettingsLib/res/values-lv/strings.xml index 1fa3c0821269..860cd1dad72b 100644 --- a/packages/SettingsLib/res/values-lv/strings.xml +++ b/packages/SettingsLib/res/values-lv/strings.xml @@ -284,7 +284,8 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Rādīt bezvadu attēlošanas sertifikācijas iespējas"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Palieliniet Wi‑Fi reģistrēšanas līmeni; rādīt katram SSID RSSI Wi‑Fi atlasītājā."</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"Samazina akumulatora izlādi un uzlabo tīkla veiktspēju"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"Šis slēdzis ietekmē MAC adrešu nejaušas izveides darbību tikai klienta režīmā.\nJa šis režīms ir aktivizēts, visos tīklos, kuros MAC adrešu nejauša izveide ir iespējota, saistīšanas laikā MAC adreses var tikt atkārtoti nejauši izveidotas atkarībā no tā, kad klients pēdējoreiz pārtrauca savienojumu ar tīklu. Atkārtota nejauša izveide netiek veikta, ja ierīces savienojums tiek atjaunots ne vairāk kā 4 stundu laikā."</string> + <!-- no translation found for wifi_enhanced_mac_randomization_summary (1210663439867489931) --> + <skip /> <string name="wifi_metered_label" msgid="8737187690304098638">"Maksas"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"Bezmaksas"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"Reģistrētāja buferu lielumi"</string> @@ -373,8 +374,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"Rādīt fona lietotņu dialoglodziņu Lietotne nereaģē"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"Paziņojumu kanāla brīdinājumi"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"Brīdinājums ekrānā, kad lietotne publicē paziņojumu, nenorādot derīgu kanālu"</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"Ieviest saīsnes sarunu paziņojumiem"</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"Pieprasīt izmantot paziņojumiem ilgstošas darbības kopīgošanas saīsni rādīšanai sarunu sadaļā"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"Lietotņu piespiedu atļaušana ārējā krātuvē"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"Ļauj jebkuru lietotni ierakstīt ārējā krātuvē neatkarīgi no manifesta vērtības."</string> <string name="force_resizable_activities" msgid="7143612144399959606">"Pielāgot darbības"</string> diff --git a/packages/SettingsLib/res/values-mk/strings.xml b/packages/SettingsLib/res/values-mk/strings.xml index 1e2c7414f3ef..d13afe04caf4 100644 --- a/packages/SettingsLib/res/values-mk/strings.xml +++ b/packages/SettingsLib/res/values-mk/strings.xml @@ -284,7 +284,8 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Покажи ги опциите за безжичен приказ на сертификат"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Зголеми Wi‑Fi ниво на пријавување, прикажи по SSID RSSI во Wi‑Fi бирач"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"Го намалува искористувањето на батеријата и ја подобрува изведбата на мрежата"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"Овој прекинувач влијае на однесувањето на рандомизацијата на MAC само за клиентски режим.\nКога е активиран режимов, можно е да се изврши повторна рандомизација на MAC-адресите на сите мрежи што имаат овозможена рандомизација на MAC за време на асоцијацијата, зависно од тоа кога клиентот последен пат се исклучил од мрежата. Повторната рандомизација не се случува ако уредот се поврзе повторно во рок од 4 часа или помалку."</string> + <!-- no translation found for wifi_enhanced_mac_randomization_summary (1210663439867489931) --> + <skip /> <string name="wifi_metered_label" msgid="8737187690304098638">"Со ограничен интернет"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"Без ограничен интернет"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"Величини на меѓумеморија за дневникот"</string> @@ -373,8 +374,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"Прикажи го дијалогот „Апликацијата не реагира“ за апликации во заднина"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"Прикажи ги предупредувањата на каналот за известувањe"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"Предупредува кога апликација дава известување без важечки канал"</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"Кратенки за известувањата"</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"Известувања со долготрајна кратенка за споделување"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"Принуд. дозволете апликации на надворешна меморија"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"Прави секоја апликација да биде подобна за запишување на надворешна меморија, независно од вредностите на манифестот"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"Принуди ги активностите да ја менуваат големината"</string> diff --git a/packages/SettingsLib/res/values-ml/strings.xml b/packages/SettingsLib/res/values-ml/strings.xml index 156d941a7de7..1af22b24b00d 100644 --- a/packages/SettingsLib/res/values-ml/strings.xml +++ b/packages/SettingsLib/res/values-ml/strings.xml @@ -284,7 +284,8 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"വയർലെസ് ഡിസ്പ്ലേ സർട്ടിഫിക്കേഷനായി ഓപ്ഷനുകൾ ദൃശ്യമാക്കുക"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"വൈഫൈ പിക്കറിൽ ഓരോ SSID RSSI പ്രകാരം കാണിക്കാൻ വൈഫൈ ലോഗിംഗ് നില വർദ്ധിപ്പിക്കുക"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"ബാറ്ററി ചാർജ് വേഗത്തിൽ തീരുന്ന അവസ്ഥ കുറച്ച് നെറ്റ്വർക്ക് പ്രകടനം മെച്ചപ്പെടുത്തുന്നു"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"ഈ മാറ്റം ക്ലയന്റ് മോഡിലെ MAC ക്രമരഹിതമാക്കൽ പ്രവർത്തനരീതിയെ മാത്രമേ ബാധിക്കുകയുള്ളൂ.\nഈ മോഡ് സജീവമാക്കിക്കഴിഞ്ഞാൽ, MAC ക്രമരഹിതമാക്കൽ പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്ന എല്ലാ നെറ്റ്വർക്കുകളിലും അസോസിയേഷൻ സമയത്ത്, ക്ലയന്റ് അവസാനമായി നെറ്റ്വർക്കിൽ നിന്ന് വിച്ഛേദിച്ച സമയത്തിന്റെ അടിസ്ഥാനത്തിൽ അവരുടെ MAC വിലാസങ്ങൾ വീണ്ടും ക്രമരഹിതമാക്കപ്പെടും. നാല് മണിക്കൂറോ അതിൽ കുറവ് സമയത്തിനുള്ളിലോ ഉപകരണം വീണ്ടും കണക്റ്റ് ചെയ്യുന്നില്ലെങ്കിൽ വീണ്ടും ക്രമരഹിതമാക്കൽ സംഭവിക്കില്ല."</string> + <!-- no translation found for wifi_enhanced_mac_randomization_summary (1210663439867489931) --> + <skip /> <string name="wifi_metered_label" msgid="8737187690304098638">"മീറ്റർ ചെയ്തത്"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"മീറ്റർമാപകമല്ലാത്തത്"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"ലോഗർ ബഫർ വലുപ്പം"</string> @@ -373,8 +374,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"പശ്ചാത്തല ആപ്പുകൾക്കായി \'ആപ്പ് പ്രതികരിക്കുന്നില്ല\' ഡയലോഗ് പ്രദര്ശിപ്പിക്കുക"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"ചാനൽ മുന്നറിയിപ്പ് കാണിക്കൂ"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"സാധുതയുള്ള ചാനലിൽ അല്ലാതെ ഒരു ആപ്പ്, അറിയിപ്പ് പോസ്റ്റ് ചെയ്യുമ്പോൾ ഓൺ-സ്ക്രീൻ മുന്നറിയിപ്പ് പ്രദർശിപ്പിക്കുന്നു"</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"സംഭാഷണ അറിയിപ്പിലേക്ക് കുറുക്കുവഴികൾ നടപ്പിലാക്കൂ"</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"സംഭാഷണ വിഭാഗത്തിൽ ദൃശ്യമാകാൻ അറിയിപ്പുകൾ ദീർഘകാലമായി പങ്കിടൽ കുറുക്കുവഴി പിന്തുടരണം"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"ബാഹ്യമായതിൽ നിർബന്ധിച്ച് അനുവദിക്കുക"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"മാനിഫെസ്റ്റ് മൂല്യങ്ങൾ പരിഗണിക്കാതെ, ബാഹ്യ സ്റ്റോറേജിലേക്ക് എഴുതപ്പെടുന്നതിന് ഏതൊരു ആപ്പിനെയും യോഗ്യമാക്കുന്നു"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"വലുപ്പം മാറ്റാൻ പ്രവർത്തനങ്ങളെ നിർബന്ധിക്കുക"</string> diff --git a/packages/SettingsLib/res/values-mn/strings.xml b/packages/SettingsLib/res/values-mn/strings.xml index 249489ed6140..dfdbab3056e1 100644 --- a/packages/SettingsLib/res/values-mn/strings.xml +++ b/packages/SettingsLib/res/values-mn/strings.xml @@ -284,7 +284,8 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Утасгүй дэлгэцийн сертификатын сонголтыг харуулах"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Wi‑Fi лог-н түвшинг нэмэгдүүлэх, Wi‑Fi Сонгогч дээрх SSID-д ногдох RSSI-г харуулах"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"Батарей зарцуулалтыг бууруулж, сүлжээний гүйцэтгэлийг сайжруулдаг"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"Унтраах эсвэл асаах нь зөвхөн клиент горимын MAC-г санамсаргүй байдлаар эмхлэх төлөвт нөлөөлнө.\nЭнэ горимыг идэвхжүүлсэн тохиолдолд клиентийг сүлжээнээс хамгийн сүүлд хэзээ салгаснаас хамаараад, холбоотой байх үеэр MAC-г санамсаргүй байдлаар эмхлэхийг идэвхжүүлсэн дурын сүлжээний MAC хаягуудыг санамсаргүй байдлаар дахин эмхэлж болзошгүй. Төхөөрөмж 4 цаг буюу түүнээс бага хугацаанд дахин холбогдвол санамсаргүй байдлаар дахин эмхлэх төлөв хэрэгжихгүй."</string> + <!-- no translation found for wifi_enhanced_mac_randomization_summary (1210663439867489931) --> + <skip /> <string name="wifi_metered_label" msgid="8737187690304098638">"Хязгаартай"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"Хязгааргүй"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"Логгерын буферын хэмжээ"</string> @@ -373,8 +374,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"Апп хариу өгөхгүй байна гэсэн харилцах цонхыг цаана байгаа аппад харуулах"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"Мэдэгдлийн сувгийн анхааруулгыг харуулах"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"Апп хүчинтэй суваггүйгээр мэдэгдэл гаргах үед дэлгэцэд сануулга харуулна"</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"Харилцан ярианы мэдэгдлийн товчлолыг хэрэгжүүлэх"</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"Харилцан ярианы хэсэгт харуулахын тулд санах ойд хадгалсан хуваалцах товчлолоор мэдэгдлийг нөөцлөхийг шаардах"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"Аппыг гадаад санах ойд хадгалахыг зөвшөөрөх"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"Манифест утгыг нь үл хамааран дурын апп-г гадаад санах ойд бичих боломжтой болгодог"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"Үйл ажиллагааны хэмжээг өөрчилж болохуйц болгох"</string> diff --git a/packages/SettingsLib/res/values-mr/strings.xml b/packages/SettingsLib/res/values-mr/strings.xml index b2e4c0a77d52..de5abb6d5297 100644 --- a/packages/SettingsLib/res/values-mr/strings.xml +++ b/packages/SettingsLib/res/values-mr/strings.xml @@ -284,7 +284,8 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"वायरलेस डिस्प्ले प्रमाणिकरणाचे पर्याय दाखवा"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"वाय-फाय लॉगिंग स्तर वाढवा, वाय-फाय सिलेक्टरमध्ये प्रति SSID RSSI दर्शवा"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"बॅटरी जलदरीतीने संपण्यापासून रोखते आणि नेटवर्क परफॉर्मन्समध्ये सुधारणा करते"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"या टॉगलचा फक्त क्लायंट मोडसाठी MAC रँडमायझेशन वर्तनावर परिणाम होतो.\nहा मोड अॅक्टिव्हेट केलेला असताना, तुमच्या नेटवर्कवरून क्लायंट शेवटचा कधी डिस्कनेक्ट केला गेला त्यावर अवलंबून, संबद्धीकरणादरम्यान MAC रँडमायझेशन सुरू असलेल्या कोणत्याही नेटवर्कचे MAC अॅड्रेस पुन्हा रँडमाइझ केले जाऊ शकतात. डिव्हाइस चार तासांत किंवा त्यापेक्षा कमी वेळात पुन्हा कनेक्ट झाल्यास पुन्हा रँडमायझेशन होत नाही."</string> + <!-- no translation found for wifi_enhanced_mac_randomization_summary (1210663439867489931) --> + <skip /> <string name="wifi_metered_label" msgid="8737187690304098638">"मीटरने मोजलेले"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"मीटरने न मोजलेले"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"लॉगर बफर आकार"</string> @@ -373,8 +374,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"बॅकग्राउंड अॅप्ससाठी अॅप प्रतिसाद देत नाही दाखवते"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"सूचना चॅनेल चेतावण्या दाखवा"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"एखादे अॅप वैध चॅनेलशिवाय सूचना पोस्ट करते तेव्हा स्क्रीनवर चेतावणी देते"</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"संभाषण सूचना शॉर्टकट ठेवा"</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"सूचनांना जुन्या शॉर्टकटचा सपोर्ट आवश्यक"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"बाह्यवर ॲप्सना अनुमती देण्याची सक्ती करा"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"manifest मूल्यांकडे दुर्लक्ष करून, कोणत्याही ॲपला बाह्य स्टोरेजवर लेखन केले जाण्यासाठी पात्र बनविते"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"ॲक्टिव्हिटीचा आकार बदलण्यायोग्य होण्याची सक्ती करा"</string> diff --git a/packages/SettingsLib/res/values-ms/strings.xml b/packages/SettingsLib/res/values-ms/strings.xml index fa36975559b6..c6be11f78dc3 100644 --- a/packages/SettingsLib/res/values-ms/strings.xml +++ b/packages/SettingsLib/res/values-ms/strings.xml @@ -284,7 +284,8 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Tunjukkan pilihan untuk pensijilan paparan wayarles"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Tingkatkan tahap pengelogan Wi-Fi, tunjuk setiap SSID RSSI dalam Pemilih Wi-Fi"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"Mengurangkan penyusutan bateri & meningkatkan prestasi rangkaian"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"Togol ini melibatkan gelagat perawakan MAC untuk mod pelanggan sahaja.\nApabila mod ini diaktifkan, alamat MAC bagi mana-mana rangkaian yang telah mendayakan perawakan MAC mungkin dirawakkan semula semasa perkaitan, bergantung pada kali terakhir pelanggan diputuskan sambungan daripada rangkaian. Perawakan semula tidak berlaku jika peranti menyambung semula dalam tempoh 4 jam atau kurang."</string> + <!-- no translation found for wifi_enhanced_mac_randomization_summary (1210663439867489931) --> + <skip /> <string name="wifi_metered_label" msgid="8737187690304098638">"Bermeter"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"Tidak bermeter"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"Saiz penimbal pengelog"</string> @@ -373,8 +374,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"Paparkan dialog Apl Tiada Respons untuk apl latar belakang"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"Papar amaran saluran pemberitahuan"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"Memaparkan amaran pada skrin apabila apl menyiarkan pemberitahuan tanpa saluran sah"</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"Kuat kuasakan pintasan utk pemberitahuan perbualan"</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"Perlukan pemberitahuan disokong oleh pintasan perkongsian hayat panjang untuk muncul dalam bahagian perbualan"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"Benarkan apl secara paksa pada storan luaran"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"Menjadikan sebarang apl layak ditulis ke storan luaran, tanpa mengambil kira nilai manifes"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"Paksa aktiviti supaya boleh diubah saiz"</string> diff --git a/packages/SettingsLib/res/values-my/strings.xml b/packages/SettingsLib/res/values-my/strings.xml index 6719badf97b2..c093c5082c2a 100644 --- a/packages/SettingsLib/res/values-my/strings.xml +++ b/packages/SettingsLib/res/values-my/strings.xml @@ -284,7 +284,8 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"ကြိုးမဲ့ အခင်းအကျင်း အသိအမှတ်ပြုလက်မှတ်အတွက် ရွေးချယ်စရာများပြရန်"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Wi‑Fi မှတ်တမ်းတင်ခြင်း နှုန်းအားမြင့်ကာ၊ Wi‑Fi ရွေးရာတွင် SSID RSSI ဖြင့်ပြပါ"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"ဘက်ထရီ အသုံးပြုမှုကို လျှော့ကျစေပြီး ကွန်ရက်စွမ်းဆောင်ရည်ကို ပိုမိုကောင်းမွန်စေသည်"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"ဤဖွင့်ပိတ်ခလုတ်က ကလိုင်းယင့်မုဒ် အတွက်သာ MAC ကျပန်းပြုလုပ်ခြင်း အပြုအမူကို သက်ရောက်စေသည်။\nဤမုဒ်အသုံးပြုသည့်အခါ MAC ကျပန်းပြုလုပ်ခြင်း ဖွင့်ထားသော ကွန်ရက်များသည် ကွန်ရက်မှ ကလိုင်းယင့် ချိတ်ဆက်မှုဖြုတ်သည့် နောက်ဆုံးအချိန်ပေါ် မူတည်၍ ချိတ်ဆက်နေစဉ်အတွင်း ၎င်းတို့၏ MAC လိပ်စာများကို ပြန်လည်ကျပန်းပြုလုပ်နိုင်သည်။ စက်သည် ၄ နာရီအတွင်း ပြန်ချိန်ဆက်ထားပါက ပြန်လည်ကျပန်းပြုလုပ်မည် မဟုတ်ပါ။"</string> + <!-- no translation found for wifi_enhanced_mac_randomization_summary (1210663439867489931) --> + <skip /> <string name="wifi_metered_label" msgid="8737187690304098638">"အခမဲ့ မဟုတ်ပါ"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"အခမဲ့"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"မှတ်တမ်းကြားခံနယ် အရွယ်အစားများ"</string> @@ -373,8 +374,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"နောက်ခံ အက်ပ်များအတွက် \'အက်ပ်တုံ့ပြန်မှုမရှိ\' ဟု ပြရန်"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"ချန်နယ်သတိပေးချက်များပြပါ"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"ချန်နယ်မရှိဘဲ အကြောင်းကြားလျှင် စကရင်တွင်သတိပေးသည်"</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"ဖြတ်လမ်းလင့်ခ် သုံးရန်"</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"အချိန်ကြာမျှဝေသော ဖြတ်လမ်းလင့်ခ် သုံးရန် လိုအပ်သည်"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"ပြင်ပစက်တွင် အက်ပ်များခွင့်ပြုရန်"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"တိကျစွာ သတ်မှတ်ထားသည့်တန်ဖိုးများရှိသော်လည်း၊ ပြင်ပသိုလှောင်ခန်းများသို့ မည်သည့်အက်ပ်ကိုမဆို ဝင်ရောက်ခွင့်ပြုပါ"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"လုပ်ဆောင်ချက်များ အရွယ်ပြောင်းနိုင်ခြင်း"</string> diff --git a/packages/SettingsLib/res/values-nb/strings.xml b/packages/SettingsLib/res/values-nb/strings.xml index e374d65f21a7..59b58c99710e 100644 --- a/packages/SettingsLib/res/values-nb/strings.xml +++ b/packages/SettingsLib/res/values-nb/strings.xml @@ -284,7 +284,8 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Vis alternativer for sertifisering av trådløs skjerm"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Øk Wi-Fi-loggenivå – vis per SSID RSSI i Wi-Fi-velgeren"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"Reduserer batteriforbruket og forbedrer nettverksytelsen"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"Denne av/på-bryteren påvirker bare atferden til MAC-tilfeldiggjøring for klientmodus.\nNår denne modusen er aktivert, kan nettverk som har tilfeldig valgt MAC, få MAC-adressen tilfeldig valgt på nytt under tilknytning, avhengig av når klienten sist ble koblet fra nettverket. Ny tilfeldiggjøring oppstår ikke hvis enheten kobler seg til igjen innen fire timer."</string> + <!-- no translation found for wifi_enhanced_mac_randomization_summary (1210663439867489931) --> + <skip /> <string name="wifi_metered_label" msgid="8737187690304098638">"Med datamåling"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"Uten datamåling"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"Bufferstørrelser for logg"</string> @@ -373,8 +374,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"Vis Appen svarer ikke-dialog for bakgrunnsapper"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"Vis varselskanaladvarsler"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"Viser advarsler på skjermen når apper publiserer varsler uten en gyldig kanal"</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"Håndhev snarveier for samtalevarsler"</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"Krev at varsler støttes av en langvarig delingssnarvei for å vises i samtaledelen"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"Tving frem tillatelse for ekstern lagring av apper"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"Dette gjør at alle apper kan lagres på eksterne lagringsmedier – uavhengig av manifestverdier"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"Tving aktiviteter til å kunne endre størrelse"</string> diff --git a/packages/SettingsLib/res/values-ne/strings.xml b/packages/SettingsLib/res/values-ne/strings.xml index 870a6d169f11..7c6785b81de5 100644 --- a/packages/SettingsLib/res/values-ne/strings.xml +++ b/packages/SettingsLib/res/values-ne/strings.xml @@ -284,7 +284,8 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"ताररहित प्रदर्शन प्रमाणीकरणका लागि विकल्पहरू देखाउनुहोस्"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Wi-Fi लग स्तर बढाउनुहोस्, Wi-Fi चयनकर्तामा प्रति SSID RSSI देखाइन्छ"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"ब्याट्रीको खपत कम गरी नेटवर्कको कार्यसम्पादनमा सुधार गर्दछ"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"यो टगलले क्लाइन्ट मोडमा मात्र MAC ठेगाना बदल्ने सुविधामा असर पार्न सक्छ।\nयो मोड सक्रिय हुँदा MAC बदल्ने सुविधा सक्षम पारेको कुनै पनि नेटवर्कको MAC ठेगाना पुनः बदल्न सकिन्छ। यसका लागि नेटवर्क कनेक्ट भएको हुनु पर्छ। यो कुरा क्लाइन्टले उक्त नेटवर्क पछिल्लो पटक कहिले डिस्कनेक्ट गरेको थियो भन्ने कुरामा पनि भर पर्छ। यन्त्र ४ घन्टा वा सोभन्दा कम समयमा फेरि कनेक्ट हुन्छ भने MAC ठेगाना पुनः बदलिँदैन।"</string> + <!-- no translation found for wifi_enhanced_mac_randomization_summary (1210663439867489931) --> + <skip /> <string name="wifi_metered_label" msgid="8737187690304098638">"सशुल्क वाइफाइ"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"मिटर नगरिएको"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"लगर बफर आकारहरू"</string> @@ -373,8 +374,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"पृष्ठभूमिका एपहरूको संवादको प्रतिक्रिया नदिइरहेका एपहरू प्रदर्शन गर्नुहोस्"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"सूचना च्यानलका चेतावनी देखाउनुहोस्"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"अनुप्रयोगले कुनै मान्य च्यानल बिना सूचना पोस्ट गर्दा स्क्रिनमा चेतावनी देखाउँछ"</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"कुराकानी नामक स्थानमा मान्य सर्टकटसँग पनि लिंक गरिएका सूचनाहरू मात्र देखाइयोस्"</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"कुराकानी नामक स्थानमा सूचनाहरू देखिन सकून् भन्नाका खातिर ती सूचनामा सधैँ सक्रिय रहने (long-lived) सेयरिङ सर्टकट समावेश भएको हुनु पर्छ"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"बाह्यमा बल प्रयोगको अनुमति प्राप्त एपहरू"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"म्यानिफेेस्टका मानहरूको ख्याल नगरी कुनै पनि अनुप्रयोगलाई बाह्य भण्डारणमा लेख्न सकिने खाले बनाउँछ"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"आकार बदल्न योग्य हुने बनाउन गतिविधिहरूलाई बाध्यात्मक बनाउनुहोस्।"</string> diff --git a/packages/SettingsLib/res/values-nl/strings.xml b/packages/SettingsLib/res/values-nl/strings.xml index d034b496384d..eb5239e924b0 100644 --- a/packages/SettingsLib/res/values-nl/strings.xml +++ b/packages/SettingsLib/res/values-nl/strings.xml @@ -284,7 +284,8 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Opties weergeven voor certificering van draadloze weergave"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Logniveau voor wifi verhogen, weergeven per SSID RSSI in wifi-kiezer"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"Verlaagt het batterijverbruik en verbetert de netwerkprestaties"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"Deze schakelaar beïnvloedt het gedrag van MAC-herschikking uitsluitend voor de clientmodus.\nAls deze modus is ingeschakeld, worden de MAC-adressen van netwerken die MAC-herschikking hebben ingeschakeld, mogelijk opnieuw in willekeurige volgorde herschikt als verbinding wordt gemaakt. Dit is afhankelijk van wanneer de client voor het laatst de verbinding met het netwerk verbrak. Opnieuw herschikken gebeurt niet als het apparaat binnen vier uur opnieuw verbinding maakt."</string> + <!-- no translation found for wifi_enhanced_mac_randomization_summary (1210663439867489931) --> + <skip /> <string name="wifi_metered_label" msgid="8737187690304098638">"Met datalimiet"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"Gratis"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"Logger-buffergrootten"</string> @@ -373,8 +374,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"Dialoogvenster \'App reageert niet\' weergeven voor achtergrond-apps"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"Kanaalwaarschuwingen voor meldingen weergeven"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"Geeft een waarschuwing op het scherm weer wanneer een app een melding post zonder geldig kanaal"</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"Snelkoppelingen voor gespreksmeldingen afdwingen"</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"Vereisen dat meldingen een langdurige snelkoppeling voor delen krijgen om bij gesprekken te kunnen worden getoond"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"Toestaan van apps op externe opslag afdwingen"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"Hiermee komt elke app in aanmerking voor schrijven naar externe opslag, ongeacht de manifestwaarden"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"Formaat activiteiten geforceerd aanpasbaar maken"</string> diff --git a/packages/SettingsLib/res/values-or/strings.xml b/packages/SettingsLib/res/values-or/strings.xml index 4341845bb75a..13329fd399e5 100644 --- a/packages/SettingsLib/res/values-or/strings.xml +++ b/packages/SettingsLib/res/values-or/strings.xml @@ -284,7 +284,8 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"ୱେୟାରଲେସ୍ ଡିସ୍ପ୍ଲେ ସାର୍ଟିଫିକେସନ୍ ପାଇଁ ବିକଳ୍ପ ଦେଖାନ୍ତୁ"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"ୱାଇ-ଫାଇ ଲଗିଙ୍ଗ ସ୍ତର ବଢ଼ାନ୍ତୁ, ୱାଇ-ଫାଇ ପିକର୍ରେ ପ୍ରତି SSID RSSI ଦେଖାନ୍ତୁ"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"ବ୍ୟାଟେରୀ ଖର୍ଚ୍ଚ କମ୍ ଏବଂ ନେଟ୍ୱାର୍କ କାର୍ଯ୍ୟକ୍ଷମତା ଉନ୍ନତ କରିଥାଏ"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"ଏହି ଟୋଗଲ୍ କେବଳ କ୍ଲାଏଣ୍ଟ ମୋଡ୍ ପାଇଁ MAC ରେଣ୍ଡମାଇଜେସନ୍ ବ୍ୟବହାରକୁ ପ୍ରଭାବିତ କରେ।\nଯେତେବେଳେ ଏହି ମୋଡକୁ ସକ୍ରିୟ କରାଯାଏ, ସେତେବେଳେ କ୍ଲାଏଣ୍ଟ ଗତଥର କେତେବେଳେ ନେଟୱାର୍କରୁ ସଂଯୋଗ ବିଚ୍ଛିନ୍ନ କରିଥିଲେ ତାହା ଉପରେ ନିର୍ଭର କରି, MAC ରେଣ୍ଡମାଇଜେସନ୍ ସକ୍ଷମ କରାଯାଇଥିବା ଯେ କୌଣସି ନେଟୱାର୍କର MAC ଠିକଣାଗୁଡ଼ିକୁ ସଂଯୋଜନ ସମୟରେ ପୁଣି ରେଣ୍ଡମାଇଜ୍ କରାଯାଇପାରେ। ଯଦି ଡିଭାଇସଟି 4 ଘଣ୍ଟା କିମ୍ବା ତାଠାରୁ କମ୍ ସମୟରେ ପୁଣି ସଂଯୋଗ କରେ, ତେବେ ପୁଣି ରେଣ୍ଡମାଇଜେସନ୍ ହୁଏ ନାହିଁ।"</string> + <!-- no translation found for wifi_enhanced_mac_randomization_summary (1210663439867489931) --> + <skip /> <string name="wifi_metered_label" msgid="8737187690304098638">"ମପାଯାଉଥିବା"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"ମପାଯାଉନଥିବା"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"ଲଗର୍ ବଫର୍ ସାଇଜ୍"</string> @@ -373,8 +374,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"ବ୍ୟାକ୍ଗ୍ରାଉଣ୍ଡ ଆପ୍ଗୁଡ଼ିକ ପାଇଁ \"ଆପ୍ ଉତ୍ତର ଦେଉନାହିଁ\" ଡାୟଲଗ୍ ଦେଖାନ୍ତୁ"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"ବିଜ୍ଞପ୍ତି ଚେନାଲ୍ ଚେତାବନୀ ଦେଖାନ୍ତୁ"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"ବୈଧ ଚ୍ୟାନେଲ୍ ବିନା ଗୋଟିଏ ଆପ୍ ଏକ ବିଜ୍ଞପ୍ତି ପୋଷ୍ଟ କରିବାବେଳେ ଅନ୍-ସ୍କ୍ରୀନ୍ ସତର୍କତା ଦେଖାଏ"</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"ବାର୍ତ୍ତାଳାପ ବିଜ୍ଞପ୍ତି ପାଇଁ ସର୍ଟକଟ ଲାଗୁ କରନ୍ତୁ"</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"ବାର୍ତ୍ତାଳାପ ବିଭାଗରେ ଦେଖାଯିବା ପାଇଁ ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକୁ ଏକ ଦୀର୍ଘ-ସ୍ଥାୟୀ ସେୟାରିଂ ସର୍ଟକଟର ସମର୍ଥନ ଆବଶ୍ୟକ"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"ଆପ୍କୁ ଏକ୍ସଟର୍ନଲ୍ ମେମୋରୀରେ ଫୋର୍ସ୍ ଅନୁମତି ଦିଅନ୍ତୁ"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"ଯେକୌଣସି ଆପ୍କୁ ଏକ୍ସଟର୍ନଲ୍ ଷ୍ଟୋରେଜ୍ରେ ଲେଖାଯୋଗ୍ୟ କରନ୍ତୁ, ମେନିଫେଷ୍ଟ ମୂଲ୍ୟ ଯାହା ହୋଇଥାଉ ନା କାହିଁକି"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"ୱିଣ୍ଡୋ ହିସାବରେ କାର୍ଯ୍ୟକଳାପର ଆକାର ବଦଳାନ୍ତୁ"</string> diff --git a/packages/SettingsLib/res/values-pa/strings.xml b/packages/SettingsLib/res/values-pa/strings.xml index b47b5fb2e05e..9828db79e54f 100644 --- a/packages/SettingsLib/res/values-pa/strings.xml +++ b/packages/SettingsLib/res/values-pa/strings.xml @@ -284,7 +284,8 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"ਵਾਇਰਲੈੱਸ ਡਿਸਪਲੇ ਪ੍ਰਮਾਣੀਕਰਨ ਲਈ ਚੋਣਾਂ ਪ੍ਰਦਰਸ਼ਿਤ ਕਰੋ"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"ਵਾਈ‑ਫਾਈ ਲੌਗਿੰਗ ਪੱਧਰ ਵਧਾਓ, ਵਾਈ‑ਫਾਈ Picker ਵਿੱਚ ਪ੍ਰਤੀ SSID RSSI ਦਿਖਾਓ"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"ਬੈਟਰੀ ਦੀ ਵਰਤੋਂ ਘਟਾ ਕੇ ਨੈੱਟਵਰਕ ਕਾਰਗੁਜ਼ਾਰੀ ਨੂੰ ਬਿਹਤਰ ਬਣਾਉਂਦਾ ਹੈ"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"ਇਹ ਟੌਗਲ ਸਿਰਫ਼ ਕਲਾਇੰਟ ਮੋਡ ਲਈ MAC ਦੇ ਬੇਤਰਤੀਬਵਾਰ ਵਿਵਹਾਰ \'ਤੇ ਅਸਰ ਪਾਉਂਦਾ ਹੈ।\nਜਦੋਂ ਇਸ ਮੋਡ ਨੂੰ ਕਿਰਿਆਸ਼ੀਲ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਤਾਂ ਜਿਹੜੇ ਵੀ ਨੈੱਟਵਰਕਾਂ ਵਿੱਚ MAC ਬੇਤਰਤੀਬਵਾਰ ਚਾਲੂ ਹੈ ਉਹਨਾਂ ਦੇ MAC ਪਤਿਆਂ ਦਾ ਸਾਂਝੇਦਾਰੀ ਦੌਰਾਨ ਮੁੜ-ਬੇਤਰਤੀਬੀਕਰਨ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ, ਜੋ ਕਲਾਇੰਟ ਦੇ ਪਿਛਲੀ ਵਾਰ ਨੈੱਟਵਰਕ ਤੋਂ ਡਿਸਕਨੈਕਟ ਹੋਣ \'ਤੇ ਨਿਰਭਰ ਕਰਦਾ ਹੈ। ਜੇ ਡੀਵਾਈਸ 4 ਘੰਟੇ ਜਾਂ ਘੱਟ ਸਮੇਂ ਵਿੱਚ ਮੁੜ-ਕਨੈਕਟ ਹੋ ਜਾਂਦਾ ਹੈ, ਤਾਂ ਮੁੜ-ਬੇਤਰਤੀਬਵਾਰ ਨਹੀਂ ਹੋਵੇਗਾ।"</string> + <!-- no translation found for wifi_enhanced_mac_randomization_summary (1210663439867489931) --> + <skip /> <string name="wifi_metered_label" msgid="8737187690304098638">"ਮੀਟਰਬੱਧ ਕੀਤਾ ਗਿਆ"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"ਗੈਰ-ਮੀਟਰਬੱਧ ਕੀਤਾ ਗਿਆ"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"ਲੌਗਰ ਬਫ਼ਰ ਆਕਾਰ"</string> @@ -373,8 +374,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"ਬੈਕਗ੍ਰਾਊਂਡ ਐਪਾਂ ਲਈ \'ਐਪ ਪ੍ਰਤਿਕਿਰਿਆ ਨਹੀਂ ਦੇ ਰਹੀ ਹੈ\' ਵਿੰਡੋ ਦਿਖਾਓ"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"ਸੂਚਨਾ ਚੈਨਲ ਚਿਤਾਵਨੀਆਂ ਦਿਖਾਓ"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"ਐਪ ਵੱਲੋਂ ਵੈਧ ਚੈਨਲ ਤੋਂ ਬਿਨਾਂ ਸੂਚਨਾ ਪੋਸਟ ਕਰਨ \'ਤੇ ਸਕ੍ਰੀਨ \'ਤੇ ਚਿਤਾਵਨੀ ਦਿਖਾਉਂਦੀ ਹੈ"</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"ਗੱਲਬਾਤ ਸੰਬੰਧੀ ਸੂਚਨਾਵਾਂ ਲਈ ਸ਼ਾਰਟਕੱਟ ਲਾਗੂ ਕਰੋ"</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"ਗੱਲਬਾਤ ਸੈਕਸ਼ਨ ਵਿੱਚ ਦਿਸਣ ਲਈ ਚਿਰਸਥਾਈ ਸਾਂਝਾਕਰਨ ਸ਼ਾਰਟਕੱਟ ਨਾਲ ਸੂਚਨਾਵਾਂ ਦਾ ਬੈਕਅੱਪ ਲੈਣਾ ਲੋੜੀਂਦਾ ਹੈ"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"ਐਪਾਂ ਨੂੰ ਜ਼ਬਰਦਸਤੀ ਬਾਹਰੀ ਸਟੋਰੇਜ \'ਤੇ ਆਗਿਆ ਦਿਓ"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"ਮੈਨੀਫੈਸਟ ਮੁੱਲਾਂ ਦੀ ਪਰਵਾਹ ਕੀਤੇ ਬਿਨਾਂ, ਕਿਸੇ ਵੀ ਐਪ ਨੂੰ ਬਾਹਰੀ ਸਟੋਰੇਜ \'ਤੇ ਲਿਖਣ ਦੇ ਯੋਗ ਬਣਾਉਂਦੀ ਹੈ"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"ਮੁੜ-ਆਕਾਰ ਬਦਲਣ ਲਈ ਸਰਗਰਮੀਆਂ \'ਤੇ ਜ਼ੋਰ ਦਿਓ"</string> diff --git a/packages/SettingsLib/res/values-pl/strings.xml b/packages/SettingsLib/res/values-pl/strings.xml index cc0543e01966..48dbbf856fed 100644 --- a/packages/SettingsLib/res/values-pl/strings.xml +++ b/packages/SettingsLib/res/values-pl/strings.xml @@ -284,7 +284,8 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Pokaż opcje certyfikacji wyświetlacza bezprzewodowego"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Zwiększ poziom rejestrowania Wi‑Fi, pokazuj według RSSI SSID w selektorze Wi‑Fi"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"Zmniejsza zużycie baterii i zwiększa wydajność sieci"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"Ten przełącznik wpływa na zachowanie randomizacji MAC tylko w przypadku trybu klienta.\nKiedy ten tryb jest aktywny, adresy MAC dowolnej sieci, która ma włączoną randomizację MAC, podczas powiązywania mogą zostać poddane ponownej randomizacji, w zależności od tego, kiedy klient ostatni raz rozłączył się z siecią. Ponowna randomizacja nie zachodzi, jeśli urządzenie połączy się ponownie w ciągu 4 lub mniejszej liczby godzin."</string> + <!-- no translation found for wifi_enhanced_mac_randomization_summary (1210663439867489931) --> + <skip /> <string name="wifi_metered_label" msgid="8737187690304098638">"Użycie danych jest mierzone"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"Użycie danych nie jest mierzone"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"Rozmiary bufora rejestratora"</string> @@ -373,8 +374,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"Wyświetlaj okno Aplikacja nie odpowiada dla aplikacji w tle"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"Pokaż ostrzeżenia kanału powiadomień"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"Wyświetla ostrzeżenie, gdy aplikacja publikuje powiadomienie bez prawidłowego kanału"</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"Wymuszaj skróty do powiadomień o rozmowie"</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"Wymagaj używania długoterminowych skrótów do udostępniania powiadomień, które pojawiałyby się w sekcji rozmowy"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"Wymuś zezwalanie na aplikacje w pamięci zewnętrznej"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"Pozwala na zapis aplikacji w pamięci zewnętrznej niezależnie od wartości w pliku manifestu"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"Wymuś zmianę rozmiaru okien aktywności"</string> diff --git a/packages/SettingsLib/res/values-pt-rBR/strings.xml b/packages/SettingsLib/res/values-pt-rBR/strings.xml index 99fa60903d96..3133738ab3c6 100644 --- a/packages/SettingsLib/res/values-pt-rBR/strings.xml +++ b/packages/SettingsLib/res/values-pt-rBR/strings.xml @@ -284,7 +284,8 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Mostrar opções de certificação de Display sem fio"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Aumentar o nível de registro de Wi-Fi; mostrar conforme o RSSI do SSID no seletor de Wi-Fi"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"Reduz o consumo de bateria e melhora o desempenho da rede"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"Essa opção afeta o comportamento de ordem aleatória de MAC somente para o modo cliente.\nQuando esse modo é ativado, todas as redes que tiverem a ordem aleatória de MAC ativada poderão ter a ordem aleatória refeita durante a associação, dependendo de quando o cliente se desconectou da rede pela última vez. A ordem aleatória não será refeita se o dispositivo se reconectar em até quatro horas."</string> + <!-- no translation found for wifi_enhanced_mac_randomization_summary (1210663439867489931) --> + <skip /> <string name="wifi_metered_label" msgid="8737187690304098638">"Limitada"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"Ilimitada"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"Tamanhos de buffer de logger"</string> @@ -373,8 +374,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"Exibir a caixa de diálogo \"App não responde\" para apps em segundo plano"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"Mostrar avisos de notificações"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"Exibir aviso na tela quando um app posta notificação sem canal válido"</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"Usar atalhos para notificações de conversa"</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"Exigir que as notificações sejam apoiadas por um atalho de compartilhamento de longa duração para que elas possam aparecer na seção de conversa"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"Forçar permissão de apps em armazenamento externo"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"Qualificar apps para gravação em armazenamento externo, independentemente de valores de manifestos"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"Forçar atividades a serem redimensionáveis"</string> diff --git a/packages/SettingsLib/res/values-pt-rPT/strings.xml b/packages/SettingsLib/res/values-pt-rPT/strings.xml index 6318c6d460b7..e1be6b829077 100644 --- a/packages/SettingsLib/res/values-pt-rPT/strings.xml +++ b/packages/SettingsLib/res/values-pt-rPT/strings.xml @@ -284,7 +284,8 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Mostrar opções da certificação de display sem fios"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Aumentar o nível de reg. de Wi-Fi, mostrar por RSSI de SSID no Selec. de Wi-Fi"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"Reduz o consumo rápido da bateria e melhora o desempenho da rede"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"Este botão ativar/desativar afeta o comportamento da seleção aleatória do MAC apenas para o modo de cliente.\nQuando este modo está ativado, qualquer rede que tenha a seleção aleatória do MAC ativa pode fazer com que os seus endereços MAC sejam novamente selecionados de forma aleatória durante a associação, dependendo de quando o cliente se desligou da rede pela última vez. A nova seleção aleatória não ocorre se a ligação do dispositivo for restabelecida em 4 horas ou menos."</string> + <!-- no translation found for wifi_enhanced_mac_randomization_summary (1210663439867489931) --> + <skip /> <string name="wifi_metered_label" msgid="8737187690304098638">"Acesso limitado"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"Acesso ilimitado"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"Tamanhos da memória intermédia do registo"</string> @@ -373,8 +374,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"Mostrar caixa de diálogo A aplicação não está a responder para aplicações em segundo plano"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"Mostrar avisos do canal de notificações"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"Mostra um aviso no ecrã quando uma aplicação publica uma notificação sem o canal ser válido"</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"Aplicar atalhos para notificações de conversas"</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"Solicitar cópia de seg. das notif. por atalho de partilha de longa duração p/ apresentação na secção de conversas"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"Forçar permissão de apps no armazenamento externo"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"Torna qualquer aplicação elegível para ser gravada no armazenamento externo, independentemente dos valores do manifesto"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"Forçar as atividades a serem redimensionáveis"</string> diff --git a/packages/SettingsLib/res/values-pt/strings.xml b/packages/SettingsLib/res/values-pt/strings.xml index 99fa60903d96..3133738ab3c6 100644 --- a/packages/SettingsLib/res/values-pt/strings.xml +++ b/packages/SettingsLib/res/values-pt/strings.xml @@ -284,7 +284,8 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Mostrar opções de certificação de Display sem fio"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Aumentar o nível de registro de Wi-Fi; mostrar conforme o RSSI do SSID no seletor de Wi-Fi"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"Reduz o consumo de bateria e melhora o desempenho da rede"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"Essa opção afeta o comportamento de ordem aleatória de MAC somente para o modo cliente.\nQuando esse modo é ativado, todas as redes que tiverem a ordem aleatória de MAC ativada poderão ter a ordem aleatória refeita durante a associação, dependendo de quando o cliente se desconectou da rede pela última vez. A ordem aleatória não será refeita se o dispositivo se reconectar em até quatro horas."</string> + <!-- no translation found for wifi_enhanced_mac_randomization_summary (1210663439867489931) --> + <skip /> <string name="wifi_metered_label" msgid="8737187690304098638">"Limitada"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"Ilimitada"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"Tamanhos de buffer de logger"</string> @@ -373,8 +374,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"Exibir a caixa de diálogo \"App não responde\" para apps em segundo plano"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"Mostrar avisos de notificações"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"Exibir aviso na tela quando um app posta notificação sem canal válido"</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"Usar atalhos para notificações de conversa"</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"Exigir que as notificações sejam apoiadas por um atalho de compartilhamento de longa duração para que elas possam aparecer na seção de conversa"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"Forçar permissão de apps em armazenamento externo"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"Qualificar apps para gravação em armazenamento externo, independentemente de valores de manifestos"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"Forçar atividades a serem redimensionáveis"</string> diff --git a/packages/SettingsLib/res/values-ro/strings.xml b/packages/SettingsLib/res/values-ro/strings.xml index f64cfbfe07b5..2abc4eab1a49 100644 --- a/packages/SettingsLib/res/values-ro/strings.xml +++ b/packages/SettingsLib/res/values-ro/strings.xml @@ -284,7 +284,8 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Afișați opțiunile pentru certificarea Ecran wireless"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Măriți niv. de înr. prin Wi‑Fi, afișați în fcț. de SSID RSSI în Selectorul Wi‑Fi"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"Reduce descărcarea bateriei și îmbunătățește performanța rețelei"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"Acest comutator influențează comportamentul de randomizare a adresei MAC numai pentru modul client.\nCând este activat acest mod, toate rețelele care au activată randomizarea adresei MAC pot randomiza din nou adresele MAC în timpul asocierii, în funcție de ora ultimei deconectări a clientului de la rețea. Randomizarea nu se repetă dacă dispozitivul se reconectează în decurs de 4 ore."</string> + <!-- no translation found for wifi_enhanced_mac_randomization_summary (1210663439867489931) --> + <skip /> <string name="wifi_metered_label" msgid="8737187690304098638">"Contorizată"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"Necontorizată"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"Dimensiunile memoriei temporare a jurnalului"</string> @@ -373,8 +374,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"Afișați dialogul Aplicația nu răspunde pentru aplicațiile din fundal"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"Afișați avertismentele de pe canalul de notificări"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"Afișați avertisment pe ecran când o aplicație postează o notificare fără canal valid"</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"Comenzi rapide pt. notif. de conversație"</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"Notificările trebuie susținute de o comandă rapidă veche de trimitere ca să apară în secțiunea conversației"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"Forțați accesul aplicațiilor la stocarea externă"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"Faceți ca orice aplicație eligibilă să fie scrisă în stocarea externă, indiferent de valorile manifestului"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"Forțați redimensionarea activităților"</string> diff --git a/packages/SettingsLib/res/values-ru/strings.xml b/packages/SettingsLib/res/values-ru/strings.xml index 71c7cf352f7c..d0c73aecfe21 100644 --- a/packages/SettingsLib/res/values-ru/strings.xml +++ b/packages/SettingsLib/res/values-ru/strings.xml @@ -284,7 +284,8 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Показывать параметры сертификации беспроводных мониторов"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Вести подробный журнал, показывать RSSI для каждого SSID при выборе сети"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"Уменьшает расход заряда батареи и улучшает работу сети"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"Эта настройка влияет на использование случайных MAC-адресов только в клиентском режиме.\nВо время подключения к любой сети происходит повторное создание случайного MAC-адреса в зависимости от того, когда клиент последний раз отключался от сети. Это не происходит, если соединение возобновляется через четыре часа или раньше."</string> + <!-- no translation found for wifi_enhanced_mac_randomization_summary (1210663439867489931) --> + <skip /> <string name="wifi_metered_label" msgid="8737187690304098638">"Сеть с тарификацией трафика"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"Сеть без тарификации трафика"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"Размер буфера журнала"</string> @@ -373,8 +374,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"Уведомлять о том, что приложение, запущенное в фоновом режиме, не отвечает"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"Показывать предупреждения канала передачи уведомлений"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"Показывать предупреждение о новых уведомлениях приложения вне допустимого канала"</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"Принудительное использование ярлыков для уведомлений из чатов"</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"Обязательно дублировать уведомления с помощью долго отображаемых ярлыков, чтобы уведомления появлялись в разделе чатов"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"Разрешить сохранение на внешние накопители"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"Разрешить сохранение приложений на внешних накопителях (независимо от значений в манифесте)"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"Изменение размера в многооконном режиме"</string> diff --git a/packages/SettingsLib/res/values-si/strings.xml b/packages/SettingsLib/res/values-si/strings.xml index bbf40db32572..b9b602913ec0 100644 --- a/packages/SettingsLib/res/values-si/strings.xml +++ b/packages/SettingsLib/res/values-si/strings.xml @@ -284,7 +284,8 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"නොරැහැන් සංදර්ශක සහතිකය සඳහා විකල්ප පෙන්වන්න"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Wi‑Fi ලොග් මට්ටම වැඩි කරන්න, Wi‑Fi තෝරනයෙහි SSID RSSI අනුව පෙන්වන්න"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"බැටරි බැසීම අඩු කරන අතර ජාල කාර්ය සාධනය වැඩි දියුණු කරයි"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"මෙම ටොගලය සේවාලාභී ප්රකාරය සඳහා පමණක් MAC සසම්භාවීකරණ හැසිරීමට බලපායි.\nමෙම ප්රකාරය සක්රිය කර ඇති විට, MAC සසම්භාවීකරණය සබල කර ඇති ඕනෑම ජාලයකට, සේවාලාභියා අවසන් වරට ජාලයෙන් විසන්ධි වූයේ කවදාද යන්න මත පදනම්ව සම්බන්ධය අතරතුර ඔවුන්ගේ MAC ලිපින යළි සසම්භාවිකරණය කර තිබිය හැකිය. උපාංගය පැය 4කින් හෝ ඊට අඩු කාලයකදී නැවත සම්බන්ධ වන්නේ නම් යළි සසම්භාවිකරණය සිදු නොවේ."</string> + <!-- no translation found for wifi_enhanced_mac_randomization_summary (1210663439867489931) --> + <skip /> <string name="wifi_metered_label" msgid="8737187690304098638">"මනිනු ලැබේ"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"මනින්නේ නැත"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"ලෝගයේ අන්තරාවක ප්රමාණය"</string> @@ -373,8 +374,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"පසුබිම් යෙදුම්වලට යෙදුම ප්රතිචාර නොදක්වයි කවුළුව සංදර්ශනය කරන්න"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"දැනුම්දීම් නාලිකා අනතුරු ඇඟවීම් පෙන්."</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"යෙදුමක් වලංගු නාලිකාවකින් තොරව දැනුම්දීමක් පළ කරන විට තිරය-මත අනතුරු ඇඟවීමක් සංදර්ශනය කරයි."</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"සංවාද දැනුම් දීම් සඳහා කෙටිමං බලාත්මක කරන්න"</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"සංවාද කොටසේ පෙනී සිටීම පිණිස දිගු කාලයක් පවතින බෙදා ගැනීමේ කෙටිමඟක් මඟින් දැනුම් දීම් අවහිර කිරීමට අවශ්ය වේ"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"බාහිර මත යෙදුම් ඉඩ දීම බල කරන්න"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"මැනිෆෙස්ට් අගයන් නොසලකා, ඕනෑම යෙදුමක් බාහිර ගබඩාවට ලිවීමට සුදුසුකම් ලබා දෙයි"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"ක්රියාකාරකම් ප්රතිප්රමාණ කළ හැකි බවට බල කරන්න"</string> diff --git a/packages/SettingsLib/res/values-sk/strings.xml b/packages/SettingsLib/res/values-sk/strings.xml index f988d468fede..df0f1010a5f2 100644 --- a/packages/SettingsLib/res/values-sk/strings.xml +++ b/packages/SettingsLib/res/values-sk/strings.xml @@ -284,7 +284,8 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Zobraziť možnosti certifikácie bezdrôtového zobrazenia"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Zvýšiť úroveň denníkov Wi‑Fi, zobrazovať podľa SSID RSSI pri výbere siete Wi‑Fi"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"Znižuje používanie batérie a zlepšuje výkon siete"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"Tento prepínač ovplyvňuje správanie randomizácie adresy MAC len pre režim klienta.\nKeď je tento režim aktivovaný, všetky siete s povolenou randomizáciou adresy MAC môžu mať svoje adresy MAC počas spájania opätovne randomizované v závislosti od toho, kedy sa klient od siete naposledy odpojil. Opätovná randomizácia nenastane, ak sa zariadenie znova pripojí do štyroch hodín."</string> + <!-- no translation found for wifi_enhanced_mac_randomization_summary (1210663439867489931) --> + <skip /> <string name="wifi_metered_label" msgid="8737187690304098638">"Merané"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"Bez merania dát"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"Vyrovnávacia pamäť nástroja denníkov"</string> @@ -373,8 +374,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"Zobrazovať dialógové okno „Aplikácia nereaguje“ pre aplikácie na pozadí"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"Zobraziť hlásenia kanála upozornení"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"Zobrazuje varovné hlásenie na obrazovke, keď aplikácia zverejní upozornenie bez platného kanála"</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"Vynútiť skratky pre upozornenia na konverzácie"</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"Vyžadovať zastúpenie upozornení dlhodobou skratkou na zdieľanie, aby sa zobrazili v sekcii konverzácie"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"Vynútiť povolenie aplikácií na externom úložisku"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"Umožňuje zapísať akúkoľvek aplikáciu do externého úložiska bez ohľadu na hodnoty v manifeste"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"Vynútiť možnosť zmeny veľkosti aktivít"</string> diff --git a/packages/SettingsLib/res/values-sl/strings.xml b/packages/SettingsLib/res/values-sl/strings.xml index eb2077cfbf44..b0c61177f223 100644 --- a/packages/SettingsLib/res/values-sl/strings.xml +++ b/packages/SettingsLib/res/values-sl/strings.xml @@ -284,7 +284,8 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Pokaži možnosti za potrdilo brezžičnega zaslona"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Povečaj raven zapisovanja dnevnika za Wi-Fi; v izbirniku Wi‑Fi-ja pokaži glede na SSID RSSI"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"Zmanjša porabo energije akumulatorja in izboljša delovanje omrežja"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"To stikalo vpliva na dodeljevanje naključnega naslova MAC samo v načinu odjemalca.\nKo je ta način aktiviran, se omrežjem, pri katerih je omogočeno naključno dodeljevanje naslova MAC, med povezovanjem morda dodeli nov naključen naslov MAC, kar je odvisno od tega, kdaj je odjemalec nazadnje prekinil povezavo z omrežjem. Dodelitev novega naključnega naslova se ne izvede, če naprava znova vzpostavi povezavo po največ štirih urah."</string> + <!-- no translation found for wifi_enhanced_mac_randomization_summary (1210663439867489931) --> + <skip /> <string name="wifi_metered_label" msgid="8737187690304098638">"Omejen prenos podatkov"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"Z neomejenim prenosom podatkov"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"Velikosti medpomnilnikov zapisovalnika dnevnika"</string> @@ -373,8 +374,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"Prikaz pogovornega okna za neodzivanje aplikacij v ozadju"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"Pokaži opozorila kanala za obvestila"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"Na zaslonu se pokaže opozorilo, ko aplikacija objavi obvestilo brez veljavnega kanala"</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"Uveljavitev bližnjic za obvestila pogovora"</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"Zahteva, da obvestila podpira dolgotrajna bližnjica za deljenje, da se prikažejo v razdelku s pogovorom"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"Vsili omogočanje aplikacij v zunanji shrambi"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"Poskrbi, da je ne glede na vrednosti v manifestu mogoče vsako aplikacijo zapisati v zunanjo shrambo"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"Vsili spremembo velikosti za aktivnosti"</string> diff --git a/packages/SettingsLib/res/values-sq/strings.xml b/packages/SettingsLib/res/values-sq/strings.xml index 685be99fdab0..71f62d437361 100644 --- a/packages/SettingsLib/res/values-sq/strings.xml +++ b/packages/SettingsLib/res/values-sq/strings.xml @@ -284,7 +284,8 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Shfaq opsionet për certifikimin e ekranit valor"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Rrit nivelin regjistrues të Wi‑Fi duke shfaqur SSID RSSI-në te Zgjedhësi i Wi‑Fi"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"Zvogëlon shkarkimin e baterisë dhe përmirëson cilësinë e funksionimit të rrjetit"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"Ky ndryshim ndikon te sjellja e renditjes së rastësishme të adresave MAC vetëm për modalitetin e klientit.\nKur aktivizohet ky modalitet, çdo rrjet që ka të aktivizuar renditjen e rastësishme të adresave MAC mund t\'i rirendisë adresat e veta MAC gjatë shoqërimit, në varësi të kohës kur është shkëputur klienti për herë të fundit nga rrjeti. Rirenditja e rastësishme nuk ndodh nëse pajisja lidhet brenda 4 orëve ose më pak."</string> + <!-- no translation found for wifi_enhanced_mac_randomization_summary (1210663439867489931) --> + <skip /> <string name="wifi_metered_label" msgid="8737187690304098638">"Me matje"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"Pa matje"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"Madhësitë e regjistruesit"</string> @@ -373,8 +374,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"Shfaq raportet ANR (Aplikacioni nuk përgjigjet) për aplikacionet në sfond"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"Shfaq paralajmërimet e kanalit të njoftimeve"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"Shfaq paralajmërimin në ekran kur një aplikacion poston një njoftim pa një kanal të vlefshëm"</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"Zbato shkurtoret për njoftimet e bisedave"</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"Kërko që informacionet të mbështeten nga një shkurtore ndarjeje afatgjatë që ato të shfaqen në seksionin e bashkëbisedimit"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"Detyro lejimin në hapësirën e jashtme"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"Bën që çdo aplikacion të jetë i përshtatshëm për t\'u shkruar në hapësirën ruajtëse të jashtme, pavarësisht nga vlerat e manifestit"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"Detyro madhësinë e ndryshueshme për aktivitetet"</string> diff --git a/packages/SettingsLib/res/values-sr/strings.xml b/packages/SettingsLib/res/values-sr/strings.xml index 9188a76248ac..0cdc19d33a11 100644 --- a/packages/SettingsLib/res/values-sr/strings.xml +++ b/packages/SettingsLib/res/values-sr/strings.xml @@ -284,7 +284,8 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Приказ опција за сертификацију бежичног екрана"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Повећава ниво евидентирања за Wi‑Fi. Приказ по SSID RSSI-у у бирачу Wi‑Fi мреже"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"Смањује потрошњу батерије и побољшава учинак мреже"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"Овај прекидач утиче на понашање насумичног разврставања MAC адреса само за режим клијента.\nКада се овај режим активира, за мреже на којима је омогућено насумично разврставање MAC адреса може да дође до поновног насумичног разврставања MAC адреса током повезивања, у зависности од тога када се клијент пре тога искључио са мреже. До поновног насумичног разврставања не долази ако се уређај поново повеже за 4 сата или мање."</string> + <!-- no translation found for wifi_enhanced_mac_randomization_summary (1210663439867489931) --> + <skip /> <string name="wifi_metered_label" msgid="8737187690304098638">"Са ограничењем"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"Без ограничења"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"Величине бафера података у програму за евидентирање"</string> @@ -373,8 +374,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"Прикажи дијалог Апликација не реагује за апликације у позадини"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"Приказуј упозорења због канала за обавештења"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"Приказује упозорење на екрану када апликација постави обавештење без важећег канала"</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"Примењуј пречице за обавештења о конверзацијама"</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"Захтева да обавештења имају и дугорочну пречицу за дељење како би се појављивала у одељку за конверзације"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"Принудно дозволи апликације у спољној"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"Омогућава уписивање свих апликација у спољну меморију, без обзира на вредности манифеста"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"Принудно омогући промену величине активности"</string> diff --git a/packages/SettingsLib/res/values-sv/strings.xml b/packages/SettingsLib/res/values-sv/strings.xml index c383e57739bb..15b9577c7020 100644 --- a/packages/SettingsLib/res/values-sv/strings.xml +++ b/packages/SettingsLib/res/values-sv/strings.xml @@ -284,7 +284,8 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Visa certifieringsalternativ för Wi-Fi-skärmdelning"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Öka loggningsnivån för Wi-Fi, visa per SSID RSSI i Wi‑Fi Picker"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"Sänker batteriförbrukningen och förbättrar nätverksprestandan"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"Detta läge påverkar endast MAC-slumpgenereringens beteende för klientläget.\nNär läget aktiveras kan alla nätverk som har MAC-slumpgenerering aktiverat få sina adresser slumpgenererade på nytt under kopplingen, beroende på när klienten senast kopplade från nätverket. Det sker ingen ny slumpgenerering om enheten återansluter inom fyra timmar."</string> + <!-- no translation found for wifi_enhanced_mac_randomization_summary (1210663439867489931) --> + <skip /> <string name="wifi_metered_label" msgid="8737187690304098638">"Med datapriser"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"Utan datapriser"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"Buffertstorlekar för logg"</string> @@ -373,8 +374,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"Visa dialogrutan om att appen inte svarar för bakgrundsappar"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"Visa varningar om aviseringskanal"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"Visa varningar på skärmen när en app lägger upp en avisering utan en giltig kanal"</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"Kräv genvägar för konversationsaviseringar"</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"Kräv att aviseringar har en långlivad delningsgenväg för att få visas i konversationsavsnittet"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"Tillåt appar i externt lagringsutrymme"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"Allar appar kan skrivas till extern lagring, oavsett manifestvärden"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"Framtvinga storleksanpassning för aktiviteter"</string> diff --git a/packages/SettingsLib/res/values-sw/strings.xml b/packages/SettingsLib/res/values-sw/strings.xml index 25424b0e2c16..21d4f49f7a01 100644 --- a/packages/SettingsLib/res/values-sw/strings.xml +++ b/packages/SettingsLib/res/values-sw/strings.xml @@ -284,7 +284,8 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Onyesha chaguo za cheti cha kuonyesha pasiwaya"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Ongeza hatua ya uwekaji kumbukumbu ya Wi-Fi, onyesha kwa kila SSID RSSI kwenye Kichukuzi cha Wi-Fi"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"Hupunguza matumizi ya chaji ya betri na kuboresha utendaji wa mtandao"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"Hali hii ya kugeuza huathiri utendaji wa kuweka nasibu kwenye anwani ya MAC katika hali ya kiteja pekee.\nWakati hali hii imewashwa, mitandao yoyote ambapo kipengele cha unasibu wa MAC kimewashwa inaweza kuruhusu anwani zao za MAC kuwekwa nasibu tena wakati wa ushirikiano, kulingana na mara ya mwisho kiteja kilipoacha kuunganisha kwenye mtandao. Tukio la kuweka unasibu tena halitokei ikiwa kifaa kitaunganisha tena baada ya muda usiozidi saa nne."</string> + <!-- no translation found for wifi_enhanced_mac_randomization_summary (1210663439867489931) --> + <skip /> <string name="wifi_metered_label" msgid="8737187690304098638">"Mtandao unapima data"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"Mtandao usiopima data"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"Ukubwa wa kiweka bafa ya kumbukumbu"</string> @@ -373,8 +374,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"Onyesha kidirisha cha Programu Kutorejesha Majibu kwa programu zinazotumika chinichini"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"Onyesha arifa za maonyo ya kituo"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"Huonyesha onyo kwenye skrini programu inapochapisha arifa bila kituo sahihi."</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"Tekeleza njia za mkato za arifa za mazungumzo"</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"Weka mipangilio ili nakala za arifa zihifadhiwe kwa njia ya zamani ya mkato ya kushiriki ili zionekane katika sehemu ya mazungumzo"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"Lazima uruhusu programu kwenye hifadhi ya nje"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"Huruhusu programu yoyote iwekwe kwenye hifadhi ya nje, bila kujali thamani za faili ya maelezo"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"Lazimisha shughuli ziweze kubadilishwa ukubwa"</string> diff --git a/packages/SettingsLib/res/values-ta/strings.xml b/packages/SettingsLib/res/values-ta/strings.xml index a57fd0e87e1f..d403858d000a 100644 --- a/packages/SettingsLib/res/values-ta/strings.xml +++ b/packages/SettingsLib/res/values-ta/strings.xml @@ -284,7 +284,8 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"வயர்லெஸ் காட்சி சான்றுக்கான விருப்பங்களைக் காட்டு"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"வைஃபை நுழைவு அளவை அதிகரித்து, வைஃபை தேர்வுக் கருவியில் ஒவ்வொன்றிற்கும் SSID RSSI ஐ காட்டுக"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"பேட்டரி தீர்ந்துபோவதைக் குறைத்து நெட்வொர்க்கின் செயல்திறனை மேம்படுத்தும்"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"கிளையண்ட் பயன்முறைக்கான MAC ரேண்டம் ஆக்குதலை மட்டுமே இந்த நிலைமாற்றி பாதிக்கும்.\nஇந்தப் பயன்முறை இயக்கப்பட்டால் நெட்வொர்க்கிலிருந்து கிளையண்ட் கடைசியாக எப்போது துண்டிக்கப்பட்டது என்பதைப் பொறுத்து, MAC ரேண்டம் ஆக்குதல் இயக்கப்பட்டிருக்கும் நெட்வொர்க்குகள் இணைக்கப்படும்போது தங்கள் MAC முகவரிகளை மீண்டும் ரேண்டம் ஆக்கக்கூடும். சாதனம் 4 மணிநேரத்திலோ அதற்கு முன்னரோ மீண்டும் இணைக்கப்பட்டால் மீண்டும் ரேண்டம் ஆக்குதல் நிகழாது."</string> + <!-- no translation found for wifi_enhanced_mac_randomization_summary (1210663439867489931) --> + <skip /> <string name="wifi_metered_label" msgid="8737187690304098638">"கட்டண நெட்வொர்க்"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"கட்டணமில்லா நெட்வொர்க்"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"லாகர் பஃபர் அளவுகள்"</string> @@ -373,8 +374,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"பின்புல ஆப்ஸுக்கு, ஆப்ஸ் பதிலளிக்கவில்லை என்ற செய்தியைக் காட்டும்"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"அறிவிப்புச் சேனல் எச்சரிக்கைகளைக் காட்டு"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"ஆப்ஸானது சரியான சேனல் இல்லாமல் அறிவிப்பை இடுகையிடும் போது, திரையில் எச்சரிக்கையைக் காட்டும்"</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"உரையாடல் அறிவிப்புகளுக்கான ஷார்ட்கட்களை செயல்படுத்து"</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"அறிவிப்புகளானது உரையாடல் பிரிவில் தோன்ற வேண்டும் எனில் அவை நீண்ட காலம் செயல்பாட்டில் இருந்த பகிர்தலுக்கான ஷார்ட்கட் ஆதரவைக் கொண்டிருக்க வேண்டும்"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"ஆப்ஸை வெளிப்புறச் சேமிப்பிடத்தில் அனுமதி"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"மேனிஃபெஸ்ட் மதிப்புகளைப் பொருட்படுத்தாமல், எல்லா ஆப்ஸையும் வெளிப்புறச் சேமிப்பிடத்தில் எழுத அனுமதிக்கும்"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"செயல்பாடுகளை அளவுமாறக்கூடியதாக அமை"</string> diff --git a/packages/SettingsLib/res/values-te/strings.xml b/packages/SettingsLib/res/values-te/strings.xml index b6186106cfa0..3c8650922d6a 100644 --- a/packages/SettingsLib/res/values-te/strings.xml +++ b/packages/SettingsLib/res/values-te/strings.xml @@ -284,7 +284,8 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"వైర్లెస్ ప్రదర్శన సర్టిఫికెట్ కోసం ఎంపికలను చూపు"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Wi‑Fi ఎంపికలో SSID RSSI ప్రకారం చూపబడే Wi‑Fi లాగింగ్ స్థాయిని పెంచండి"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"బ్యాటరీ శక్తి వినియోగాన్ని తగ్గించి & నెట్వర్క్ పనితీరును మెరుగుపరుస్తుంది"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"క్లయింట్ మోడ్లో మాత్రమే MAC ర్యాండమైజేషన్ ప్రవర్తనను ఈ టోగుల్ ప్రభావితం చేస్తుంది.\nఈ మోడ్ను యాక్టివేట్ చేసినప్పుడు, క్లయింట్ చివరిసారిగా నెట్వర్క్ నుండి ఎప్పుడు డిస్కనెక్ట్ చేసారనే దానిని బట్టి, అనుబంధం జరిగేటప్పుడు MAC ర్యాండమైజేషన్ ఎనేబుల్ చేయబడిన ఏ నెట్వర్క్లు అయినా వాటి MAC చిరునామాలను తిరిగి ర్యాండమైజేషన్ చేయవచ్చు. పరికరం 4 గంటలు లేదా అంతకన్నా తక్కువ సమయంలో మళ్లీ కనెక్ట్ చేయబడితే తిరిగి ర్యాండమైజేషన్ చేయడమనేది జరగదు."</string> + <!-- no translation found for wifi_enhanced_mac_randomization_summary (1210663439867489931) --> + <skip /> <string name="wifi_metered_label" msgid="8737187690304098638">"గణించబడుతోంది"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"గణించబడటం లేదు"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"లాగర్ బఫర్ పరిమాణాలు"</string> @@ -373,8 +374,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"నేపథ్య యాప్ల కోసం యాప్ ప్రతిస్పందించడం లేదు అనే డైలాగ్ను చూపు"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"ఛానెల్ హెచ్చరికల నోటిఫికేషన్ను చూపు"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"చెల్లుబాటు అయ్యే ఛానెల్ లేకుండా యాప్ నోటిఫికేషన్ను పోస్ట్ చేస్తున్నప్పుడు స్క్రీన్పై హెచ్చరికను చూపిస్తుంది"</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"సంభాషణ నోటిఫికేషన్లకు షార్ట్కట్ల అమలు"</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"సంభాషణల విభాగంలో కనిపించడానికి చిరకాలం నిలిచిపోయే భాగస్వామ్య సత్వరమార్గం ద్వారా నోటిఫికేషన్లకు మద్దతు ఉండాలి."</string> <string name="force_allow_on_external" msgid="9187902444231637880">"యాప్లను బాహ్య నిల్వలో తప్పనిసరిగా అనుమతించు"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"ఏ యాప్ని అయినా మానిఫెస్ట్ విలువలతో సంబంధం లేకుండా బాహ్య నిల్వలో సేవ్ చేయడానికి అనుమతిస్తుంది"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"కార్యకలాపాల విండోల పరిమాణం మార్చగలిగేలా నిర్బంధించు"</string> diff --git a/packages/SettingsLib/res/values-th/strings.xml b/packages/SettingsLib/res/values-th/strings.xml index 315fab9c0052..2e809c243495 100644 --- a/packages/SettingsLib/res/values-th/strings.xml +++ b/packages/SettingsLib/res/values-th/strings.xml @@ -284,7 +284,8 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"แสดงตัวเลือกสำหรับการรับรองการแสดงผล แบบไร้สาย"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"เพิ่มระดับการบันทึก Wi‑Fi แสดงต่อ SSID RSSI ในตัวเลือก Wi‑Fi"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"ลดการเปลืองแบตเตอรี่และเพิ่มประสิทธิภาพเครือข่าย"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"การตั้งค่านี้ส่งผลต่อลักษณะการสุ่ม MAC ในโหมดไคลเอ็นต์เท่านั้น\nเมื่อเปิดใช้งานโหมดนี้ ทุกเครือข่ายที่มีการเปิดใช้การสุ่ม MAC อาจสุ่มที่อยู่ MAC ซ้ำในระหว่างการเชื่อมโยง ทั้งนี้ขึ้นอยู่กับว่าไคลเอ็นต์ยกเลิกการเชื่อมต่อกับเครือข่ายครั้งสุดท้ายเมื่อใด การสุ่มซ้ำจะไม่เกิดขึ้นหากอุปกรณ์เชื่อมต่ออีกครั้งภายในไม่เกิน 4 ชั่วโมง"</string> + <!-- no translation found for wifi_enhanced_mac_randomization_summary (1210663439867489931) --> + <skip /> <string name="wifi_metered_label" msgid="8737187690304098638">"มีการวัดปริมาณอินเทอร์เน็ต"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"ไม่มีการวัดปริมาณอินเทอร์เน็ต"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"ขนาดบัฟเฟอร์ของตัวบันทึก"</string> @@ -373,8 +374,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"แสดงกล่องโต้ตอบ \"แอปไม่ตอบสนอง\" สำหรับแอปพื้นหลัง"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"แสดงคำเตือนจากช่องทางการแจ้งเตือน"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"แสดงคำเตือนบนหน้าจอเมื่อแอปโพสต์การแจ้งเตือนโดยไม่มีช่องทางที่ถูกต้อง"</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"บังคับใช้ทางลัดสำหรับการแจ้งเตือนการสนทนา"</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"ต้องทำให้การแจ้งเตือนปรากฏในส่วนการสนทนาได้อีกถ้ามีการปิดไปโดยใช้ทางลัดการแชร์ที่แสดงอยู่ตลอด"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"บังคับให้แอปสามารถใช้ที่เก็บภายนอก"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"เขียนแอปในพื้นที่เก็บข้อมูลภายนอกได้ โดยไม่คำนึงถึงค่าไฟล์ Manifest"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"บังคับให้กิจกรรมปรับขนาดได้"</string> diff --git a/packages/SettingsLib/res/values-tl/strings.xml b/packages/SettingsLib/res/values-tl/strings.xml index 2ea03a4eaa71..69b94ef09d1a 100644 --- a/packages/SettingsLib/res/values-tl/strings.xml +++ b/packages/SettingsLib/res/values-tl/strings.xml @@ -284,7 +284,8 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Ipakita ang mga opsyon para sa certification ng wireless display"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Pataasin ang antas ng Wi‑Fi logging, ipakita sa bawat SSID RSSI sa Wi‑Fi Picker"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"Binabawasan ang pagkaubos ng baterya at pinapahusay ang performance ng network"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"Nakakaapekto ang toggle na ito sa pag-kilos ng pag-randomize ng MAC para lang sa client mode.\nKapag na-activate ang mode na ito, baka ma-randomize ulit ang MAC address ng anumang network na naka-enable ang pag-randomize sa MAC habang nagaganap ang pag-uugnay, depende kung kailan huling nadiskonekta ang client sa network. Hindi nangyayari ang pag-randomize ulit kung kumonekta ulit ang device sa loob ng 4 na oras o mas maaga."</string> + <!-- no translation found for wifi_enhanced_mac_randomization_summary (1210663439867489931) --> + <skip /> <string name="wifi_metered_label" msgid="8737187690304098638">"Nakametro"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"Hindi Nakametro"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"Mga laki ng buffer ng Logger"</string> @@ -373,8 +374,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"Ipakita ang dialog na Hindi Tumutugon ang App para sa mga app sa background"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"Ipakita ang mga babala sa notification channel"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"Nagpapakita ng babala sa screen kapag nag-post ang app ng notification nang walang wastong channel"</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"Magpatupad ng mga shortcut para sa mga notification ng pag-uusap"</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"Ipa-back up ang mga notification gamit ang long-lived na shortcut sa pagbabahagi para lumabas sa seksyong pag-uusap"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"Puwersahang payagan ang mga app sa external"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"Ginagawang kwalipikado ang anumang app na mailagay sa external na storage, anuman ang mga value ng manifest"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"Sapilitang gawing resizable ang mga aktibidad"</string> diff --git a/packages/SettingsLib/res/values-tr/strings.xml b/packages/SettingsLib/res/values-tr/strings.xml index f41b8ff05b31..01a1ac3a4618 100644 --- a/packages/SettingsLib/res/values-tr/strings.xml +++ b/packages/SettingsLib/res/values-tr/strings.xml @@ -284,7 +284,8 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Kablosuz ekran sertifikası seçeneklerini göster"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Kablosuz günlük kaydı seviyesini artır. Kablosuz Seçici\'de her bir SSID RSSI için göster."</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"Pili daha az harcar ve ağ performansını iyileştirir"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"Bu geçiş, yalnızca istemci modu için MAC rastgele hale getirme davranışını etkiler.\nBu mod etkinleştirildiğinde, MAC rastgele seçimi etkin olan tüm ağların MAC adresleri, istemcinin ağla bağlantısının en son kesildiği zamana bağlı olarak ilişkilendirme sırasında yeniden rastgele seçilebilir. Cihaz 4 saat veya daha kısa süre içinde tekrar bağlanırsa yeniden rastgele hale getirme gerçekleşmez."</string> + <!-- no translation found for wifi_enhanced_mac_randomization_summary (1210663439867489931) --> + <skip /> <string name="wifi_metered_label" msgid="8737187690304098638">"Sayaçlı"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"Sayaçsız"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"Günlük Kaydedici arabellek boyutları"</string> @@ -373,8 +374,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"Arka plan uygulamalar için Uygulama Yanıt Vermiyor mesajını göster"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"Bildirim kanalı uyarılarını göster"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"Bir uygulama geçerli kanal olmadan bildirim yayınladığında ekranda uyarı gösterir"</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"Görüşme bildirimleri için kısayolları zorunlu kıl"</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"Bildirimlerin, görüşme bölümünde görünebilmesi için uzun ömürlü paylaşma kısayolu ile desteklenmesini gerektir"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"Harici birimdeki uygulamalara izin vermeye zorla"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"Manifest değerlerinden bağımsız olarak uygulamaları harici depolamaya yazmak için uygun hale getirir"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"Etkinlikleri yeniden boyutlandırılabilmeye zorla"</string> diff --git a/packages/SettingsLib/res/values-uk/strings.xml b/packages/SettingsLib/res/values-uk/strings.xml index a6021d233555..dcf219febdeb 100644 --- a/packages/SettingsLib/res/values-uk/strings.xml +++ b/packages/SettingsLib/res/values-uk/strings.xml @@ -284,7 +284,8 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Показати параметри сертифікації бездротового екрана"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Показувати в журналі RSSI для кожного SSID під час вибору Wi-Fi"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"Зменшує споживання заряду акумулятора й підвищує ефективність роботи мережі"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"Цей перемикач впливає на поведінку довільного вибору MAC-адрес лише для клієнтського режиму.\nКоли цей режим активовано, MAC-адреси мереж із довільним вибором цих адрес переназначаються під час зв\'язування залежно від часу останнього відключення клієнта від мережі. Повторний довільний вибір адрес не відбувається, якщо пристрій знову підключається протягом 4 годин."</string> + <!-- no translation found for wifi_enhanced_mac_randomization_summary (1210663439867489931) --> + <skip /> <string name="wifi_metered_label" msgid="8737187690304098638">"З тарифікацією трафіку"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"Без тарифікації трафіку"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"Розміри буфера журналу"</string> @@ -373,8 +374,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"Показувати вікно \"Додаток не відповідає\" для додатків у фоновому режимі"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"Показувати застереження про канал"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"З’являється застереження, коли додаток надсилає сповіщення через недійсний канал"</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"Використовувати ярлики для сповіщень про чати"</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"Вимагати для сповіщень постійних ярликів доступу, щоб показувати їх у розділі чатів"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"Примусово записувати додатки в зовнішню пам’ять"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"Можна записувати додатки в зовнішню пам’ять, незалежно від значень у маніфесті"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"Примусово масштабувати активність"</string> diff --git a/packages/SettingsLib/res/values-ur/strings.xml b/packages/SettingsLib/res/values-ur/strings.xml index a425805963f0..4ad4ddba49e8 100644 --- a/packages/SettingsLib/res/values-ur/strings.xml +++ b/packages/SettingsLib/res/values-ur/strings.xml @@ -284,7 +284,8 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"وائرلیس ڈسپلے سرٹیفیکیشن کیلئے اختیارات دکھائیں"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Wi‑Fi لاگنگ لیول میں اضافہ کریں، Wi‑Fi منتخب کنندہ میں فی SSID RSSI دکھائیں"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"بیٹری ڈرین کم کرتا ہے اور نیٹ ورک کارکردگی کو بہتر بناتا ہے"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"یہ ٹوگل صرف کلائنٹ وضع کے لئے MAC کی رینڈمائزیشن کو متاثر کرتا ہے۔\nجب یہ وضع فعال کی جاتی ہے، تو کسی بھی نیٹ ورکس میں جو MAC رینڈمائزیشن کو فعال کرتا ہے ان کے MAC ایڈریسز ایسوسی ایشن کے دوران دوبارہ رینڈمائز ہو سکتے ہیں، اس پر منحصر ہے کہ کلائنٹ کب آخری بار نیٹ ورک سے غیر منسلک ہوا۔ اگر آلہ 4 گھنٹوں یا اس سے کم وقت میں دوبارہ منسلک ہو، تو پھر دوبارہ رینڈمائزیشن کا امکان نہیں ہوتا ہے۔"</string> + <!-- no translation found for wifi_enhanced_mac_randomization_summary (1210663439867489931) --> + <skip /> <string name="wifi_metered_label" msgid="8737187690304098638">"میٹرڈ"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"غیر میٹر شدہ"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"لاگر بفر کے سائز"</string> @@ -373,8 +374,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"پس منظر کی ایپس کیلئے \'ایپ جواب نہیں دے رہی ہے\' ڈائلاگ ڈسپلے کریں"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"چینل کی اطلاعی تنبیہات دکھائیں"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"کسی ایپ کی طرف سے درست چینل کے بغیر اطلاع پوسٹ ہونے پر آن اسکرین تنبیہ ڈسپلے کرتا ہے"</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"بات چیت کی اطلاعات کے لیے شارٹ کٹس نافذ کریں"</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"بات چیت کے سیکشن میں ظاہر ہونے کے لئے اطلاعات کو طویل مدت والے شیئرنگ شارٹ کٹ کے ذریعے حمایت کی ضرورت ہے"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"بیرونی پر ایپس کو زبردستی اجازت دیں"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"manifest اقدار سے قطع نظر، کسی بھی ایپ کو بیرونی اسٹوریج پر لکھے جانے کا اہل بناتا ہے"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"سرگرمیوں کو ری سائز ایبل بنائیں"</string> diff --git a/packages/SettingsLib/res/values-uz/strings.xml b/packages/SettingsLib/res/values-uz/strings.xml index 3089b7091eea..7f0b00760d43 100644 --- a/packages/SettingsLib/res/values-uz/strings.xml +++ b/packages/SettingsLib/res/values-uz/strings.xml @@ -284,7 +284,8 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Simsiz monitorlarni sertifikatlash parametrini ko‘rsatish"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Wi-Fi ulanishini tanlashda har bir SSID uchun jurnalda ko‘rsatilsin"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"Batareya sarfini tejaydi va tarmoq samaradorligini oshiradi"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"Bu sozlama faqat mijoz rejimida tasodifiy MAC manzillardan foydalanishga taʼsir qiladi.\nHar qanday tarmoqqa ulanishda mijoz oxirgi marta tarmoqdan qachon uzilganiga qarab tasodifiy MAC manzili qayta yaratiladi. Agar ulanish 4 soat yoki kamroq davom etsa, tasodifiy MAC manzili qayta yaratilmaydi."</string> + <!-- no translation found for wifi_enhanced_mac_randomization_summary (1210663439867489931) --> + <skip /> <string name="wifi_metered_label" msgid="8737187690304098638">"Trafik hisoblanadigan tarmoq"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"Trafik hisobi yuritilmaydigan tarmoq"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"Jurnal buferi hajmi"</string> @@ -373,8 +374,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"Ilova javob bermayotgani haqida xabar qilish"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"Xabarlar kanali ogohlantirishlarini ko‘rsatish"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"Yaroqli kanalsiz yuborilgan yangi ilova xabarnomalari haqida ogohlantirishlarni ko‘rsatish"</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"Suhbat bildirishnomalari uchun yorliqlardan majburiy foydalanish"</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"Bildirishnoma suhbat qismida chiqishi uchun uzoq koʻrinadigan belgilar yordamida ularni nusxalash kerak"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"Tashqi xotira qurilmasidagi ilova dasturlariga majburiy ruxsat berish"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"Manifest qiymatidan qat’i nazar istalgan ilovani tashqi xotiraga saqlash imkonini beradi"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"Harakatlarni moslashuvchan o‘lchamga keltirish"</string> diff --git a/packages/SettingsLib/res/values-vi/strings.xml b/packages/SettingsLib/res/values-vi/strings.xml index 32fbcc90963f..fcfbb02b299c 100644 --- a/packages/SettingsLib/res/values-vi/strings.xml +++ b/packages/SettingsLib/res/values-vi/strings.xml @@ -284,7 +284,8 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Hiển thị tùy chọn chứng nhận hiển thị không dây"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Tăng mức ghi nhật ký Wi‑Fi, hiển thị mỗi SSID RSSI trong bộ chọn Wi‑Fi"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"Giảm hao pin và cải thiện hiệu suất mạng"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"Thao tác bật/tắt này chỉ ảnh hưởng đến hành vi tạo địa chỉ MAC ngẫu nhiên ở chế độ máy khách.\nKhi bạn kích hoạt chế độ này, tất cả các mạng đã bật tính năng tạo địa chỉ MAC ngẫu nhiên có thể tạo lại địa chỉ MAC ngẫu nhiên của chúng trong quá trình liên kết, tùy thuộc vào lần gần đây nhất máy khách ngắt kết nối với mạng. Các mạng này sẽ không thể tạo ngẫu nhiên lại nếu thiết bị kết nối lại trong vòng 4 giờ."</string> + <!-- no translation found for wifi_enhanced_mac_randomization_summary (1210663439867489931) --> + <skip /> <string name="wifi_metered_label" msgid="8737187690304098638">"Đo lượng dữ liệu"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"Không đo lượng dữ liệu"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"Kích thước bộ đệm của trình ghi nhật ký"</string> @@ -373,8 +374,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"Hiện hộp thoại Ứng dụng không phản hồi cho các ứng dụng nền"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"Hiện cảnh báo kênh thông báo"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"Hiện cảnh báo trên màn hình khi ứng dụng đăng thông báo mà không có kênh hợp lệ"</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"Áp dụng lối tắt cho thông báo của cuộc trò chuyện"</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"Để xuất hiện trong phần cuộc trò chuyện, thông báo phải có sự hỗ trợ của lối tắt chia sẻ lâu dài"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"Buộc cho phép các ứng dụng trên bộ nhớ ngoài"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"Cho phép ghi mọi ứng dụng đủ điều kiện vào bộ nhớ ngoài, bất kể giá trị tệp kê khai là gì"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"Buộc các hoạt động có thể thay đổi kích thước"</string> diff --git a/packages/SettingsLib/res/values-zh-rCN/strings.xml b/packages/SettingsLib/res/values-zh-rCN/strings.xml index 7270c2e2971d..58d12afc34f6 100644 --- a/packages/SettingsLib/res/values-zh-rCN/strings.xml +++ b/packages/SettingsLib/res/values-zh-rCN/strings.xml @@ -284,7 +284,8 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"显示无线显示认证选项"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"提升 WLAN 日志记录级别(在 WLAN 选择器中显示每个 SSID 的 RSSI)"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"降低耗电量以及改善网络性能"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"此切换开关仅会影响客户端模式的 MAC 地址随机分配行为。\n此模式开启后,系统可能会为已启用随机分配 MAC 地址功能的所有网络在关联期间重新随机分配 MAC 地址,具体取决于客户端上次断开网络连接的时间。如果设备在 4 小时或更短时间内重新连接到网络,系统便不会执行重新随机分配操作。"</string> + <!-- no translation found for wifi_enhanced_mac_randomization_summary (1210663439867489931) --> + <skip /> <string name="wifi_metered_label" msgid="8737187690304098638">"按流量计费"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"不按流量计费"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"日志记录器缓冲区大小"</string> @@ -373,8 +374,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"为后台应用显示“应用无响应”对话框"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"显示通知渠道警告"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"当应用未经有效渠道发布通知时,在屏幕上显示警告"</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"强制执行会话通知快捷方式"</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"要求通知必须有长期共享快捷方式支持,才能显示在会话部分中"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"强制允许将应用写入外部存储设备"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"允许将任何应用写入外部存储设备(无论清单值是什么)"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"强制将活动设为可调整大小"</string> diff --git a/packages/SettingsLib/res/values-zh-rHK/strings.xml b/packages/SettingsLib/res/values-zh-rHK/strings.xml index 5d73f3e5ee13..dfd83b145c5e 100644 --- a/packages/SettingsLib/res/values-zh-rHK/strings.xml +++ b/packages/SettingsLib/res/values-zh-rHK/strings.xml @@ -284,7 +284,8 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"顯示無線螢幕分享認證的選項"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"讓 Wi‑Fi 記錄功能升級,在 Wi‑Fi 選擇器中依每個 SSID RSSI 顯示 Wi‑Fi 詳細紀錄"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"減低耗電量並改善網絡表現"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"此切換只會影響用戶端模式的 MAC 隨機處理。\n啟動此模式後,視乎用戶端上次中斷網絡連線的時間,系統可能會重新為任何已啟用 MAC 隨機處理的網絡在關聯期間隨機處理其 MAC 地址。如裝置在 4 小時或以內重新連線,系統便不會重新進行隨機處理。"</string> + <!-- no translation found for wifi_enhanced_mac_randomization_summary (1210663439867489931) --> + <skip /> <string name="wifi_metered_label" msgid="8737187690304098638">"按用量收費"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"不限數據用量收費"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"記錄器緩衝區空間"</string> @@ -373,8 +374,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"為背景應用程式顯示「應用程式無回應」對話框"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"顯示通知渠道警告"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"當應用程式未經有效渠道發佈通知時,在螢幕上顯示警告"</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"執行對話通知捷徑"</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"通知必須採用永久共用捷徑,以便在對話部分中顯示"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"強制允許應用程式寫入到外部儲存空間"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"在任何資訊清單值下,允許將所有符合資格的應用程式寫入到外部儲存完間"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"強制將活動設為可調整尺寸"</string> diff --git a/packages/SettingsLib/res/values-zh-rTW/strings.xml b/packages/SettingsLib/res/values-zh-rTW/strings.xml index 6fefa31b0fb7..61b38123d040 100644 --- a/packages/SettingsLib/res/values-zh-rTW/strings.xml +++ b/packages/SettingsLib/res/values-zh-rTW/strings.xml @@ -284,7 +284,8 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"顯示無線螢幕分享認證的選項"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"讓 Wi‑Fi 記錄功能升級,在 Wi‑Fi 選擇器中依每個 SSID RSSI 顯示 Wi‑Fi 詳細記錄"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"降低耗電量以及改善網路效能"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"這個切換鈕只會影響用戶端模式的 MAC 隨機化行為。\n這個模式開啟時,任何已啟用 MAC 隨機化的網路可能會在建立關聯時重新將 MAC 位址隨機化 (取決於用戶端上次中斷連線的時間)。如果裝置在 4 個小時內重新連線,就不會進行重新隨機化作業。"</string> + <!-- no translation found for wifi_enhanced_mac_randomization_summary (1210663439867489931) --> + <skip /> <string name="wifi_metered_label" msgid="8737187690304098638">"計量付費"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"非計量付費"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"記錄器緩衝區空間"</string> @@ -373,8 +374,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"為背景應用程式顯示「應用程式無回應」對話方塊"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"顯示通知管道警告"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"當應用程式未經有效管道發布通知時,在畫面上顯示警告"</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"強制執行對話通知捷徑"</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"要求通知必須有永久分享捷徑支援,才能顯示在對話部分中"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"強制允許將應用程式寫入外部儲存空間"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"允許將任何應用程式寫入外部儲存空間 (無論資訊清單值為何)"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"將活動強制設為可調整大小"</string> diff --git a/packages/SettingsLib/res/values-zu/strings.xml b/packages/SettingsLib/res/values-zu/strings.xml index 6cb24e6e55d2..f0fead78882d 100644 --- a/packages/SettingsLib/res/values-zu/strings.xml +++ b/packages/SettingsLib/res/values-zu/strings.xml @@ -284,7 +284,8 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Bonisa izinketho zokunikeza isitifiketi ukubukeka okungenantambo"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"khuphula izinga lokungena le-Wi-Fi, bonisa nge-SSID RSSI engayodwana kusikhethi se-Wi-Fi"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"Yehlisa ukuphela kwebhethri futhi ithuthukise ukusebenza kwenethiwekhi"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="7925425746373704991">"Lokhu kuguqula kuthinta ukuziphatha kokungahleliwe kwe-MAC kwemodi yeklayenti kuphela.\nLapho le modi yenziwe yasebenza, noma yimaphi amanethiwekhi anokungahleliwe kwe-MAC okunikwe amandla angase abe nekheli lawo le-MAC libe okungahleliwe kabusha phakathi nokuhlobana, kuya ngokuthi iklayenti igcine nini ukunqamula kusuka kunethiwekhi. Ukwenza kube okungahleliwe kabusha akuveli uma idivayisi ixhuma kabusha emahoreni angu-4 noma ngaphansi."</string> + <!-- no translation found for wifi_enhanced_mac_randomization_summary (1210663439867489931) --> + <skip /> <string name="wifi_metered_label" msgid="8737187690304098638">"Kulinganisiwe"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"Akulinganiselwa"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"Amasayizi weloga ngebhafa"</string> @@ -373,8 +374,6 @@ <string name="show_all_anrs_summary" msgid="8562788834431971392">"Uhlelo lokusebenza lwesibonisi aluphenduli kungxoxo yezinhlelo zokusebenza zangemuva"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"Bonisa izexwayiso zesiteshi sesaziso"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"Ibonisa isexwayiso esikusikrini uma uhlelo lokusebenza luthumela isaziso ngaphandle kwesiteshi esivumelekile"</string> - <string name="enforce_shortcuts_for_conversations" msgid="7040735163945040763">"Phoqelela izinqamuleli zezaziso zengxoxo"</string> - <string name="enforce_shortcuts_for_conversations_summary" msgid="1860168037282467862">"Kudinga ukuba izaziso zisekelwe yisinqamuleli sokwabelana sesikhathi eside ukuze zivele esigabeni sengxoxo"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"Phoqelela ukuvumela izinhlelo zokusebenza ngaphandle"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"Yenza noma uluphi uhlelo lokusebenza lifaneleke ukuthi libhalwe kusitoreji sangaphandle, ngaphandle kwamavelu we-manifest"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"Imisebenzi yamandla izonikezwa usayizi omusha"</string> diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/EdgeBackGestureHandler.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/EdgeBackGestureHandler.java index 6748e3f76771..0e8c1b78ae6a 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/EdgeBackGestureHandler.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/EdgeBackGestureHandler.java @@ -36,6 +36,7 @@ import android.os.SystemProperties; import android.os.UserHandle; import android.provider.DeviceConfig; import android.provider.Settings; +import android.util.DisplayMetrics; import android.util.Log; import android.util.TypedValue; import android.view.ISystemGestureExclusionListener; @@ -232,13 +233,14 @@ public class EdgeBackGestureHandler extends CurrentUserTracker implements Displa mIsBackGestureAllowed = !mGestureNavigationSettingsObserver.areNavigationButtonForcedVisible(); + final DisplayMetrics dm = res.getDisplayMetrics(); final float defaultGestureHeight = res.getDimension( - com.android.internal.R.dimen.navigation_bar_gesture_height); + com.android.internal.R.dimen.navigation_bar_gesture_height) / dm.density; final float gestureHeight = DeviceConfig.getFloat(DeviceConfig.NAMESPACE_SYSTEMUI, SystemUiDeviceConfigFlags.BACK_GESTURE_BOTTOM_HEIGHT, defaultGestureHeight); - mBottomGestureHeight = TypedValue.applyDimension( - TypedValue.COMPLEX_UNIT_DIP, gestureHeight, res.getDisplayMetrics()); + mBottomGestureHeight = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, gestureHeight, + dm); // Reduce the default touch slop to ensure that we can intercept the gesture // before the app starts to react to it. diff --git a/packages/Tethering/res/values-mcc310-mnc004-ne/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-ne/strings.xml index 12d6c2cfbaeb..d074f1569933 100644 --- a/packages/Tethering/res/values-mcc310-mnc004-ne/strings.xml +++ b/packages/Tethering/res/values-mcc310-mnc004-ne/strings.xml @@ -16,7 +16,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="no_upstream_notification_title" msgid="5030042590486713460">"Tethering has no internet"</string> + <string name="no_upstream_notification_title" msgid="5030042590486713460">"टेदरिङमार्फत इन्टरनेट कनेक्सन प्राप्त हुन सकेन"</string> <string name="no_upstream_notification_message" msgid="3843613362272973447">"यन्त्रहरू कनेक्ट गर्न सकिएन"</string> <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"टेदरिङ निष्क्रिय पार्नुहोस्"</string> <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"हटस्पट वा टेदरिङ सक्रिय छ"</string> diff --git a/packages/Tethering/res/values-mcc310-mnc004-zh-rTW/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-zh-rTW/strings.xml index 05b90692ea7b..528a1e52925c 100644 --- a/packages/Tethering/res/values-mcc310-mnc004-zh-rTW/strings.xml +++ b/packages/Tethering/res/values-mcc310-mnc004-zh-rTW/strings.xml @@ -16,9 +16,9 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="no_upstream_notification_title" msgid="5030042590486713460">"無法透過數據連線連上網際網路"</string> + <string name="no_upstream_notification_title" msgid="5030042590486713460">"無法透過網路共用連上網際網路"</string> <string name="no_upstream_notification_message" msgid="3843613362272973447">"裝置無法連線"</string> - <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"關閉數據連線"</string> - <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"無線基地台或數據連線已開啟"</string> + <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"關閉網路共用"</string> + <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"無線基地台或網路共用已開啟"</string> <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"使用漫遊服務可能須支付額外費用"</string> </resources> diff --git a/packages/Tethering/res/values-mcc311-mnc480-ne/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-ne/strings.xml index 0a0aa217c381..1503244f5000 100644 --- a/packages/Tethering/res/values-mcc311-mnc480-ne/strings.xml +++ b/packages/Tethering/res/values-mcc311-mnc480-ne/strings.xml @@ -16,7 +16,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="no_upstream_notification_title" msgid="611650570559011140">"Tethering has no internet"</string> + <string name="no_upstream_notification_title" msgid="611650570559011140">"टेदरिङमार्फत इन्टरनेट कनेक्सन प्राप्त हुन सकेन"</string> <string name="no_upstream_notification_message" msgid="6508394877641864863">"यन्त्रहरू कनेक्ट गर्न सकिएन"</string> <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"टेदरिङ निष्क्रिय पार्नुहोस्"</string> <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"हटस्पट वा टेदरिङ सक्रिय छ"</string> diff --git a/packages/Tethering/res/values-mcc311-mnc480-zh-rTW/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-zh-rTW/strings.xml index ea01b943fbe8..cd653df1dac6 100644 --- a/packages/Tethering/res/values-mcc311-mnc480-zh-rTW/strings.xml +++ b/packages/Tethering/res/values-mcc311-mnc480-zh-rTW/strings.xml @@ -16,9 +16,9 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="no_upstream_notification_title" msgid="611650570559011140">"無法透過數據連線連上網際網路"</string> + <string name="no_upstream_notification_title" msgid="611650570559011140">"無法透過網路共用連上網際網路"</string> <string name="no_upstream_notification_message" msgid="6508394877641864863">"裝置無法連線"</string> - <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"關閉數據連線"</string> - <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"無線基地台或數據連線已開啟"</string> + <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"關閉網路共用"</string> + <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"無線基地台或網路共用已開啟"</string> <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"使用漫遊服務可能須支付額外費用"</string> </resources> diff --git a/packages/Tethering/res/values-zh-rTW/strings.xml b/packages/Tethering/res/values-zh-rTW/strings.xml index 9d738a76eb0e..50a50bf7a996 100644 --- a/packages/Tethering/res/values-zh-rTW/strings.xml +++ b/packages/Tethering/res/values-zh-rTW/strings.xml @@ -16,11 +16,11 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="tethered_notification_title" msgid="6426563586025792944">"數據連線或無線基地台已啟用"</string> + <string name="tethered_notification_title" msgid="6426563586025792944">"網路共用或無線基地台已啟用"</string> <string name="tethered_notification_message" msgid="64800879503420696">"輕觸即可進行設定。"</string> - <string name="disable_tether_notification_title" msgid="3004509127903564191">"數據連線已停用"</string> + <string name="disable_tether_notification_title" msgid="3004509127903564191">"網路共用已停用"</string> <string name="disable_tether_notification_message" msgid="6717523799293901476">"詳情請洽你的管理員"</string> - <string name="notification_channel_tethering_status" msgid="2663463891530932727">"無線基地台與數據連線狀態"</string> + <string name="notification_channel_tethering_status" msgid="2663463891530932727">"無線基地台與網路共用狀態"</string> <string name="no_upstream_notification_title" msgid="1204601824631788482"></string> <string name="no_upstream_notification_message" msgid="8586582938243032621"></string> <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string> diff --git a/services/autofill/java/com/android/server/autofill/Session.java b/services/autofill/java/com/android/server/autofill/Session.java index 35089d6f5de7..20d1b98f8647 100644 --- a/services/autofill/java/com/android/server/autofill/Session.java +++ b/services/autofill/java/com/android/server/autofill/Session.java @@ -325,7 +325,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState @GuardedBy("mLock") private CountDownLatch mCountDownLatch = new CountDownLatch(0); - @Nullable Consumer<InlineSuggestionsRequest> newAutofillRequestLocked( + @Nullable Consumer<InlineSuggestionsRequest> newAutofillRequestLocked(ViewState viewState, boolean isInlineRequest) { mCountDownLatch = new CountDownLatch(isInlineRequest ? 2 : 1); mPendingFillRequest = null; @@ -338,6 +338,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState mPendingInlineSuggestionsRequest = inlineSuggestionsRequest; mCountDownLatch.countDown(); maybeRequestFillLocked(); + viewState.resetState(ViewState.STATE_PENDING_CREATE_INLINE_REQUEST); } } : null; } @@ -716,18 +717,23 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState mService.getRemoteInlineSuggestionRenderServiceLocked(); if (isInlineSuggestionsEnabledByAutofillProviderLocked() && remoteRenderService != null) { Consumer<InlineSuggestionsRequest> inlineSuggestionsRequestConsumer = - mAssistReceiver.newAutofillRequestLocked(/*isInlineRequest=*/ true); + mAssistReceiver.newAutofillRequestLocked(viewState, + /*isInlineRequest=*/ true); if (inlineSuggestionsRequestConsumer != null) { final AutofillId focusedId = mCurrentViewId; remoteRenderService.getInlineSuggestionsRendererInfo( new RemoteCallback((extras) -> { - mInlineSessionController.onCreateInlineSuggestionsRequestLocked( - focusedId, inlineSuggestionsRequestConsumer, extras); - } - )); + synchronized (mLock) { + mInlineSessionController.onCreateInlineSuggestionsRequestLocked( + focusedId, inlineSuggestionsRequestConsumer, extras); + } + }, mHandler) + ); + viewState.setState(ViewState.STATE_PENDING_CREATE_INLINE_REQUEST); } } else { - mAssistReceiver.newAutofillRequestLocked(/*isInlineRequest=*/ false); + mAssistReceiver.newAutofillRequestLocked(viewState, + /*isInlineRequest=*/ false); } // Now request the assist structure data. @@ -2368,7 +2374,9 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState */ @GuardedBy("mLock") private boolean shouldStartNewPartitionLocked(@NonNull AutofillId id) { - if (mResponses == null) { + final ViewState currentView = mViewStates.get(id); + if (mResponses == null && currentView != null + && (currentView.getState() & ViewState.STATE_PENDING_CREATE_INLINE_REQUEST) == 0) { return true; } diff --git a/services/autofill/java/com/android/server/autofill/ViewState.java b/services/autofill/java/com/android/server/autofill/ViewState.java index 9114576ad3b5..adb1e3e43731 100644 --- a/services/autofill/java/com/android/server/autofill/ViewState.java +++ b/services/autofill/java/com/android/server/autofill/ViewState.java @@ -80,6 +80,8 @@ final class ViewState { public static final int STATE_CHAR_REMOVED = 0x4000; /** Showing inline suggestions is not allowed for this View. */ public static final int STATE_INLINE_DISABLED = 0x8000; + /** The View is waiting for an inline suggestions request from IME.*/ + public static final int STATE_PENDING_CREATE_INLINE_REQUEST = 0x10000; public final AutofillId id; diff --git a/services/core/java/com/android/server/am/UserSwitchingDialog.java b/services/core/java/com/android/server/am/UserSwitchingDialog.java index 3dbf2c667c2f..16d83ec729b9 100644 --- a/services/core/java/com/android/server/am/UserSwitchingDialog.java +++ b/services/core/java/com/android/server/am/UserSwitchingDialog.java @@ -116,6 +116,7 @@ class UserSwitchingDialog extends AlertDialog viewMessage = res.getString(R.string.user_switching_message, mNewUser.name); } } + view.setAccessibilityPaneTitle(viewMessage); ((TextView) view.findViewById(R.id.message)).setText(viewMessage); setView(view); } diff --git a/services/core/java/com/android/server/display/DisplayModeDirector.java b/services/core/java/com/android/server/display/DisplayModeDirector.java index 612fd39634ea..c54ebf87e558 100644 --- a/services/core/java/com/android/server/display/DisplayModeDirector.java +++ b/services/core/java/com/android/server/display/DisplayModeDirector.java @@ -152,6 +152,47 @@ public class DisplayModeDirector { return votes; } + private static final class VoteSummary { + public float minRefreshRate; + public float maxRefreshRate; + public int width; + public int height; + + VoteSummary() { + reset(); + } + + public void reset() { + minRefreshRate = 0f; + maxRefreshRate = Float.POSITIVE_INFINITY; + width = Vote.INVALID_SIZE; + height = Vote.INVALID_SIZE; + } + } + + // VoteSummary is returned as an output param to cut down a bit on the number of temporary + // objects. + private void summarizeVotes( + SparseArray<Vote> votes, int lowestConsideredPriority, /*out*/ VoteSummary summary) { + summary.reset(); + for (int priority = Vote.MAX_PRIORITY; priority >= lowestConsideredPriority; priority--) { + Vote vote = votes.get(priority); + if (vote == null) { + continue; + } + // For refresh rates, just use the tightest bounds of all the votes + summary.minRefreshRate = Math.max(summary.minRefreshRate, vote.refreshRateRange.min); + summary.maxRefreshRate = Math.min(summary.maxRefreshRate, vote.refreshRateRange.max); + // For display size, use only the first vote we come across (i.e. the highest + // priority vote that includes the width / height). + if (summary.height == Vote.INVALID_SIZE && summary.width == Vote.INVALID_SIZE + && vote.height > 0 && vote.width > 0) { + summary.width = vote.width; + summary.height = vote.height; + } + } + } + /** * Calculates the refresh rate ranges and display modes that the system is allowed to freely * switch between based on global and display-specific constraints. @@ -174,52 +215,31 @@ public class DisplayModeDirector { } int[] availableModes = new int[]{defaultMode.getModeId()}; - float minRefreshRate = 0f; - float maxRefreshRate = Float.POSITIVE_INFINITY; + VoteSummary primarySummary = new VoteSummary(); int lowestConsideredPriority = Vote.MIN_PRIORITY; while (lowestConsideredPriority <= Vote.MAX_PRIORITY) { - minRefreshRate = 0f; - maxRefreshRate = Float.POSITIVE_INFINITY; - int height = Vote.INVALID_SIZE; - int width = Vote.INVALID_SIZE; - - for (int priority = Vote.MAX_PRIORITY; - priority >= lowestConsideredPriority; priority--) { - Vote vote = votes.get(priority); - if (vote == null) { - continue; - } - // For refresh rates, just use the tightest bounds of all the votes - minRefreshRate = Math.max(minRefreshRate, vote.refreshRateRange.min); - maxRefreshRate = Math.min(maxRefreshRate, vote.refreshRateRange.max); - // For display size, use only the first vote we come across (i.e. the highest - // priority vote that includes the width / height). - if (height == Vote.INVALID_SIZE && width == Vote.INVALID_SIZE - && vote.height > 0 && vote.width > 0) { - width = vote.width; - height = vote.height; - } - } + summarizeVotes(votes, lowestConsideredPriority, primarySummary); // If we don't have anything specifying the width / height of the display, just use // the default width and height. We don't want these switching out from underneath // us since it's a pretty disruptive behavior. - if (height == Vote.INVALID_SIZE || width == Vote.INVALID_SIZE) { - width = defaultMode.getPhysicalWidth(); - height = defaultMode.getPhysicalHeight(); + if (primarySummary.height == Vote.INVALID_SIZE + || primarySummary.width == Vote.INVALID_SIZE) { + primarySummary.width = defaultMode.getPhysicalWidth(); + primarySummary.height = defaultMode.getPhysicalHeight(); } - availableModes = filterModes(modes, width, height, minRefreshRate, maxRefreshRate); + availableModes = filterModes(modes, primarySummary); if (availableModes.length > 0) { if (DEBUG) { Slog.w(TAG, "Found available modes=" + Arrays.toString(availableModes) + " with lowest priority considered " + Vote.priorityToString(lowestConsideredPriority) + " and constraints: " - + "width=" + width - + ", height=" + height - + ", minRefreshRate=" + minRefreshRate - + ", maxRefreshRate=" + maxRefreshRate); + + "width=" + primarySummary.width + + ", height=" + primarySummary.height + + ", minRefreshRate=" + primarySummary.minRefreshRate + + ", maxRefreshRate=" + primarySummary.maxRefreshRate); } break; } @@ -228,10 +248,10 @@ public class DisplayModeDirector { Slog.w(TAG, "Couldn't find available modes with lowest priority set to " + Vote.priorityToString(lowestConsideredPriority) + " and with the following constraints: " - + "width=" + width - + ", height=" + height - + ", minRefreshRate=" + minRefreshRate - + ", maxRefreshRate=" + maxRefreshRate); + + "width=" + primarySummary.width + + ", height=" + primarySummary.height + + ", minRefreshRate=" + primarySummary.minRefreshRate + + ", maxRefreshRate=" + primarySummary.maxRefreshRate); } // If we haven't found anything with the current set of votes, drop the @@ -239,6 +259,20 @@ public class DisplayModeDirector { lowestConsideredPriority++; } + VoteSummary appRequestSummary = new VoteSummary(); + summarizeVotes( + votes, Vote.APP_REQUEST_REFRESH_RATE_RANGE_PRIORITY_CUTOFF, appRequestSummary); + appRequestSummary.minRefreshRate = + Math.min(appRequestSummary.minRefreshRate, primarySummary.minRefreshRate); + appRequestSummary.maxRefreshRate = + Math.max(appRequestSummary.maxRefreshRate, primarySummary.maxRefreshRate); + if (DEBUG) { + Slog.i(TAG, + String.format("App request range: [%.0f %.0f]", + appRequestSummary.minRefreshRate, + appRequestSummary.maxRefreshRate)); + } + int baseModeId = defaultMode.getModeId(); if (availableModes.length > 0) { baseModeId = availableModes[0]; @@ -246,20 +280,23 @@ public class DisplayModeDirector { // filterModes function is going to filter the modes based on the voting system. If // the application requests a given mode with preferredModeId function, it will be // stored as baseModeId. - return new DesiredDisplayModeSpecs( - baseModeId, new RefreshRateRange(minRefreshRate, maxRefreshRate)); + return new DesiredDisplayModeSpecs(baseModeId, + new RefreshRateRange( + primarySummary.minRefreshRate, primarySummary.maxRefreshRate), + new RefreshRateRange( + appRequestSummary.minRefreshRate, appRequestSummary.maxRefreshRate)); } } - private int[] filterModes(Display.Mode[] supportedModes, - int width, int height, float minRefreshRate, float maxRefreshRate) { + private int[] filterModes(Display.Mode[] supportedModes, VoteSummary summary) { ArrayList<Display.Mode> availableModes = new ArrayList<>(); for (Display.Mode mode : supportedModes) { - if (mode.getPhysicalWidth() != width || mode.getPhysicalHeight() != height) { + if (mode.getPhysicalWidth() != summary.width + || mode.getPhysicalHeight() != summary.height) { if (DEBUG) { Slog.w(TAG, "Discarding mode " + mode.getModeId() + ", wrong size" - + ": desiredWidth=" + width - + ": desiredHeight=" + height + + ": desiredWidth=" + summary.width + + ": desiredHeight=" + summary.height + ": actualWidth=" + mode.getPhysicalWidth() + ": actualHeight=" + mode.getPhysicalHeight()); } @@ -269,13 +306,13 @@ public class DisplayModeDirector { // Some refresh rates are calculated based on frame timings, so they aren't *exactly* // equal to expected refresh rate. Given that, we apply a bit of tolerance to this // comparison. - if (refreshRate < (minRefreshRate - FLOAT_TOLERANCE) - || refreshRate > (maxRefreshRate + FLOAT_TOLERANCE)) { + if (refreshRate < (summary.minRefreshRate - FLOAT_TOLERANCE) + || refreshRate > (summary.maxRefreshRate + FLOAT_TOLERANCE)) { if (DEBUG) { Slog.w(TAG, "Discarding mode " + mode.getModeId() + ", outside refresh rate bounds" - + ": minRefreshRate=" + minRefreshRate - + ", maxRefreshRate=" + maxRefreshRate + + ": minRefreshRate=" + summary.minRefreshRate + + ", maxRefreshRate=" + summary.maxRefreshRate + ", modeRefreshRate=" + refreshRate); } continue; @@ -535,7 +572,7 @@ public class DisplayModeDirector { /** * Information about the desired display mode to be set by the system. Includes the base - * mode ID and refresh rate range. + * mode ID and the primary and app request refresh rate ranges. * * We have this class in addition to SurfaceControl.DesiredDisplayConfigSpecs to make clear the * distinction between the config ID / physical index that @@ -548,17 +585,28 @@ public class DisplayModeDirector { */ public int baseModeId; /** - * The refresh rate range. + * The primary refresh rate range. */ - public final RefreshRateRange refreshRateRange; + public final RefreshRateRange primaryRefreshRateRange; + /** + * The app request refresh rate range. Lower priority considerations won't be included in + * this range, allowing surface flinger to consider additional refresh rates for apps that + * call setFrameRate(). This range will be greater than or equal to the primary refresh rate + * range, never smaller. + */ + public final RefreshRateRange appRequestRefreshRateRange; public DesiredDisplayModeSpecs() { - refreshRateRange = new RefreshRateRange(); + primaryRefreshRateRange = new RefreshRateRange(); + appRequestRefreshRateRange = new RefreshRateRange(); } - public DesiredDisplayModeSpecs(int baseModeId, @NonNull RefreshRateRange refreshRateRange) { + public DesiredDisplayModeSpecs(int baseModeId, + @NonNull RefreshRateRange primaryRefreshRateRange, + @NonNull RefreshRateRange appRequestRefreshRateRange) { this.baseModeId = baseModeId; - this.refreshRateRange = refreshRateRange; + this.primaryRefreshRateRange = primaryRefreshRateRange; + this.appRequestRefreshRateRange = appRequestRefreshRateRange; } /** @@ -566,8 +614,10 @@ public class DisplayModeDirector { */ @Override public String toString() { - return String.format("baseModeId=%d min=%.0f max=%.0f", baseModeId, - refreshRateRange.min, refreshRateRange.max); + return String.format("baseModeId=%d primaryRefreshRateRange=[%.0f %.0f]" + + " appRequestRefreshRateRange=[%.0f %.0f]", + baseModeId, primaryRefreshRateRange.min, primaryRefreshRateRange.max, + appRequestRefreshRateRange.min, appRequestRefreshRateRange.max); } /** * Checks whether the two objects have the same values. @@ -587,7 +637,11 @@ public class DisplayModeDirector { if (baseModeId != desiredDisplayModeSpecs.baseModeId) { return false; } - if (!refreshRateRange.equals(desiredDisplayModeSpecs.refreshRateRange)) { + if (!primaryRefreshRateRange.equals(desiredDisplayModeSpecs.primaryRefreshRateRange)) { + return false; + } + if (!appRequestRefreshRateRange.equals( + desiredDisplayModeSpecs.appRequestRefreshRateRange)) { return false; } return true; @@ -595,7 +649,7 @@ public class DisplayModeDirector { @Override public int hashCode() { - return Objects.hash(baseModeId, refreshRateRange); + return Objects.hash(baseModeId, primaryRefreshRateRange, appRequestRefreshRateRange); } /** @@ -603,8 +657,10 @@ public class DisplayModeDirector { */ public void copyFrom(DesiredDisplayModeSpecs other) { baseModeId = other.baseModeId; - refreshRateRange.min = other.refreshRateRange.min; - refreshRateRange.max = other.refreshRateRange.max; + primaryRefreshRateRange.min = other.primaryRefreshRateRange.min; + primaryRefreshRateRange.max = other.primaryRefreshRateRange.max; + appRequestRefreshRateRange.min = other.appRequestRefreshRateRange.min; + appRequestRefreshRateRange.max = other.appRequestRefreshRateRange.max; } } @@ -637,12 +693,17 @@ public class DisplayModeDirector { // LOW_POWER_MODE force display to [0, 60HZ] if Settings.Global.LOW_POWER_MODE is on. public static final int PRIORITY_LOW_POWER_MODE = 5; - // Whenever a new priority is added, remember to update MIN_PRIORITY and/or MAX_PRIORITY as - // appropriate, as well as priorityToString. + // Whenever a new priority is added, remember to update MIN_PRIORITY, MAX_PRIORITY, and + // APP_REQUEST_REFRESH_RATE_RANGE_PRIORITY_CUTOFF, as well as priorityToString. public static final int MIN_PRIORITY = PRIORITY_LOW_BRIGHTNESS; public static final int MAX_PRIORITY = PRIORITY_LOW_POWER_MODE; + // The cutoff for the app request refresh rate range. Votes with priorities lower than this + // value will not be considered when constructing the app request refresh rate range. + public static final int APP_REQUEST_REFRESH_RATE_RANGE_PRIORITY_CUTOFF = + PRIORITY_APP_REQUEST_REFRESH_RATE; + /** * A value signifying an invalid width or height in a vote. */ diff --git a/services/core/java/com/android/server/display/LocalDisplayAdapter.java b/services/core/java/com/android/server/display/LocalDisplayAdapter.java index 6132467103a9..4f5a02ad22fa 100644 --- a/services/core/java/com/android/server/display/LocalDisplayAdapter.java +++ b/services/core/java/com/android/server/display/LocalDisplayAdapter.java @@ -310,9 +310,14 @@ final class LocalDisplayAdapter extends DisplayAdapter { // list of available modes will take care of updating display config specs. if (activeBaseMode != NO_DISPLAY_MODE_ID) { if (mDisplayModeSpecs.baseModeId != activeBaseMode - || mDisplayModeSpecs.refreshRateRange.min != configSpecs.minRefreshRate - || mDisplayModeSpecs.refreshRateRange.max - != configSpecs.maxRefreshRate) { + || mDisplayModeSpecs.primaryRefreshRateRange.min + != configSpecs.primaryRefreshRateMin + || mDisplayModeSpecs.primaryRefreshRateRange.max + != configSpecs.primaryRefreshRateMax + || mDisplayModeSpecs.appRequestRefreshRateRange.min + != configSpecs.appRequestRefreshRateMin + || mDisplayModeSpecs.appRequestRefreshRateRange.max + != configSpecs.appRequestRefreshRateMax) { mDisplayModeSpecsInvalid = true; sendTraversalRequestLocked(); } @@ -799,8 +804,10 @@ final class LocalDisplayAdapter extends DisplayAdapter { LocalDisplayDevice::setDesiredDisplayModeSpecsAsync, this, getDisplayTokenLocked(), new SurfaceControl.DesiredDisplayConfigSpecs(baseConfigId, - mDisplayModeSpecs.refreshRateRange.min, - mDisplayModeSpecs.refreshRateRange.max))); + mDisplayModeSpecs.primaryRefreshRateRange.min, + mDisplayModeSpecs.primaryRefreshRateRange.max, + mDisplayModeSpecs.appRequestRefreshRateRange.min, + mDisplayModeSpecs.appRequestRefreshRateRange.max))); } } diff --git a/services/core/java/com/android/server/pm/ApexManager.java b/services/core/java/com/android/server/pm/ApexManager.java index 4872b66ff1b4..acce6992ea79 100644 --- a/services/core/java/com/android/server/pm/ApexManager.java +++ b/services/core/java/com/android/server/pm/ApexManager.java @@ -32,6 +32,7 @@ import android.content.pm.PackageInstaller; import android.content.pm.PackageManager; import android.content.pm.PackageParser.PackageParserException; import android.content.pm.parsing.PackageInfoWithoutStateUtils; +import android.content.pm.parsing.ParsingPackageUtils; import android.os.Binder; import android.os.Environment; import android.os.RemoteException; @@ -49,6 +50,7 @@ import com.android.internal.util.IndentingPrintWriter; import com.android.internal.util.Preconditions; import com.android.server.pm.parsing.PackageParser2; import com.android.server.pm.parsing.pkg.AndroidPackage; +import com.android.server.pm.parsing.pkg.ParsedPackage; import com.android.server.utils.TimingsTraceAndSlog; import com.google.android.collect.Lists; @@ -480,7 +482,7 @@ public abstract class ApexManager { if (allPkgs.length == 0) { return; } - int flags = PackageManager.GET_META_DATA + final int flags = PackageManager.GET_META_DATA | PackageManager.GET_SIGNING_CERTIFICATES | PackageManager.GET_SIGNATURES; ArrayMap<File, ApexInfo> parsingApexInfo = new ArrayMap<>(); @@ -489,7 +491,7 @@ public abstract class ApexManager { for (ApexInfo ai : allPkgs) { File apexFile = new File(ai.modulePath); - parallelPackageParser.submit(apexFile, flags); + parallelPackageParser.submit(apexFile, 0); parsingApexInfo.put(apexFile, ai); } @@ -502,8 +504,18 @@ public abstract class ApexManager { ApexInfo ai = parsingApexInfo.get(parseResult.scanFile); if (throwable == null) { + // Unfortunately, ParallelPackageParser won't collect certificates for us. We + // need to manually collect them here. + ParsedPackage pp = parseResult.parsedPackage; + try { + pp.setSigningDetails( + ParsingPackageUtils.collectCertificates(pp, false)); + } catch (PackageParserException e) { + throw new IllegalStateException( + "Unable to collect certificates for " + ai.modulePath, e); + } final PackageInfo packageInfo = PackageInfoWithoutStateUtils.generate( - parseResult.parsedPackage, ai, flags); + pp, ai, flags); if (packageInfo == null) { throw new IllegalStateException("Unable to generate package info: " + ai.modulePath); diff --git a/services/core/java/com/android/server/pm/PackageInstallerSession.java b/services/core/java/com/android/server/pm/PackageInstallerSession.java index 33a11166d832..3df044fab30d 100644 --- a/services/core/java/com/android/server/pm/PackageInstallerSession.java +++ b/services/core/java/com/android/server/pm/PackageInstallerSession.java @@ -1847,13 +1847,44 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { } } - private void logDataLoaderInstallationSession(int returnCode, String extraMessage) { + private void logDataLoaderInstallationSession(int returnCode) { + // Skip logging the side-loaded app installations, as those are private and aren't reported + // anywhere; app stores already have a record of the installation and that's why reporting + // it here is fine + final String packageNameToLog = + (params.installFlags & PackageManager.INSTALL_FROM_ADB) == 0 ? mPackageName : ""; final long currentTimestamp = System.currentTimeMillis(); FrameworkStatsLog.write(FrameworkStatsLog.PACKAGE_INSTALLER_V2_REPORTED, isIncrementalInstallation(), - mPackageName, + packageNameToLog, currentTimestamp - createdMillis, - returnCode); + returnCode, + getApksSize()); + } + + private long getApksSize() { + final PackageSetting ps = mPm.getPackageSetting(mPackageName); + if (ps == null) { + return 0; + } + final File apkDirOrPath = ps.codePath; + if (apkDirOrPath == null) { + return 0; + } + if (apkDirOrPath.isFile() && apkDirOrPath.getName().toLowerCase().endsWith(".apk")) { + return apkDirOrPath.length(); + } + if (!apkDirOrPath.isDirectory()) { + return 0; + } + final File[] files = apkDirOrPath.listFiles(); + long apksSize = 0; + for (int i = 0; i < files.length; i++) { + if (files[i].getName().toLowerCase().endsWith(".apk")) { + apksSize += files[i].length(); + } + } + return apksSize; } /** @@ -2879,7 +2910,7 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { mCallback.onSessionFinished(this, success); if (isDataLoaderInstallation()) { - logDataLoaderInstallationSession(returnCode, msg); + logDataLoaderInstallationSession(returnCode); } } diff --git a/services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.java b/services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.java index a635f982d37d..9051d85b2140 100644 --- a/services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.java +++ b/services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.java @@ -22,7 +22,6 @@ import android.Manifest; import android.annotation.NonNull; import android.annotation.Nullable; import android.app.ActivityManager; -import android.app.AppOpsManager; import android.app.DownloadManager; import android.app.SearchManager; import android.app.admin.DevicePolicyManager; @@ -60,6 +59,7 @@ import android.util.ArrayMap; import android.util.ArraySet; import android.util.Log; import android.util.Slog; +import android.util.SparseArray; import android.util.Xml; import com.android.internal.util.ArrayUtils; @@ -222,10 +222,75 @@ public final class DefaultPermissionGrantPolicy { private final Context mContext; private final Object mLock = new Object(); private final PackageManagerInternal mServiceInternal; - private final PermissionManagerService mPermissionManager; - DefaultPermissionGrantPolicy(Context context, Looper looper, - @NonNull PermissionManagerService permissionManager) { + /** Directly interact with the PackageManger */ + private final PackageManagerWrapper NO_PM_CACHE = new PackageManagerWrapper() { + @Override + public int getPermissionFlags(@NonNull String permission, @NonNull PackageInfo pkg, + @NonNull UserHandle user) { + return mContext.getPackageManager().getPermissionFlags(permission, pkg.packageName, + user); + } + + @Override + public void updatePermissionFlags(@NonNull String permission, @NonNull PackageInfo pkg, + int flagMask, int flagValues, @NonNull UserHandle user) { + mContext.getPackageManager().updatePermissionFlags(permission, pkg.packageName, + flagMask, flagValues, user); + } + + @Override + public void grantPermission(@NonNull String permission, @NonNull PackageInfo pkg, + @NonNull UserHandle user) { + mContext.getPackageManager().grantRuntimePermission(pkg.packageName, permission, + user); + } + + @Override + public void revokePermission(@NonNull String permission, @NonNull PackageInfo pkg, + @NonNull UserHandle user) { + mContext.getPackageManager().revokeRuntimePermission(pkg.packageName, permission, + user); + } + + @Override + public boolean isGranted(@NonNull String permission, @NonNull PackageInfo pkg, + @NonNull UserHandle user) { + return mContext.createContextAsUser(user, 0).getPackageManager().checkPermission( + permission, pkg.packageName) == PackageManager.PERMISSION_GRANTED; + } + + @Override + public @Nullable PermissionInfo getPermissionInfo(@NonNull String permissionName) { + if (permissionName == null) { + return null; + } + + try { + return mContext.getPackageManager().getPermissionInfo(permissionName, 0); + } catch (NameNotFoundException e) { + Slog.e(TAG, "Permission not found: " + permissionName); + return null; + } + } + + @Override + public @Nullable PackageInfo getPackageInfo(@NonNull String pkg) { + if (pkg == null) { + return null; + } + + try { + return mContext.getPackageManager().getPackageInfo(pkg, + DEFAULT_PACKAGE_INFO_QUERY_FLAGS); + } catch (NameNotFoundException e) { + Slog.e(TAG, "Package not found: " + pkg); + return null; + } + } + }; + + DefaultPermissionGrantPolicy(Context context, Looper looper) { mContext = context; mHandler = new Handler(looper) { @Override @@ -233,13 +298,12 @@ public final class DefaultPermissionGrantPolicy { if (msg.what == MSG_READ_DEFAULT_PERMISSION_EXCEPTIONS) { synchronized (mLock) { if (mGrantExceptions == null) { - mGrantExceptions = readDefaultPermissionExceptionsLocked(); + mGrantExceptions = readDefaultPermissionExceptionsLocked(NO_PM_CACHE); } } } } }; - mPermissionManager = permissionManager; mServiceInternal = LocalServices.getService(PackageManagerInternal.class); } @@ -293,24 +357,30 @@ public final class DefaultPermissionGrantPolicy { } public void grantDefaultPermissions(int userId) { - grantPermissionsToSysComponentsAndPrivApps(userId); - grantDefaultSystemHandlerPermissions(userId); - grantDefaultPermissionExceptions(userId); + DelayingPackageManagerCache pm = new DelayingPackageManagerCache(); + + grantPermissionsToSysComponentsAndPrivApps(pm, userId); + grantDefaultSystemHandlerPermissions(pm, userId); + grantDefaultPermissionExceptions(pm, userId); + + // Apply delayed state + pm.apply(); } - private void grantRuntimePermissionsForSystemPackage(int userId, PackageInfo pkg) { + private void grantRuntimePermissionsForSystemPackage(PackageManagerWrapper pm, + int userId, PackageInfo pkg) { Set<String> permissions = new ArraySet<>(); for (String permission : pkg.requestedPermissions) { - final BasePermission bp = mPermissionManager.getPermission(permission); - if (bp == null) { + final PermissionInfo perm = pm.getPermissionInfo(permission); + if (perm == null) { continue; } - if (bp.isRuntime()) { + if (perm.isRuntime()) { permissions.add(permission); } } if (!permissions.isEmpty()) { - grantRuntimePermissions(pkg, permissions, true /*systemFixed*/, userId); + grantRuntimePermissions(pm, pkg, permissions, true /*systemFixed*/, userId); } } @@ -318,7 +388,8 @@ public final class DefaultPermissionGrantPolicy { mHandler.sendEmptyMessage(MSG_READ_DEFAULT_PERMISSION_EXCEPTIONS); } - private void grantPermissionsToSysComponentsAndPrivApps(int userId) { + private void grantPermissionsToSysComponentsAndPrivApps(DelayingPackageManagerCache pm, + int userId) { Log.i(TAG, "Granting permissions to platform components for user " + userId); List<PackageInfo> packages = mContext.getPackageManager().getInstalledPackagesAsUser( DEFAULT_PACKAGE_INFO_QUERY_FLAGS, UserHandle.USER_SYSTEM); @@ -326,72 +397,76 @@ public final class DefaultPermissionGrantPolicy { if (pkg == null) { continue; } - if (!isSysComponentOrPersistentPlatformSignedPrivApp(pkg) + + // Package info is already loaded, cache it + pm.addPackageInfo(pkg.packageName, pkg); + + if (!pm.isSysComponentOrPersistentPlatformSignedPrivApp(pkg) || !doesPackageSupportRuntimePermissions(pkg) || ArrayUtils.isEmpty(pkg.requestedPermissions)) { continue; } - grantRuntimePermissionsForSystemPackage(userId, pkg); + grantRuntimePermissionsForSystemPackage(pm, userId, pkg); } } @SafeVarargs - private final void grantIgnoringSystemPackage(String packageName, int userId, - Set<String>... permissionGroups) { - grantPermissionsToPackage(packageName, userId, true /* ignoreSystemPackage */, + private final void grantIgnoringSystemPackage(PackageManagerWrapper pm, String packageName, + int userId, Set<String>... permissionGroups) { + grantPermissionsToPackage(pm, packageName, userId, true /* ignoreSystemPackage */, true /*whitelistRestrictedPermissions*/, permissionGroups); } @SafeVarargs - private final void grantSystemFixedPermissionsToSystemPackage(String packageName, int userId, - Set<String>... permissionGroups) { - grantPermissionsToSystemPackage( - packageName, userId, true /* systemFixed */, permissionGroups); + private final void grantSystemFixedPermissionsToSystemPackage(PackageManagerWrapper pm, + String packageName, int userId, Set<String>... permissionGroups) { + grantPermissionsToSystemPackage(pm, packageName, userId, true /* systemFixed */, + permissionGroups); } @SafeVarargs - private final void grantPermissionsToSystemPackage( + private final void grantPermissionsToSystemPackage(PackageManagerWrapper pm, String packageName, int userId, Set<String>... permissionGroups) { - grantPermissionsToSystemPackage( - packageName, userId, false /* systemFixed */, permissionGroups); + grantPermissionsToSystemPackage(pm, packageName, userId, false /* systemFixed */, + permissionGroups); } @SafeVarargs - private final void grantPermissionsToSystemPackage(String packageName, int userId, - boolean systemFixed, Set<String>... permissionGroups) { - if (!isSystemPackage(packageName)) { + private final void grantPermissionsToSystemPackage(PackageManagerWrapper pm, String packageName, + int userId, boolean systemFixed, Set<String>... permissionGroups) { + if (!pm.isSystemPackage(packageName)) { return; } - grantPermissionsToPackage(getSystemPackageInfo(packageName), + grantPermissionsToPackage(pm, pm.getSystemPackageInfo(packageName), userId, systemFixed, false /* ignoreSystemPackage */, true /*whitelistRestrictedPermissions*/, permissionGroups); } @SafeVarargs - private final void grantPermissionsToPackage(String packageName, int userId, - boolean ignoreSystemPackage, boolean whitelistRestrictedPermissions, + private final void grantPermissionsToPackage(PackageManagerWrapper pm, String packageName, + int userId, boolean ignoreSystemPackage, boolean whitelistRestrictedPermissions, Set<String>... permissionGroups) { - grantPermissionsToPackage(getPackageInfo(packageName), + grantPermissionsToPackage(pm, pm.getPackageInfo(packageName), userId, false /* systemFixed */, ignoreSystemPackage, whitelistRestrictedPermissions, permissionGroups); } @SafeVarargs - private final void grantPermissionsToPackage(PackageInfo packageInfo, int userId, - boolean systemFixed, boolean ignoreSystemPackage, + private final void grantPermissionsToPackage(PackageManagerWrapper pm, PackageInfo packageInfo, + int userId, boolean systemFixed, boolean ignoreSystemPackage, boolean whitelistRestrictedPermissions, Set<String>... permissionGroups) { if (packageInfo == null) { return; } if (doesPackageSupportRuntimePermissions(packageInfo)) { for (Set<String> permissionGroup : permissionGroups) { - grantRuntimePermissions(packageInfo, permissionGroup, systemFixed, + grantRuntimePermissions(pm, packageInfo, permissionGroup, systemFixed, ignoreSystemPackage, whitelistRestrictedPermissions, userId); } } } - private void grantDefaultSystemHandlerPermissions(int userId) { + private void grantDefaultSystemHandlerPermissions(PackageManagerWrapper pm, int userId) { Log.i(TAG, "Granting permissions to default platform handlers for user " + userId); final PackagesProvider locationPackagesProvider; @@ -434,7 +509,7 @@ public final class DefaultPermissionGrantPolicy { syncAdapterPackagesProvider.getPackages(CalendarContract.AUTHORITY, userId) : null; // Installer - grantSystemFixedPermissionsToSystemPackage( + grantSystemFixedPermissionsToSystemPackage(pm, ArrayUtils.firstOrNull(getKnownPackages( PackageManagerInternal.PACKAGE_INSTALLER, userId)), userId, STORAGE_PERMISSIONS); @@ -442,68 +517,68 @@ public final class DefaultPermissionGrantPolicy { // Verifier final String verifier = ArrayUtils.firstOrNull(getKnownPackages( PackageManagerInternal.PACKAGE_VERIFIER, userId)); - grantSystemFixedPermissionsToSystemPackage(verifier, userId, STORAGE_PERMISSIONS); - grantPermissionsToSystemPackage(verifier, userId, PHONE_PERMISSIONS, SMS_PERMISSIONS); + grantSystemFixedPermissionsToSystemPackage(pm, verifier, userId, STORAGE_PERMISSIONS); + grantPermissionsToSystemPackage(pm, verifier, userId, PHONE_PERMISSIONS, SMS_PERMISSIONS); // SetupWizard - grantPermissionsToSystemPackage( + grantPermissionsToSystemPackage(pm, ArrayUtils.firstOrNull(getKnownPackages( PackageManagerInternal.PACKAGE_SETUP_WIZARD, userId)), userId, PHONE_PERMISSIONS, CONTACTS_PERMISSIONS, ALWAYS_LOCATION_PERMISSIONS, CAMERA_PERMISSIONS); // Camera - grantPermissionsToSystemPackage( - getDefaultSystemHandlerActivityPackage(MediaStore.ACTION_IMAGE_CAPTURE, userId), + grantPermissionsToSystemPackage(pm, + getDefaultSystemHandlerActivityPackage(pm, MediaStore.ACTION_IMAGE_CAPTURE, userId), userId, CAMERA_PERMISSIONS, MICROPHONE_PERMISSIONS, STORAGE_PERMISSIONS); // Sound recorder - grantPermissionsToSystemPackage( - getDefaultSystemHandlerActivityPackage( + grantPermissionsToSystemPackage(pm, + getDefaultSystemHandlerActivityPackage(pm, MediaStore.Audio.Media.RECORD_SOUND_ACTION, userId), userId, MICROPHONE_PERMISSIONS); // Media provider - grantSystemFixedPermissionsToSystemPackage( + grantSystemFixedPermissionsToSystemPackage(pm, getDefaultProviderAuthorityPackage(MediaStore.AUTHORITY, userId), userId, STORAGE_PERMISSIONS); // Downloads provider - grantSystemFixedPermissionsToSystemPackage( + grantSystemFixedPermissionsToSystemPackage(pm, getDefaultProviderAuthorityPackage("downloads", userId), userId, STORAGE_PERMISSIONS); // Downloads UI - grantSystemFixedPermissionsToSystemPackage( - getDefaultSystemHandlerActivityPackage( + grantSystemFixedPermissionsToSystemPackage(pm, + getDefaultSystemHandlerActivityPackage(pm, DownloadManager.ACTION_VIEW_DOWNLOADS, userId), userId, STORAGE_PERMISSIONS); // Storage provider - grantSystemFixedPermissionsToSystemPackage( + grantSystemFixedPermissionsToSystemPackage(pm, getDefaultProviderAuthorityPackage("com.android.externalstorage.documents", userId), userId, STORAGE_PERMISSIONS); // CertInstaller - grantSystemFixedPermissionsToSystemPackage( - getDefaultSystemHandlerActivityPackage(Credentials.INSTALL_ACTION, userId), userId, - STORAGE_PERMISSIONS); + grantSystemFixedPermissionsToSystemPackage(pm, + getDefaultSystemHandlerActivityPackage(pm, Credentials.INSTALL_ACTION, userId), + userId, STORAGE_PERMISSIONS); // Dialer if (dialerAppPackageNames == null) { String dialerPackage = - getDefaultSystemHandlerActivityPackage(Intent.ACTION_DIAL, userId); - grantDefaultPermissionsToDefaultSystemDialerApp(dialerPackage, userId); + getDefaultSystemHandlerActivityPackage(pm, Intent.ACTION_DIAL, userId); + grantDefaultPermissionsToDefaultSystemDialerApp(pm, dialerPackage, userId); } else { for (String dialerAppPackageName : dialerAppPackageNames) { - grantDefaultPermissionsToDefaultSystemDialerApp(dialerAppPackageName, userId); + grantDefaultPermissionsToDefaultSystemDialerApp(pm, dialerAppPackageName, userId); } } // Sim call manager if (simCallManagerPackageNames != null) { for (String simCallManagerPackageName : simCallManagerPackageNames) { - grantDefaultPermissionsToDefaultSystemSimCallManager( + grantDefaultPermissionsToDefaultSystemSimCallManager(pm, simCallManagerPackageName, userId); } } @@ -511,77 +586,79 @@ public final class DefaultPermissionGrantPolicy { // Use Open Wifi if (useOpenWifiAppPackageNames != null) { for (String useOpenWifiPackageName : useOpenWifiAppPackageNames) { - grantDefaultPermissionsToDefaultSystemUseOpenWifiApp( + grantDefaultPermissionsToDefaultSystemUseOpenWifiApp(pm, useOpenWifiPackageName, userId); } } // SMS if (smsAppPackageNames == null) { - String smsPackage = getDefaultSystemHandlerActivityPackageForCategory( + String smsPackage = getDefaultSystemHandlerActivityPackageForCategory(pm, Intent.CATEGORY_APP_MESSAGING, userId); - grantDefaultPermissionsToDefaultSystemSmsApp(smsPackage, userId); + grantDefaultPermissionsToDefaultSystemSmsApp(pm, smsPackage, userId); } else { for (String smsPackage : smsAppPackageNames) { - grantDefaultPermissionsToDefaultSystemSmsApp(smsPackage, userId); + grantDefaultPermissionsToDefaultSystemSmsApp(pm, smsPackage, userId); } } // Cell Broadcast Receiver - grantSystemFixedPermissionsToSystemPackage( - getDefaultSystemHandlerActivityPackage(Intents.SMS_CB_RECEIVED_ACTION, userId), + grantSystemFixedPermissionsToSystemPackage(pm, + getDefaultSystemHandlerActivityPackage(pm, Intents.SMS_CB_RECEIVED_ACTION, userId), userId, SMS_PERMISSIONS); // Carrier Provisioning Service - grantPermissionsToSystemPackage( - getDefaultSystemHandlerServicePackage(Intents.SMS_CARRIER_PROVISION_ACTION, userId), + grantPermissionsToSystemPackage(pm, + getDefaultSystemHandlerServicePackage(pm, Intents.SMS_CARRIER_PROVISION_ACTION, + userId), userId, SMS_PERMISSIONS); // Calendar - grantPermissionsToSystemPackage( - getDefaultSystemHandlerActivityPackageForCategory( + grantPermissionsToSystemPackage(pm, + getDefaultSystemHandlerActivityPackageForCategory(pm, Intent.CATEGORY_APP_CALENDAR, userId), userId, CALENDAR_PERMISSIONS, CONTACTS_PERMISSIONS); // Calendar provider String calendarProvider = getDefaultProviderAuthorityPackage(CalendarContract.AUTHORITY, userId); - grantPermissionsToSystemPackage(calendarProvider, userId, + grantPermissionsToSystemPackage(pm, calendarProvider, userId, CONTACTS_PERMISSIONS, STORAGE_PERMISSIONS); - grantSystemFixedPermissionsToSystemPackage(calendarProvider, userId, CALENDAR_PERMISSIONS); + grantSystemFixedPermissionsToSystemPackage(pm, calendarProvider, userId, + CALENDAR_PERMISSIONS); // Calendar provider sync adapters - grantPermissionToEachSystemPackage( - getHeadlessSyncAdapterPackages(calendarSyncAdapterPackages, userId), + grantPermissionToEachSystemPackage(pm, + getHeadlessSyncAdapterPackages(pm, calendarSyncAdapterPackages, userId), userId, CALENDAR_PERMISSIONS); // Contacts - grantPermissionsToSystemPackage( - getDefaultSystemHandlerActivityPackageForCategory( + grantPermissionsToSystemPackage(pm, + getDefaultSystemHandlerActivityPackageForCategory(pm, Intent.CATEGORY_APP_CONTACTS, userId), userId, CONTACTS_PERMISSIONS, PHONE_PERMISSIONS); // Contacts provider sync adapters - grantPermissionToEachSystemPackage( - getHeadlessSyncAdapterPackages(contactsSyncAdapterPackages, userId), + grantPermissionToEachSystemPackage(pm, + getHeadlessSyncAdapterPackages(pm, contactsSyncAdapterPackages, userId), userId, CONTACTS_PERMISSIONS); // Contacts provider String contactsProviderPackage = getDefaultProviderAuthorityPackage(ContactsContract.AUTHORITY, userId); - grantSystemFixedPermissionsToSystemPackage(contactsProviderPackage, userId, + grantSystemFixedPermissionsToSystemPackage(pm, contactsProviderPackage, userId, CONTACTS_PERMISSIONS, PHONE_PERMISSIONS); - grantPermissionsToSystemPackage(contactsProviderPackage, userId, STORAGE_PERMISSIONS); + grantPermissionsToSystemPackage(pm, contactsProviderPackage, userId, STORAGE_PERMISSIONS); // Device provisioning - grantPermissionsToSystemPackage( - getDefaultSystemHandlerActivityPackage( + grantPermissionsToSystemPackage(pm, + getDefaultSystemHandlerActivityPackage(pm, DevicePolicyManager.ACTION_PROVISION_MANAGED_DEVICE, userId), userId, CONTACTS_PERMISSIONS); // Email - grantPermissionsToSystemPackage( - getDefaultSystemHandlerActivityPackageForCategory( + grantPermissionsToSystemPackage(pm, + getDefaultSystemHandlerActivityPackageForCategory(pm, Intent.CATEGORY_APP_EMAIL, userId), userId, CONTACTS_PERMISSIONS, CALENDAR_PERMISSIONS); @@ -589,19 +666,19 @@ public final class DefaultPermissionGrantPolicy { String browserPackage = ArrayUtils.firstOrNull(getKnownPackages( PackageManagerInternal.PACKAGE_BROWSER, userId)); if (browserPackage == null) { - browserPackage = getDefaultSystemHandlerActivityPackageForCategory( + browserPackage = getDefaultSystemHandlerActivityPackageForCategory(pm, Intent.CATEGORY_APP_BROWSER, userId); - if (!isSystemPackage(browserPackage)) { + if (!pm.isSystemPackage(browserPackage)) { browserPackage = null; } } - grantPermissionsToPackage(browserPackage, userId, false /* ignoreSystemPackage */, + grantPermissionsToPackage(pm, browserPackage, userId, false /* ignoreSystemPackage */, true /*whitelistRestrictedPermissions*/, FOREGROUND_LOCATION_PERMISSIONS); // Voice interaction if (voiceInteractPackageNames != null) { for (String voiceInteractPackageName : voiceInteractPackageNames) { - grantPermissionsToSystemPackage(voiceInteractPackageName, userId, + grantPermissionsToSystemPackage(pm, voiceInteractPackageName, userId, CONTACTS_PERMISSIONS, CALENDAR_PERMISSIONS, MICROPHONE_PERMISSIONS, PHONE_PERMISSIONS, SMS_PERMISSIONS, ALWAYS_LOCATION_PERMISSIONS); } @@ -609,8 +686,8 @@ public final class DefaultPermissionGrantPolicy { if (ActivityManager.isLowRamDeviceStatic()) { // Allow voice search on low-ram devices - grantPermissionsToSystemPackage( - getDefaultSystemHandlerActivityPackage( + grantPermissionsToSystemPackage(pm, + getDefaultSystemHandlerActivityPackage(pm, SearchManager.INTENT_ACTION_GLOBAL_SEARCH, userId), userId, MICROPHONE_PERMISSIONS, ALWAYS_LOCATION_PERMISSIONS); } @@ -618,25 +695,26 @@ public final class DefaultPermissionGrantPolicy { // Voice recognition Intent voiceRecoIntent = new Intent(RecognitionService.SERVICE_INTERFACE) .addCategory(Intent.CATEGORY_DEFAULT); - grantPermissionsToSystemPackage( - getDefaultSystemHandlerServicePackage(voiceRecoIntent, userId), userId, + grantPermissionsToSystemPackage(pm, + getDefaultSystemHandlerServicePackage(pm, voiceRecoIntent, userId), userId, MICROPHONE_PERMISSIONS); // Location if (locationPackageNames != null) { for (String packageName : locationPackageNames) { - grantPermissionsToSystemPackage(packageName, userId, + grantPermissionsToSystemPackage(pm, packageName, userId, CONTACTS_PERMISSIONS, CALENDAR_PERMISSIONS, MICROPHONE_PERMISSIONS, PHONE_PERMISSIONS, SMS_PERMISSIONS, CAMERA_PERMISSIONS, SENSORS_PERMISSIONS, STORAGE_PERMISSIONS); - grantSystemFixedPermissionsToSystemPackage(packageName, userId, + grantSystemFixedPermissionsToSystemPackage(pm, packageName, userId, ALWAYS_LOCATION_PERMISSIONS, ACTIVITY_RECOGNITION_PERMISSIONS); } } if (locationExtraPackageNames != null) { // Also grant location permission to location extra packages. for (String packageName : locationExtraPackageNames) { - grantPermissionsToSystemPackage(packageName, userId, ALWAYS_LOCATION_PERMISSIONS); + grantPermissionsToSystemPackage(pm, packageName, userId, + ALWAYS_LOCATION_PERMISSIONS); } } @@ -644,72 +722,72 @@ public final class DefaultPermissionGrantPolicy { Intent musicIntent = new Intent(Intent.ACTION_VIEW) .addCategory(Intent.CATEGORY_DEFAULT) .setDataAndType(Uri.fromFile(new File("foo.mp3")), AUDIO_MIME_TYPE); - grantPermissionsToSystemPackage( - getDefaultSystemHandlerActivityPackage(musicIntent, userId), userId, + grantPermissionsToSystemPackage(pm, + getDefaultSystemHandlerActivityPackage(pm, musicIntent, userId), userId, STORAGE_PERMISSIONS); // Home Intent homeIntent = new Intent(Intent.ACTION_MAIN) .addCategory(Intent.CATEGORY_HOME) .addCategory(Intent.CATEGORY_LAUNCHER_APP); - grantPermissionsToSystemPackage( - getDefaultSystemHandlerActivityPackage(homeIntent, userId), userId, + grantPermissionsToSystemPackage(pm, + getDefaultSystemHandlerActivityPackage(pm, homeIntent, userId), userId, ALWAYS_LOCATION_PERMISSIONS); // Watches if (mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_WATCH, 0)) { // Home application on watches - String wearPackage = getDefaultSystemHandlerActivityPackageForCategory( + String wearPackage = getDefaultSystemHandlerActivityPackageForCategory(pm, Intent.CATEGORY_HOME_MAIN, userId); - grantPermissionsToSystemPackage(wearPackage, userId, + grantPermissionsToSystemPackage(pm, wearPackage, userId, CONTACTS_PERMISSIONS, MICROPHONE_PERMISSIONS, ALWAYS_LOCATION_PERMISSIONS); - grantSystemFixedPermissionsToSystemPackage(wearPackage, userId, PHONE_PERMISSIONS); + grantSystemFixedPermissionsToSystemPackage(pm, wearPackage, userId, PHONE_PERMISSIONS); // Fitness tracking on watches - grantPermissionsToSystemPackage( - getDefaultSystemHandlerActivityPackage(ACTION_TRACK, userId), userId, + grantPermissionsToSystemPackage(pm, + getDefaultSystemHandlerActivityPackage(pm, ACTION_TRACK, userId), userId, SENSORS_PERMISSIONS, ALWAYS_LOCATION_PERMISSIONS); } // Print Spooler - grantSystemFixedPermissionsToSystemPackage(PrintManager.PRINT_SPOOLER_PACKAGE_NAME, userId, - ALWAYS_LOCATION_PERMISSIONS); + grantSystemFixedPermissionsToSystemPackage(pm, PrintManager.PRINT_SPOOLER_PACKAGE_NAME, + userId, ALWAYS_LOCATION_PERMISSIONS); // EmergencyInfo - grantSystemFixedPermissionsToSystemPackage( - getDefaultSystemHandlerActivityPackage( + grantSystemFixedPermissionsToSystemPackage(pm, + getDefaultSystemHandlerActivityPackage(pm, TelephonyManager.ACTION_EMERGENCY_ASSISTANCE, userId), userId, CONTACTS_PERMISSIONS, PHONE_PERMISSIONS); // NFC Tag viewer Intent nfcTagIntent = new Intent(Intent.ACTION_VIEW) .setType("vnd.android.cursor.item/ndef_msg"); - grantPermissionsToSystemPackage( - getDefaultSystemHandlerActivityPackage(nfcTagIntent, userId), userId, + grantPermissionsToSystemPackage(pm, + getDefaultSystemHandlerActivityPackage(pm, nfcTagIntent, userId), userId, CONTACTS_PERMISSIONS, PHONE_PERMISSIONS); // Storage Manager - grantSystemFixedPermissionsToSystemPackage( - getDefaultSystemHandlerActivityPackage( + grantSystemFixedPermissionsToSystemPackage(pm, + getDefaultSystemHandlerActivityPackage(pm, StorageManager.ACTION_MANAGE_STORAGE, userId), userId, STORAGE_PERMISSIONS); // Companion devices - grantSystemFixedPermissionsToSystemPackage( + grantSystemFixedPermissionsToSystemPackage(pm, CompanionDeviceManager.COMPANION_DEVICE_DISCOVERY_PACKAGE_NAME, userId, ALWAYS_LOCATION_PERMISSIONS); // Ringtone Picker - grantSystemFixedPermissionsToSystemPackage( - getDefaultSystemHandlerActivityPackage( + grantSystemFixedPermissionsToSystemPackage(pm, + getDefaultSystemHandlerActivityPackage(pm, RingtoneManager.ACTION_RINGTONE_PICKER, userId), userId, STORAGE_PERMISSIONS); // TextClassifier Service for (String textClassifierPackage : getKnownPackages(PackageManagerInternal.PACKAGE_SYSTEM_TEXT_CLASSIFIER, userId)) { - grantPermissionsToSystemPackage(textClassifierPackage, userId, + grantPermissionsToSystemPackage(pm, textClassifierPackage, userId, COARSE_BACKGROUND_LOCATION_PERMISSIONS, CONTACTS_PERMISSIONS); } @@ -717,7 +795,7 @@ public final class DefaultPermissionGrantPolicy { String contentCapturePackageName = mContext.getPackageManager().getContentCaptureServicePackageName(); if (!TextUtils.isEmpty(contentCapturePackageName)) { - grantPermissionsToSystemPackage(contentCapturePackageName, userId, + grantPermissionsToSystemPackage(pm, contentCapturePackageName, userId, PHONE_PERMISSIONS, SMS_PERMISSIONS, ALWAYS_LOCATION_PERMISSIONS, CONTACTS_PERMISSIONS, STORAGE_PERMISSIONS); } @@ -726,36 +804,37 @@ public final class DefaultPermissionGrantPolicy { String attentionServicePackageName = mContext.getPackageManager().getAttentionServicePackageName(); if (!TextUtils.isEmpty(attentionServicePackageName)) { - grantPermissionsToSystemPackage(attentionServicePackageName, userId, + grantPermissionsToSystemPackage(pm, attentionServicePackageName, userId, CAMERA_PERMISSIONS); } // There is no real "marker" interface to identify the shared storage backup, it is // hardcoded in BackupManagerService.SHARED_BACKUP_AGENT_PACKAGE. - grantSystemFixedPermissionsToSystemPackage("com.android.sharedstoragebackup", userId, + grantSystemFixedPermissionsToSystemPackage(pm, "com.android.sharedstoragebackup", userId, STORAGE_PERMISSIONS); // System Captions Service String systemCaptionsServicePackageName = mContext.getPackageManager().getSystemCaptionsServicePackageName(); if (!TextUtils.isEmpty(systemCaptionsServicePackageName)) { - grantPermissionsToSystemPackage(systemCaptionsServicePackageName, userId, + grantPermissionsToSystemPackage(pm, systemCaptionsServicePackageName, userId, MICROPHONE_PERMISSIONS); } } - private String getDefaultSystemHandlerActivityPackageForCategory(String category, int userId) { - return getDefaultSystemHandlerActivityPackage( + private String getDefaultSystemHandlerActivityPackageForCategory(PackageManagerWrapper pm, + String category, int userId) { + return getDefaultSystemHandlerActivityPackage(pm, new Intent(Intent.ACTION_MAIN).addCategory(category), userId); } @SafeVarargs - private final void grantPermissionToEachSystemPackage( + private final void grantPermissionToEachSystemPackage(PackageManagerWrapper pm, ArrayList<String> packages, int userId, Set<String>... permissions) { if (packages == null) return; final int count = packages.size(); for (int i = 0; i < count; i++) { - grantPermissionsToSystemPackage(packages.get(i), userId, permissions); + grantPermissionsToSystemPackage(pm, packages.get(i), userId, permissions); } } @@ -763,7 +842,7 @@ public final class DefaultPermissionGrantPolicy { return mServiceInternal.getKnownPackageNames(knownPkgId, userId); } - private void grantDefaultPermissionsToDefaultSystemDialerApp( + private void grantDefaultPermissionsToDefaultSystemDialerApp(PackageManagerWrapper pm, String dialerPackage, int userId) { if (dialerPackage == null) { return; @@ -771,43 +850,51 @@ public final class DefaultPermissionGrantPolicy { boolean isPhonePermFixed = mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_WATCH, 0); if (isPhonePermFixed) { - grantSystemFixedPermissionsToSystemPackage(dialerPackage, userId, PHONE_PERMISSIONS); + grantSystemFixedPermissionsToSystemPackage(pm, dialerPackage, userId, + PHONE_PERMISSIONS); } else { - grantPermissionsToSystemPackage(dialerPackage, userId, PHONE_PERMISSIONS); + grantPermissionsToSystemPackage(pm, dialerPackage, userId, PHONE_PERMISSIONS); } - grantPermissionsToSystemPackage(dialerPackage, userId, + grantPermissionsToSystemPackage(pm, dialerPackage, userId, CONTACTS_PERMISSIONS, SMS_PERMISSIONS, MICROPHONE_PERMISSIONS, CAMERA_PERMISSIONS); } - private void grantDefaultPermissionsToDefaultSystemSmsApp(String smsPackage, int userId) { - grantPermissionsToSystemPackage(smsPackage, userId, + private void grantDefaultPermissionsToDefaultSystemSmsApp(PackageManagerWrapper pm, + String smsPackage, int userId) { + grantPermissionsToSystemPackage(pm, smsPackage, userId, PHONE_PERMISSIONS, CONTACTS_PERMISSIONS, SMS_PERMISSIONS, STORAGE_PERMISSIONS, MICROPHONE_PERMISSIONS, CAMERA_PERMISSIONS); } - private void grantDefaultPermissionsToDefaultSystemUseOpenWifiApp( + private void grantDefaultPermissionsToDefaultSystemUseOpenWifiApp(PackageManagerWrapper pm, String useOpenWifiPackage, int userId) { - grantPermissionsToSystemPackage(useOpenWifiPackage, userId, ALWAYS_LOCATION_PERMISSIONS); + grantPermissionsToSystemPackage(pm, useOpenWifiPackage, userId, + ALWAYS_LOCATION_PERMISSIONS); } public void grantDefaultPermissionsToDefaultUseOpenWifiApp(String packageName, int userId) { Log.i(TAG, "Granting permissions to default Use Open WiFi app for user:" + userId); - grantIgnoringSystemPackage(packageName, userId, ALWAYS_LOCATION_PERMISSIONS); + grantIgnoringSystemPackage(NO_PM_CACHE, packageName, userId, ALWAYS_LOCATION_PERMISSIONS); } public void grantDefaultPermissionsToDefaultSimCallManager(String packageName, int userId) { + grantDefaultPermissionsToDefaultSimCallManager(NO_PM_CACHE, packageName, userId); + } + + private void grantDefaultPermissionsToDefaultSimCallManager(PackageManagerWrapper pm, + String packageName, int userId) { if (packageName == null) { return; } Log.i(TAG, "Granting permissions to sim call manager for user:" + userId); - grantPermissionsToPackage(packageName, userId, false /* ignoreSystemPackage */, + grantPermissionsToPackage(pm, packageName, userId, false /* ignoreSystemPackage */, true /*whitelistRestrictedPermissions*/, PHONE_PERMISSIONS, MICROPHONE_PERMISSIONS); } - private void grantDefaultPermissionsToDefaultSystemSimCallManager( + private void grantDefaultPermissionsToDefaultSystemSimCallManager(PackageManagerWrapper pm, String packageName, int userId) { - if (isSystemPackage(packageName)) { - grantDefaultPermissionsToDefaultSimCallManager(packageName, userId); + if (pm.isSystemPackage(packageName)) { + grantDefaultPermissionsToDefaultSimCallManager(pm, packageName, userId); } } @@ -817,7 +904,7 @@ public final class DefaultPermissionGrantPolicy { return; } for (String packageName : packageNames) { - grantPermissionsToSystemPackage(packageName, userId, + grantPermissionsToSystemPackage(NO_PM_CACHE, packageName, userId, PHONE_PERMISSIONS, ALWAYS_LOCATION_PERMISSIONS, SMS_PERMISSIONS); } } @@ -828,7 +915,7 @@ public final class DefaultPermissionGrantPolicy { return; } for (String packageName : packageNames) { - grantPermissionsToSystemPackage(packageName, userId, + grantPermissionsToSystemPackage(NO_PM_CACHE, packageName, userId, PHONE_PERMISSIONS, MICROPHONE_PERMISSIONS, ALWAYS_LOCATION_PERMISSIONS, CAMERA_PERMISSIONS, CONTACTS_PERMISSIONS); } @@ -843,7 +930,7 @@ public final class DefaultPermissionGrantPolicy { for (String packageName : packageNames) { // Grant these permissions as system-fixed, so that nobody can accidentally // break cellular data. - grantSystemFixedPermissionsToSystemPackage(packageName, userId, + grantSystemFixedPermissionsToSystemPackage(NO_PM_CACHE, packageName, userId, PHONE_PERMISSIONS, ALWAYS_LOCATION_PERMISSIONS); } } @@ -855,17 +942,20 @@ public final class DefaultPermissionGrantPolicy { return; } for (String packageName : packageNames) { - PackageInfo pkg = getSystemPackageInfo(packageName); - if (isSystemPackage(pkg) && doesPackageSupportRuntimePermissions(pkg)) { - revokeRuntimePermissions(packageName, PHONE_PERMISSIONS, true, userId); - revokeRuntimePermissions(packageName, ALWAYS_LOCATION_PERMISSIONS, true, userId); + PackageInfo pkg = NO_PM_CACHE.getSystemPackageInfo(packageName); + if (NO_PM_CACHE.isSystemPackage(pkg) && doesPackageSupportRuntimePermissions(pkg)) { + revokeRuntimePermissions(NO_PM_CACHE, packageName, PHONE_PERMISSIONS, true, + userId); + revokeRuntimePermissions(NO_PM_CACHE, packageName, ALWAYS_LOCATION_PERMISSIONS, + true, userId); } } } public void grantDefaultPermissionsToActiveLuiApp(String packageName, int userId) { Log.i(TAG, "Granting permissions to active LUI app for user:" + userId); - grantSystemFixedPermissionsToSystemPackage(packageName, userId, CAMERA_PERMISSIONS); + grantSystemFixedPermissionsToSystemPackage(NO_PM_CACHE, packageName, userId, + CAMERA_PERMISSIONS); } public void revokeDefaultPermissionsFromLuiApps(String[] packageNames, int userId) { @@ -874,23 +964,27 @@ public final class DefaultPermissionGrantPolicy { return; } for (String packageName : packageNames) { - PackageInfo pkg = getSystemPackageInfo(packageName); - if (isSystemPackage(pkg) && doesPackageSupportRuntimePermissions(pkg)) { - revokeRuntimePermissions(packageName, CAMERA_PERMISSIONS, true, userId); + PackageInfo pkg = NO_PM_CACHE.getSystemPackageInfo(packageName); + if (NO_PM_CACHE.isSystemPackage(pkg) && doesPackageSupportRuntimePermissions(pkg)) { + revokeRuntimePermissions(NO_PM_CACHE, packageName, CAMERA_PERMISSIONS, true, + userId); } } } public void grantDefaultPermissionsToDefaultBrowser(String packageName, int userId) { Log.i(TAG, "Granting permissions to default browser for user:" + userId); - grantPermissionsToSystemPackage(packageName, userId, FOREGROUND_LOCATION_PERMISSIONS); + grantPermissionsToSystemPackage(NO_PM_CACHE, packageName, userId, + FOREGROUND_LOCATION_PERMISSIONS); } - private String getDefaultSystemHandlerActivityPackage(String intentAction, int userId) { - return getDefaultSystemHandlerActivityPackage(new Intent(intentAction), userId); + private String getDefaultSystemHandlerActivityPackage(PackageManagerWrapper pm, + String intentAction, int userId) { + return getDefaultSystemHandlerActivityPackage(pm, new Intent(intentAction), userId); } - private String getDefaultSystemHandlerActivityPackage(Intent intent, int userId) { + private String getDefaultSystemHandlerActivityPackage(PackageManagerWrapper pm, Intent intent, + int userId) { ResolveInfo handler = mContext.getPackageManager().resolveActivityAsUser( intent, DEFAULT_INTENT_QUERY_FLAGS, userId); if (handler == null || handler.activityInfo == null) { @@ -900,14 +994,15 @@ public final class DefaultPermissionGrantPolicy { return null; } String packageName = handler.activityInfo.packageName; - return isSystemPackage(packageName) ? packageName : null; + return pm.isSystemPackage(packageName) ? packageName : null; } - private String getDefaultSystemHandlerServicePackage(String intentAction, int userId) { - return getDefaultSystemHandlerServicePackage(new Intent(intentAction), userId); + private String getDefaultSystemHandlerServicePackage(PackageManagerWrapper pm, + String intentAction, int userId) { + return getDefaultSystemHandlerServicePackage(pm, new Intent(intentAction), userId); } - private String getDefaultSystemHandlerServicePackage( + private String getDefaultSystemHandlerServicePackage(PackageManagerWrapper pm, Intent intent, int userId) { List<ResolveInfo> handlers = mContext.getPackageManager().queryIntentServicesAsUser( intent, DEFAULT_INTENT_QUERY_FLAGS, userId); @@ -918,14 +1013,14 @@ public final class DefaultPermissionGrantPolicy { for (int i = 0; i < handlerCount; i++) { ResolveInfo handler = handlers.get(i); String handlerPackage = handler.serviceInfo.packageName; - if (isSystemPackage(handlerPackage)) { + if (pm.isSystemPackage(handlerPackage)) { return handlerPackage; } } return null; } - private ArrayList<String> getHeadlessSyncAdapterPackages( + private ArrayList<String> getHeadlessSyncAdapterPackages(PackageManagerWrapper pm, String[] syncAdapterPackageNames, int userId) { ArrayList<String> syncAdapterPackages = new ArrayList<>(); @@ -940,7 +1035,7 @@ public final class DefaultPermissionGrantPolicy { continue; } - if (isSystemPackage(syncAdapterPackageName)) { + if (pm.isSystemPackage(syncAdapterPackageName)) { syncAdapterPackages.add(syncAdapterPackageName); } } @@ -957,27 +1052,15 @@ public final class DefaultPermissionGrantPolicy { return null; } - private boolean isSystemPackage(String packageName) { - return isSystemPackage(getPackageInfo(packageName)); - } - - private boolean isSystemPackage(PackageInfo pkg) { - if (pkg == null) { - return false; - } - return pkg.applicationInfo.isSystemApp() - && !isSysComponentOrPersistentPlatformSignedPrivApp(pkg); - } - - private void grantRuntimePermissions(PackageInfo pkg, Set<String> permissions, - boolean systemFixed, int userId) { - grantRuntimePermissions(pkg, permissions, systemFixed, false, + private void grantRuntimePermissions(PackageManagerWrapper pm, PackageInfo pkg, + Set<String> permissions, boolean systemFixed, int userId) { + grantRuntimePermissions(pm, pkg, permissions, systemFixed, false, true /*whitelistRestrictedPermissions*/, userId); } - private void revokeRuntimePermissions(String packageName, Set<String> permissions, - boolean systemFixed, int userId) { - PackageInfo pkg = getSystemPackageInfo(packageName); + private void revokeRuntimePermissions(PackageManagerWrapper pm, String packageName, + Set<String> permissions, boolean systemFixed, int userId) { + PackageInfo pkg = pm.getSystemPackageInfo(packageName); if (pkg == null || ArrayUtils.isEmpty(pkg.requestedPermissions)) { return; } @@ -990,8 +1073,8 @@ public final class DefaultPermissionGrantPolicy { } UserHandle user = UserHandle.of(userId); - final int flags = mContext.getPackageManager() - .getPermissionFlags(permission, packageName, user); + final int flags = pm.getPermissionFlags(permission, pm.getPackageInfo(packageName), + user); // We didn't get this through the default grant policy. Move along. if ((flags & PackageManager.FLAG_PERMISSION_GRANTED_BY_DEFAULT) == 0) { @@ -1007,7 +1090,7 @@ public final class DefaultPermissionGrantPolicy { if ((flags & PackageManager.FLAG_PERMISSION_SYSTEM_FIXED) != 0 && !systemFixed) { continue; } - mContext.getPackageManager().revokeRuntimePermission(packageName, permission, user); + pm.revokePermission(permission, pkg, user); if (DEBUG) { Log.i(TAG, "revoked " + (systemFixed ? "fixed " : "not fixed ") @@ -1017,7 +1100,7 @@ public final class DefaultPermissionGrantPolicy { // Remove the GRANTED_BY_DEFAULT flag without touching the others. // Note that we do not revoke FLAG_PERMISSION_SYSTEM_FIXED. That bit remains // sticky once set. - mContext.getPackageManager().updatePermissionFlags(permission, packageName, + pm.updatePermissionFlags(permission, pkg, PackageManager.FLAG_PERMISSION_GRANTED_BY_DEFAULT, 0, user); } } @@ -1040,25 +1123,8 @@ public final class DefaultPermissionGrantPolicy { | PackageManager.FLAG_PERMISSION_SYSTEM_FIXED)) != 0; } - /** - * Return the background permission for a permission. - * - * @param permission The name of the foreground permission - * - * @return The name of the background permission or {@code null} if the permission has no - * background permission - */ - private @Nullable String getBackgroundPermission(@NonNull String permission) { - try { - return mContext.getPackageManager().getPermissionInfo(permission, - 0).backgroundPermission; - } catch (NameNotFoundException e) { - return null; - } - } - - private void grantRuntimePermissions(PackageInfo pkg, Set<String> permissionsWithoutSplits, - boolean systemFixed, boolean ignoreSystemPackage, + private void grantRuntimePermissions(PackageManagerWrapper pm, PackageInfo pkg, + Set<String> permissionsWithoutSplits, boolean systemFixed, boolean ignoreSystemPackage, boolean whitelistRestrictedPermissions, int userId) { UserHandle user = UserHandle.of(userId); if (pkg == null) { @@ -1072,7 +1138,8 @@ public final class DefaultPermissionGrantPolicy { // Intersect the requestedPermissions for a factory image with that of its current update // in case the latter one removed a <uses-permission> - String[] requestedByNonSystemPackage = getPackageInfo(pkg.packageName).requestedPermissions; + String[] requestedByNonSystemPackage = pm.getPackageInfo(pkg.packageName) + .requestedPermissions; int size = requestedPermissions.length; for (int i = 0; i < size; i++) { if (!ArrayUtils.contains(requestedByNonSystemPackage, requestedPermissions[i])) { @@ -1081,14 +1148,6 @@ public final class DefaultPermissionGrantPolicy { } requestedPermissions = ArrayUtils.filterNotNull(requestedPermissions, String[]::new); - PackageManager pm; - try { - pm = mContext.createPackageContextAsUser(mContext.getPackageName(), 0, - user).getPackageManager(); - } catch (NameNotFoundException doesNotHappen) { - throw new IllegalStateException(doesNotHappen); - } - final ArraySet<String> permissions = new ArraySet<>(permissionsWithoutSplits); ApplicationInfo applicationInfo = pkg.applicationInfo; @@ -1123,7 +1182,7 @@ public final class DefaultPermissionGrantPolicy { if (!ignoreSystemPackage && applicationInfo != null && applicationInfo.isUpdatedSystemApp()) { - final PackageInfo disabledPkg = getSystemPackageInfo( + final PackageInfo disabledPkg = pm.getSystemPackageInfo( mServiceInternal.getDisabledSystemPackageName(pkg.packageName)); if (disabledPkg != null) { if (ArrayUtils.isEmpty(disabledPkg.requestedPermissions)) { @@ -1145,7 +1204,7 @@ public final class DefaultPermissionGrantPolicy { int numOther = 0; for (int i = 0; i < numRequestedPermissions; i++) { String permission = requestedPermissions[i]; - if (getBackgroundPermission(permission) != null) { + if (pm.getBackgroundPermission(permission) != null) { sortedRequestedPermissions[numForeground] = permission; numForeground++; } else { @@ -1166,8 +1225,7 @@ public final class DefaultPermissionGrantPolicy { } if (permissions.contains(permission)) { - final int flags = mContext.getPackageManager().getPermissionFlags( - permission, pkg.packageName, user); + final int flags = pm.getPermissionFlags(permission, pkg, user); // If we are trying to grant as system fixed and already system fixed // then the system can change the system fixed grant state. @@ -1194,9 +1252,8 @@ public final class DefaultPermissionGrantPolicy { newFlags |= (flags & PackageManager.FLAGS_PERMISSION_RESTRICTION_ANY_EXEMPT); // If we are whitelisting the permission, update the exempt flag before grant. - if (whitelistRestrictedPermissions && isPermissionRestricted(permission)) { - mContext.getPackageManager().updatePermissionFlags(permission, - pkg.packageName, + if (whitelistRestrictedPermissions && pm.isPermissionRestricted(permission)) { + pm.updatePermissionFlags(permission, pkg, PackageManager.FLAG_PERMISSION_RESTRICTION_SYSTEM_EXEMPT, PackageManager.FLAG_PERMISSION_RESTRICTION_SYSTEM_EXEMPT, user); } @@ -1204,82 +1261,15 @@ public final class DefaultPermissionGrantPolicy { // If the system tries to change a system fixed permission from one fixed // state to another we need to drop the fixed flag to allow the grant. if (changingGrantForSystemFixed) { - mContext.getPackageManager().updatePermissionFlags(permission, - pkg.packageName, flags, + pm.updatePermissionFlags(permission, pkg, flags, flags & ~PackageManager.FLAG_PERMISSION_SYSTEM_FIXED, user); } - if (pm.checkPermission(permission, pkg.packageName) - != PackageManager.PERMISSION_GRANTED) { - mContext.getPackageManager() - .grantRuntimePermission(pkg.packageName, permission, user); + if (!pm.isGranted(permission, pkg, user)) { + pm.grantPermission(permission, pkg, user); } - mContext.getPackageManager().updatePermissionFlags(permission, pkg.packageName, - newFlags, newFlags, user); - - int uid = UserHandle.getUid(userId, - UserHandle.getAppId(pkg.applicationInfo.uid)); - - List<String> fgPerms = mPermissionManager.getBackgroundPermissions() - .get(permission); - if (fgPerms != null) { - int numFgPerms = fgPerms.size(); - for (int fgPermNum = 0; fgPermNum < numFgPerms; fgPermNum++) { - String fgPerm = fgPerms.get(fgPermNum); - - if (pm.checkPermission(fgPerm, pkg.packageName) - == PackageManager.PERMISSION_GRANTED) { - // Upgrade the app-op state of the fg permission to allow bg access - // TODO: Dont' call app ops from package manager code. - mContext.getSystemService(AppOpsManager.class).setUidMode( - AppOpsManager.permissionToOp(fgPerm), uid, - AppOpsManager.MODE_ALLOWED); - - break; - } - } - } - - String bgPerm = getBackgroundPermission(permission); - String op = AppOpsManager.permissionToOp(permission); - if (bgPerm == null) { - if (op != null) { - // TODO: Dont' call app ops from package manager code. - mContext.getSystemService(AppOpsManager.class).setUidMode(op, uid, - AppOpsManager.MODE_ALLOWED); - } - } else { - int mode; - if (pm.checkPermission(bgPerm, pkg.packageName) - == PackageManager.PERMISSION_GRANTED) { - mode = AppOpsManager.MODE_ALLOWED; - } else { - mode = AppOpsManager.MODE_FOREGROUND; - } - - mContext.getSystemService(AppOpsManager.class).setUidMode(op, uid, mode); - } - - if (DEBUG) { - Log.i(TAG, "Granted " + (systemFixed ? "fixed " : "not fixed ") - + permission + " to default handler " + pkg); - - int appOp = AppOpsManager.permissionToOpCode(permission); - if (appOp != AppOpsManager.OP_NONE - && AppOpsManager.opToDefaultMode(appOp) - != AppOpsManager.MODE_ALLOWED) { - // Permission has a corresponding appop which is not allowed by default - // We must allow it as well, as it's usually checked alongside the - // permission - if (DEBUG) { - Log.i(TAG, "Granting OP_" + AppOpsManager.opToName(appOp) - + " to " + pkg.packageName); - } - mContext.getSystemService(AppOpsManager.class).setUidMode( - appOp, pkg.applicationInfo.uid, AppOpsManager.MODE_ALLOWED); - } - } + pm.updatePermissionFlags(permission, pkg, newFlags, newFlags, user); } // If a component gets a permission for being the default handler A @@ -1291,57 +1281,14 @@ public final class DefaultPermissionGrantPolicy { Log.i(TAG, "Granted not fixed " + permission + " to default handler " + pkg); } - mContext.getPackageManager().updatePermissionFlags(permission, pkg.packageName, + pm.updatePermissionFlags(permission, pkg, PackageManager.FLAG_PERMISSION_SYSTEM_FIXED, 0, user); } } } } - private PackageInfo getSystemPackageInfo(String pkg) { - return getPackageInfo(pkg, PackageManager.MATCH_SYSTEM_ONLY); - } - - private PackageInfo getPackageInfo(String pkg) { - return getPackageInfo(pkg, 0 /* extraFlags */); - } - - private PackageInfo getPackageInfo(String pkg, - @PackageManager.PackageInfoFlags int extraFlags) { - if (pkg == null) { - return null; - } - try { - return mContext.getPackageManager().getPackageInfo(pkg, - DEFAULT_PACKAGE_INFO_QUERY_FLAGS | extraFlags); - } catch (NameNotFoundException e) { - Slog.e(TAG, "PackageNot found: " + pkg, e); - return null; - } - } - - private boolean isSysComponentOrPersistentPlatformSignedPrivApp(PackageInfo pkg) { - if (UserHandle.getAppId(pkg.applicationInfo.uid) < FIRST_APPLICATION_UID) { - return true; - } - if (!pkg.applicationInfo.isPrivilegedApp()) { - return false; - } - final PackageInfo disabledPkg = getSystemPackageInfo( - mServiceInternal.getDisabledSystemPackageName(pkg.applicationInfo.packageName)); - if (disabledPkg != null) { - ApplicationInfo disabledPackageAppInfo = disabledPkg.applicationInfo; - if (disabledPackageAppInfo != null - && (disabledPackageAppInfo.flags & ApplicationInfo.FLAG_PERSISTENT) == 0) { - return false; - } - } else if ((pkg.applicationInfo.flags & ApplicationInfo.FLAG_PERSISTENT) == 0) { - return false; - } - return mServiceInternal.isPlatformSigned(pkg.packageName); - } - - private void grantDefaultPermissionExceptions(int userId) { + private void grantDefaultPermissionExceptions(PackageManagerWrapper pm, int userId) { mHandler.removeMessages(MSG_READ_DEFAULT_PERMISSION_EXCEPTIONS); synchronized (mLock) { @@ -1350,7 +1297,7 @@ public final class DefaultPermissionGrantPolicy { // performed for every user. If there is an entry then the app // is on the system image and supports runtime permissions. if (mGrantExceptions == null) { - mGrantExceptions = readDefaultPermissionExceptionsLocked(); + mGrantExceptions = readDefaultPermissionExceptionsLocked(pm); } } @@ -1358,12 +1305,12 @@ public final class DefaultPermissionGrantPolicy { final int exceptionCount = mGrantExceptions.size(); for (int i = 0; i < exceptionCount; i++) { String packageName = mGrantExceptions.keyAt(i); - PackageInfo pkg = getSystemPackageInfo(packageName); + PackageInfo pkg = pm.getSystemPackageInfo(packageName); List<DefaultPermissionGrant> permissionGrants = mGrantExceptions.valueAt(i); final int permissionGrantCount = permissionGrants.size(); for (int j = 0; j < permissionGrantCount; j++) { DefaultPermissionGrant permissionGrant = permissionGrants.get(j); - if (!isPermissionDangerous(permissionGrant.name)) { + if (!pm.isPermissionDangerous(permissionGrant.name)) { Log.w(TAG, "Ignoring permission " + permissionGrant.name + " which isn't dangerous"); continue; @@ -1376,7 +1323,7 @@ public final class DefaultPermissionGrantPolicy { permissions.add(permissionGrant.name); - grantRuntimePermissions(pkg, permissions, permissionGrant.fixed, + grantRuntimePermissions(pm, pkg, permissions, permissionGrant.fixed, permissionGrant.whitelisted, true /*whitelistRestrictedPermissions*/, userId); } @@ -1416,7 +1363,7 @@ public final class DefaultPermissionGrantPolicy { } private @NonNull ArrayMap<String, List<DefaultPermissionGrant>> - readDefaultPermissionExceptionsLocked() { + readDefaultPermissionExceptionsLocked(PackageManagerWrapper pm) { File[] files = getDefaultPermissionFiles(); if (files == null) { return new ArrayMap<>(0); @@ -1440,7 +1387,7 @@ public final class DefaultPermissionGrantPolicy { ) { XmlPullParser parser = Xml.newPullParser(); parser.setInput(str, null); - parse(parser, grantExceptions); + parse(pm, parser, grantExceptions); } catch (XmlPullParserException | IOException e) { Slog.w(TAG, "Error reading default permissions file " + file, e); } @@ -1449,8 +1396,9 @@ public final class DefaultPermissionGrantPolicy { return grantExceptions; } - private void parse(XmlPullParser parser, Map<String, List<DefaultPermissionGrant>> - outGrantExceptions) throws IOException, XmlPullParserException { + private void parse(PackageManagerWrapper pm, XmlPullParser parser, + Map<String, List<DefaultPermissionGrant>> outGrantExceptions) + throws IOException, XmlPullParserException { final int outerDepth = parser.getDepth(); int type; while ((type = parser.next()) != XmlPullParser.END_DOCUMENT @@ -1459,15 +1407,16 @@ public final class DefaultPermissionGrantPolicy { continue; } if (TAG_EXCEPTIONS.equals(parser.getName())) { - parseExceptions(parser, outGrantExceptions); + parseExceptions(pm, parser, outGrantExceptions); } else { Log.e(TAG, "Unknown tag " + parser.getName()); } } } - private void parseExceptions(XmlPullParser parser, Map<String, List<DefaultPermissionGrant>> - outGrantExceptions) throws IOException, XmlPullParserException { + private void parseExceptions(PackageManagerWrapper pm, XmlPullParser parser, + Map<String, List<DefaultPermissionGrant>> outGrantExceptions) + throws IOException, XmlPullParserException { final int outerDepth = parser.getDepth(); int type; while ((type = parser.next()) != XmlPullParser.END_DOCUMENT @@ -1482,7 +1431,7 @@ public final class DefaultPermissionGrantPolicy { outGrantExceptions.get(packageName); if (packageExceptions == null) { // The package must be on the system image - PackageInfo packageInfo = getSystemPackageInfo(packageName); + PackageInfo packageInfo = pm.getSystemPackageInfo(packageName); if (packageInfo == null) { Log.w(TAG, "No such package:" + packageName); @@ -1490,7 +1439,7 @@ public final class DefaultPermissionGrantPolicy { continue; } - if (!isSystemPackage(packageInfo)) { + if (!pm.isSystemPackage(packageInfo)) { Log.w(TAG, "Unknown system package:" + packageName); XmlUtils.skipCurrentTag(parser); continue; @@ -1549,21 +1498,349 @@ public final class DefaultPermissionGrantPolicy { && pkg.applicationInfo.targetSdkVersion > Build.VERSION_CODES.LOLLIPOP_MR1; } - private boolean isPermissionRestricted(String name) { - try { - return mContext.getPackageManager().getPermissionInfo(name, 0).isRestricted(); - } catch (NameNotFoundException e) { - return false; + /** + * A wrapper for package manager calls done by this class + */ + private abstract class PackageManagerWrapper { + abstract int getPermissionFlags(@NonNull String permission, @NonNull PackageInfo pkg, + @NonNull UserHandle user); + + abstract void updatePermissionFlags(@NonNull String permission, @NonNull PackageInfo pkg, + int flagMask, int flagValues, @NonNull UserHandle user); + + abstract void grantPermission(@NonNull String permission, @NonNull PackageInfo pkg, + @NonNull UserHandle user); + + abstract void revokePermission(@NonNull String permission, @NonNull PackageInfo pkg, + @NonNull UserHandle user); + + abstract boolean isGranted(@NonNull String permission, @NonNull PackageInfo pkg, + @NonNull UserHandle user); + + abstract @Nullable PermissionInfo getPermissionInfo(@NonNull String permissionName); + + abstract @Nullable PackageInfo getPackageInfo(@NonNull String pkg); + + @Nullable PackageInfo getSystemPackageInfo(@NonNull String pkg) { + PackageInfo pi = getPackageInfo(pkg); + if (pi == null || !pi.applicationInfo.isSystemApp()) { + return null; + } + return pi; + } + + boolean isPermissionRestricted(@NonNull String name) { + PermissionInfo pi = getPermissionInfo(name); + if (pi == null) { + return false; + } + + return pi.isRestricted(); + } + + boolean isPermissionDangerous(@NonNull String name) { + PermissionInfo pi = getPermissionInfo(name); + if (pi == null) { + return false; + } + + return pi.getProtection() == PermissionInfo.PROTECTION_DANGEROUS; + } + + /** + * Return the background permission for a permission. + * + * @param permission The name of the foreground permission + * + * @return The name of the background permission or {@code null} if the permission has no + * background permission + */ + @Nullable String getBackgroundPermission(@NonNull String permission) { + PermissionInfo pi = getPermissionInfo(permission); + if (pi == null) { + return null; + } + + return pi.backgroundPermission; + } + + boolean isSystemPackage(@Nullable String packageName) { + return isSystemPackage(getPackageInfo(packageName)); + } + + boolean isSystemPackage(@Nullable PackageInfo pkg) { + if (pkg == null) { + return false; + } + return pkg.applicationInfo.isSystemApp() + && !isSysComponentOrPersistentPlatformSignedPrivApp(pkg); + } + + boolean isSysComponentOrPersistentPlatformSignedPrivApp(@NonNull PackageInfo pkg) { + if (UserHandle.getAppId(pkg.applicationInfo.uid) < FIRST_APPLICATION_UID) { + return true; + } + if (!pkg.applicationInfo.isPrivilegedApp()) { + return false; + } + final PackageInfo disabledPkg = getSystemPackageInfo( + mServiceInternal.getDisabledSystemPackageName(pkg.applicationInfo.packageName)); + if (disabledPkg != null) { + ApplicationInfo disabledPackageAppInfo = disabledPkg.applicationInfo; + if (disabledPackageAppInfo != null + && (disabledPackageAppInfo.flags & ApplicationInfo.FLAG_PERSISTENT) == 0) { + return false; + } + } else if ((pkg.applicationInfo.flags & ApplicationInfo.FLAG_PERSISTENT) == 0) { + return false; + } + return mServiceInternal.isPlatformSigned(pkg.packageName); } } - private boolean isPermissionDangerous(String name) { - try { - final PermissionInfo pi = mContext.getPackageManager().getPermissionInfo(name, 0); - return (pi.getProtection() == PermissionInfo.PROTECTION_DANGEROUS); - } catch (NameNotFoundException e) { - // When unknown assume it's dangerous to be on the safe side - return true; + /** + * Do package manager calls but cache state and delay any change until {@link #apply()} is + * called + */ + private class DelayingPackageManagerCache extends PackageManagerWrapper { + /** uid -> permission -> isGranted, flags */ + private SparseArray<ArrayMap<String, PermissionState>> mDelayedPermissionState = + new SparseArray<>(); + /** userId -> context */ + private SparseArray<Context> mUserContexts = new SparseArray<>(); + /** Permission name -> info */ + private ArrayMap<String, PermissionInfo> mPermissionInfos = new ArrayMap<>(); + /** Package name -> info */ + private ArrayMap<String, PackageInfo> mPackageInfos = new ArrayMap<>(); + + /** + * Apply the cached state + */ + void apply() { + PackageManager.corkPackageInfoCache(); + for (int uidIdx = 0; uidIdx < mDelayedPermissionState.size(); uidIdx++) { + for (int permIdx = 0; permIdx < mDelayedPermissionState.valueAt(uidIdx).size(); + permIdx++) { + try { + mDelayedPermissionState.valueAt(uidIdx).valueAt(permIdx).apply(); + } catch (IllegalArgumentException e) { + Slog.w(TAG, "Cannot set permission " + mDelayedPermissionState.valueAt( + uidIdx).keyAt(permIdx) + " of uid " + mDelayedPermissionState.keyAt( + uidIdx), e); + } + } + } + PackageManager.uncorkPackageInfoCache(); + } + + void addPackageInfo(@NonNull String packageName, @NonNull PackageInfo pkg) { + mPackageInfos.put(packageName, pkg); + } + + private @NonNull Context createContextAsUser(@NonNull UserHandle user) { + int index = mUserContexts.indexOfKey(user.getIdentifier()); + if (index >= 0) { + return mUserContexts.valueAt(index); + } + + Context uc = mContext.createContextAsUser(user, 0); + + mUserContexts.put(user.getIdentifier(), uc); + + return uc; + } + + private @NonNull PermissionState getPermissionState(@NonNull String permission, + @NonNull PackageInfo pkg, @NonNull UserHandle user) { + int uid = UserHandle.getUid(user.getIdentifier(), + UserHandle.getAppId(pkg.applicationInfo.uid)); + int uidIdx = mDelayedPermissionState.indexOfKey(uid); + + ArrayMap<String, PermissionState> uidState; + if (uidIdx >= 0) { + uidState = mDelayedPermissionState.valueAt(uidIdx); + } else { + uidState = new ArrayMap<>(); + mDelayedPermissionState.put(uid, uidState); + } + + int permIdx = uidState.indexOfKey(permission); + + PermissionState permState; + if (permIdx >= 0) { + permState = uidState.valueAt(permIdx); + } else { + permState = new PermissionState(permission, pkg, user); + uidState.put(permission, permState); + } + + return permState; + } + + @Override + public int getPermissionFlags(@NonNull String permission, @NonNull PackageInfo pkg, + @NonNull UserHandle user) { + PermissionState state = getPermissionState(permission, pkg, user); + state.initFlags(); + return state.newFlags; + } + + @Override + public void updatePermissionFlags(@NonNull String permission, @NonNull PackageInfo pkg, + int flagMask, int flagValues, @NonNull UserHandle user) { + PermissionState state = getPermissionState(permission, pkg, user); + state.initFlags(); + state.newFlags |= flagValues & flagMask; + } + + @Override + public void grantPermission(@NonNull String permission, @NonNull PackageInfo pkg, + @NonNull UserHandle user) { + PermissionState state = getPermissionState(permission, pkg, user); + state.initGranted(); + state.newGranted = true; + } + + @Override + public void revokePermission(@NonNull String permission, @NonNull PackageInfo pkg, + @NonNull UserHandle user) { + PermissionState state = getPermissionState(permission, pkg, user); + state.initGranted(); + state.newGranted = false; + } + + @Override + public boolean isGranted(@NonNull String permission, @NonNull PackageInfo pkg, + @NonNull UserHandle user) { + PermissionState state = getPermissionState(permission, pkg, user); + state.initGranted(); + return state.newGranted; + } + + @Override + public @Nullable PermissionInfo getPermissionInfo(@NonNull String permissionName) { + int index = mPermissionInfos.indexOfKey(permissionName); + if (index >= 0) { + return mPermissionInfos.valueAt(index); + } + + PermissionInfo pi = NO_PM_CACHE.getPermissionInfo(permissionName); + mPermissionInfos.put(permissionName, pi); + + return pi; + } + + @Override + public @Nullable PackageInfo getPackageInfo(@NonNull String pkg) { + int index = mPackageInfos.indexOfKey(pkg); + if (index >= 0) { + return mPackageInfos.valueAt(index); + } + + PackageInfo pi = NO_PM_CACHE.getPackageInfo(pkg); + mPackageInfos.put(pkg, pi); + + return pi; + } + + /** + * State of a single permission belonging to a single uid + */ + private class PermissionState { + private final @NonNull String mPermission; + private final @NonNull PackageInfo mPkgRequestingPerm; + private final @NonNull UserHandle mUser; + + /** Permission flags when the state was created */ + private @Nullable Integer mOriginalFlags; + /** Altered permission flags or {@code null} if no change was requested */ + @Nullable Integer newFlags; + + /** Grant state when the state was created */ + private @Nullable Boolean mOriginalGranted; + /** Altered grant state or {@code null} if no change was requested */ + @Nullable Boolean newGranted; + + private PermissionState(@NonNull String permission, + @NonNull PackageInfo pkgRequestingPerm, @NonNull UserHandle user) { + mPermission = permission; + mPkgRequestingPerm = pkgRequestingPerm; + mUser = user; + } + + /** + * Apply the changes to the permission to the system + */ + void apply() { + if (DEBUG) { + Slog.i(TAG, "Granting " + mPermission + " to user " + mUser.getIdentifier() + + " pkg=" + mPkgRequestingPerm.packageName + " granted=" + newGranted + + " flags=" + Integer.toBinaryString(newFlags)); + } + + int flagsToAdd = 0; + int flagsToRemove = 0; + if (newFlags != null) { + flagsToAdd = newFlags & ~mOriginalFlags; + flagsToRemove = mOriginalFlags & ~newFlags; + } + + // Need to remove e.g. SYSTEM_FIXED flags first as otherwise permission cannot be + // changed + if (flagsToRemove != 0) { + NO_PM_CACHE.updatePermissionFlags(mPermission, mPkgRequestingPerm, + flagsToRemove, 0, mUser); + } + + // Need to unrestrict first as otherwise permission grants might fail + if ((flagsToAdd & PackageManager.FLAGS_PERMISSION_RESTRICTION_ANY_EXEMPT) != 0) { + int newRestrictionExcemptFlags = + flagsToAdd & PackageManager.FLAGS_PERMISSION_RESTRICTION_ANY_EXEMPT; + + NO_PM_CACHE.updatePermissionFlags(mPermission, + mPkgRequestingPerm, newRestrictionExcemptFlags, -1, mUser); + } + + if (newGranted != null && newGranted != mOriginalGranted) { + if (newGranted) { + NO_PM_CACHE.grantPermission(mPermission, mPkgRequestingPerm, mUser); + } else { + NO_PM_CACHE.revokePermission(mPermission, mPkgRequestingPerm, mUser); + } + } + + if ((flagsToAdd & ~PackageManager.FLAGS_PERMISSION_RESTRICTION_ANY_EXEMPT) != 0) { + int newFlags = + flagsToAdd & ~PackageManager.FLAGS_PERMISSION_RESTRICTION_ANY_EXEMPT; + + NO_PM_CACHE.updatePermissionFlags(mPermission, mPkgRequestingPerm, newFlags, + -1, mUser); + } + } + + /** + * Load the state of the flags before first use + */ + void initFlags() { + if (newFlags == null) { + mOriginalFlags = NO_PM_CACHE.getPermissionFlags(mPermission, mPkgRequestingPerm, + mUser); + newFlags = mOriginalFlags; + } + } + + /** + * Load the grant state before first use + */ + void initGranted() { + if (newGranted == null) { + // Don't call NO_PM_CACHE here so that contexts are reused + mOriginalGranted = createContextAsUser(mUser).getPackageManager() + .checkPermission(mPermission, mPkgRequestingPerm.packageName) + == PackageManager.PERMISSION_GRANTED; + newGranted = mOriginalGranted; + } + } } } diff --git a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java index a18f90b9913f..45ebbb6efc6d 100644 --- a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java +++ b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java @@ -388,7 +388,7 @@ public class PermissionManagerService extends IPermissionManager.Stub { Watchdog.getInstance().addThread(mHandler); mDefaultPermissionGrantPolicy = new DefaultPermissionGrantPolicy( - context, mHandlerThread.getLooper(), this); + context, mHandlerThread.getLooper()); SystemConfig systemConfig = SystemConfig.getInstance(); mSystemPermissions = systemConfig.getSystemPermissions(); mGlobalGids = systemConfig.getGlobalGids(); diff --git a/services/core/java/com/android/server/wm/ActivityStack.java b/services/core/java/com/android/server/wm/ActivityStack.java index d71381ea0d79..df1f17408ce2 100644 --- a/services/core/java/com/android/server/wm/ActivityStack.java +++ b/services/core/java/com/android/server/wm/ActivityStack.java @@ -2957,8 +2957,8 @@ class ActivityStack extends Task { final int taskId = activity != null ? mStackSupervisor.getNextTaskIdForUser(activity.mUserId) : mStackSupervisor.getNextTaskIdForUser(); - task = Task.create( - mAtmService, taskId, info, intent, voiceSession, voiceInteractor, this); + task = new ActivityStack(mAtmService, taskId, info, intent, voiceSession, + voiceInteractor, null /* taskDescription */, this); // add the task to stack first, mTaskPositioner might need the stack association addChild(task, toTop, (info.flags & FLAG_SHOW_FOR_ALL_USERS) != 0); diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java index 9868446a1d44..72e38386f1f9 100644 --- a/services/core/java/com/android/server/wm/DisplayContent.java +++ b/services/core/java/com/android/server/wm/DisplayContent.java @@ -1393,6 +1393,13 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo final WindowContainer orientationSource = getLastOrientationSource(); final ActivityRecord r = orientationSource != null ? orientationSource.asActivityRecord() : null; + if (r != null && r.getTask() != null + && orientation != r.getTask().mLastReportedRequestedOrientation) { + final Task task = r.getTask(); + task.mLastReportedRequestedOrientation = orientation; + mAtmService.getTaskChangeNotificationController() + .notifyTaskRequestedOrientationChanged(task.mTaskId, orientation); + } // Currently there is no use case from non-activity. if (r != null && handleTopActivityLaunchingInDifferentOrientation(r)) { // Display orientation should be deferred until the top fixed rotation is finished. diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java index 7d7e6aa0d0a9..8903609ddaed 100644 --- a/services/core/java/com/android/server/wm/Task.java +++ b/services/core/java/com/android/server/wm/Task.java @@ -232,11 +232,6 @@ class Task extends WindowContainer<WindowContainer> { // Do not move the stack as a part of reparenting static final int REPARENT_LEAVE_STACK_IN_PLACE = 2; - /** - * The factory used to create {@link Task}. This allows OEM subclass {@link Task}. - */ - private static TaskFactory sTaskFactory; - String affinity; // The affinity name for this task, or null; may change identity. String rootAffinity; // Initial base affinity, or null; does not change from initial root. String mWindowLayoutAffinity; // Launch param affinity of this task or null. Used when saving @@ -368,6 +363,14 @@ class Task extends WindowContainer<WindowContainer> { @Surface.Rotation private int mRotation; + /** + * Last requested orientation reported to DisplayContent. This is different from {@link + * #mOrientation} in the sense that this takes activities' requested orientation into + * account. Start with {@link ActivityInfo#SCREEN_ORIENTATION_UNSPECIFIED} so that we don't need + * to notify for activities that don't specify any orientation. + */ + int mLastReportedRequestedOrientation = ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED; + // For comparison with DisplayContent bounds. private Rect mTmpRect = new Rect(); // For handling display rotations. @@ -4061,316 +4064,239 @@ class Task extends WindowContainer<WindowContainer> { } } - @VisibleForTesting - static TaskFactory getTaskFactory() { - if (sTaskFactory == null) { - setTaskFactory(new TaskFactory()); - } - return sTaskFactory; - } - - static void setTaskFactory(TaskFactory factory) { - sTaskFactory = factory; - } - - static Task create(ActivityTaskManagerService service, int taskId, int activityType, - ActivityInfo info, Intent intent, boolean createdByOrganizer) { - return getTaskFactory().create(service, taskId, activityType, info, intent, - createdByOrganizer); - } - - static Task create(ActivityTaskManagerService service, int taskId, ActivityInfo info, - Intent intent, IVoiceInteractionSession voiceSession, - IVoiceInteractor voiceInteractor, ActivityStack stack) { - return getTaskFactory().create( - service, taskId, info, intent, voiceSession, voiceInteractor, stack); - } - static Task restoreFromXml(XmlPullParser in, ActivityStackSupervisor stackSupervisor) throws IOException, XmlPullParserException { - return getTaskFactory().restoreFromXml(in, stackSupervisor); - } - - /** - * A factory class used to create {@link Task} or its subclass if any. This can be - * specified when system boots by setting it with - * {@link #setTaskFactory(TaskFactory)}. - */ - static class TaskFactory { - Task create(ActivityTaskManagerService service, int taskId, int activityType, - ActivityInfo info, Intent intent, boolean createdByOrganizer) { - return new ActivityStack(service, taskId, activityType, info, intent, - createdByOrganizer); - } - - Task create(ActivityTaskManagerService service, int taskId, ActivityInfo info, - Intent intent, IVoiceInteractionSession voiceSession, - IVoiceInteractor voiceInteractor, ActivityStack stack) { - return new ActivityStack(service, taskId, info, intent, voiceSession, voiceInteractor, - null /*taskDescription*/, stack); - } - - /** - * Should only be used when we're restoring {@link Task} from storage. - */ - Task create(ActivityTaskManagerService service, int taskId, Intent intent, - Intent affinityIntent, String affinity, String rootAffinity, - ComponentName realActivity, ComponentName origActivity, boolean rootWasReset, - boolean autoRemoveRecents, boolean askedCompatMode, int userId, - int effectiveUid, String lastDescription, - long lastTimeMoved, boolean neverRelinquishIdentity, - TaskDescription lastTaskDescription, int taskAffiliation, int prevTaskId, - int nextTaskId, int taskAffiliationColor, int callingUid, String callingPackage, - @Nullable String callingFeatureId, int resizeMode, - boolean supportsPictureInPicture, boolean realActivitySuspended, - boolean userSetupComplete, int minWidth, int minHeight, ActivityStack stack) { - return new ActivityStack(service, taskId, intent, affinityIntent, affinity, - rootAffinity, realActivity, origActivity, rootWasReset, autoRemoveRecents, - askedCompatMode, userId, effectiveUid, lastDescription, - lastTimeMoved, neverRelinquishIdentity, lastTaskDescription, taskAffiliation, - prevTaskId, nextTaskId, taskAffiliationColor, callingUid, callingPackage, - callingFeatureId, resizeMode, supportsPictureInPicture, realActivitySuspended, - userSetupComplete, minWidth, minHeight, null /*ActivityInfo*/, - null /*_voiceSession*/, null /*_voiceInteractor*/, stack); - } - - Task restoreFromXml(XmlPullParser in, ActivityStackSupervisor stackSupervisor) - throws IOException, XmlPullParserException { - Intent intent = null; - Intent affinityIntent = null; - ArrayList<ActivityRecord> activities = new ArrayList<>(); - ComponentName realActivity = null; - boolean realActivitySuspended = false; - ComponentName origActivity = null; - String affinity = null; - String rootAffinity = null; - boolean hasRootAffinity = false; - String windowLayoutAffinity = null; - boolean rootHasReset = false; - boolean autoRemoveRecents = false; - boolean askedCompatMode = false; - int taskType = 0; - int userId = 0; - boolean userSetupComplete = true; - int effectiveUid = -1; - String lastDescription = null; - long lastTimeOnTop = 0; - boolean neverRelinquishIdentity = true; - int taskId = INVALID_TASK_ID; - final int outerDepth = in.getDepth(); - TaskDescription taskDescription = new TaskDescription(); - int taskAffiliation = INVALID_TASK_ID; - int taskAffiliationColor = 0; - int prevTaskId = INVALID_TASK_ID; - int nextTaskId = INVALID_TASK_ID; - int callingUid = -1; - String callingPackage = ""; - String callingFeatureId = null; - int resizeMode = RESIZE_MODE_FORCE_RESIZEABLE; - boolean supportsPictureInPicture = false; - Rect lastNonFullscreenBounds = null; - int minWidth = INVALID_MIN_SIZE; - int minHeight = INVALID_MIN_SIZE; - int persistTaskVersion = 0; - - for (int attrNdx = in.getAttributeCount() - 1; attrNdx >= 0; --attrNdx) { - final String attrName = in.getAttributeName(attrNdx); - final String attrValue = in.getAttributeValue(attrNdx); - if (TaskPersister.DEBUG) Slog.d(TaskPersister.TAG, "Task: attribute name=" - + attrName + " value=" + attrValue); - switch (attrName) { - case ATTR_TASKID: - if (taskId == INVALID_TASK_ID) taskId = Integer.parseInt(attrValue); - break; - case ATTR_REALACTIVITY: - realActivity = ComponentName.unflattenFromString(attrValue); - break; - case ATTR_REALACTIVITY_SUSPENDED: - realActivitySuspended = Boolean.valueOf(attrValue); - break; - case ATTR_ORIGACTIVITY: - origActivity = ComponentName.unflattenFromString(attrValue); - break; - case ATTR_AFFINITY: - affinity = attrValue; - break; - case ATTR_ROOT_AFFINITY: - rootAffinity = attrValue; - hasRootAffinity = true; - break; - case ATTR_WINDOW_LAYOUT_AFFINITY: - windowLayoutAffinity = attrValue; - break; - case ATTR_ROOTHASRESET: - rootHasReset = Boolean.parseBoolean(attrValue); - break; - case ATTR_AUTOREMOVERECENTS: - autoRemoveRecents = Boolean.parseBoolean(attrValue); - break; - case ATTR_ASKEDCOMPATMODE: - askedCompatMode = Boolean.parseBoolean(attrValue); - break; - case ATTR_USERID: - userId = Integer.parseInt(attrValue); - break; - case ATTR_USER_SETUP_COMPLETE: - userSetupComplete = Boolean.parseBoolean(attrValue); - break; - case ATTR_EFFECTIVE_UID: - effectiveUid = Integer.parseInt(attrValue); - break; - case ATTR_TASKTYPE: - taskType = Integer.parseInt(attrValue); - break; - case ATTR_LASTDESCRIPTION: - lastDescription = attrValue; - break; - case ATTR_LASTTIMEMOVED: - lastTimeOnTop = Long.parseLong(attrValue); - break; - case ATTR_NEVERRELINQUISH: - neverRelinquishIdentity = Boolean.parseBoolean(attrValue); - break; - case ATTR_TASK_AFFILIATION: - taskAffiliation = Integer.parseInt(attrValue); - break; - case ATTR_PREV_AFFILIATION: - prevTaskId = Integer.parseInt(attrValue); - break; - case ATTR_NEXT_AFFILIATION: - nextTaskId = Integer.parseInt(attrValue); - break; - case ATTR_TASK_AFFILIATION_COLOR: - taskAffiliationColor = Integer.parseInt(attrValue); - break; - case ATTR_CALLING_UID: - callingUid = Integer.parseInt(attrValue); - break; - case ATTR_CALLING_PACKAGE: - callingPackage = attrValue; - break; - case ATTR_CALLING_FEATURE_ID: - callingFeatureId = attrValue; - break; - case ATTR_RESIZE_MODE: - resizeMode = Integer.parseInt(attrValue); - break; - case ATTR_SUPPORTS_PICTURE_IN_PICTURE: - supportsPictureInPicture = Boolean.parseBoolean(attrValue); - break; - case ATTR_NON_FULLSCREEN_BOUNDS: - lastNonFullscreenBounds = Rect.unflattenFromString(attrValue); - break; - case ATTR_MIN_WIDTH: - minWidth = Integer.parseInt(attrValue); - break; - case ATTR_MIN_HEIGHT: - minHeight = Integer.parseInt(attrValue); - break; - case ATTR_PERSIST_TASK_VERSION: - persistTaskVersion = Integer.parseInt(attrValue); - break; - default: - if (!attrName.startsWith(TaskDescription.ATTR_TASKDESCRIPTION_PREFIX)) { - Slog.w(TAG, "Task: Unknown attribute=" + attrName); - } - } + Intent intent = null; + Intent affinityIntent = null; + ArrayList<ActivityRecord> activities = new ArrayList<>(); + ComponentName realActivity = null; + boolean realActivitySuspended = false; + ComponentName origActivity = null; + String affinity = null; + String rootAffinity = null; + boolean hasRootAffinity = false; + String windowLayoutAffinity = null; + boolean rootHasReset = false; + boolean autoRemoveRecents = false; + boolean askedCompatMode = false; + int taskType = 0; + int userId = 0; + boolean userSetupComplete = true; + int effectiveUid = -1; + String lastDescription = null; + long lastTimeOnTop = 0; + boolean neverRelinquishIdentity = true; + int taskId = INVALID_TASK_ID; + final int outerDepth = in.getDepth(); + TaskDescription taskDescription = new TaskDescription(); + int taskAffiliation = INVALID_TASK_ID; + int taskAffiliationColor = 0; + int prevTaskId = INVALID_TASK_ID; + int nextTaskId = INVALID_TASK_ID; + int callingUid = -1; + String callingPackage = ""; + String callingFeatureId = null; + int resizeMode = RESIZE_MODE_FORCE_RESIZEABLE; + boolean supportsPictureInPicture = false; + Rect lastNonFullscreenBounds = null; + int minWidth = INVALID_MIN_SIZE; + int minHeight = INVALID_MIN_SIZE; + int persistTaskVersion = 0; + + for (int attrNdx = in.getAttributeCount() - 1; attrNdx >= 0; --attrNdx) { + final String attrName = in.getAttributeName(attrNdx); + final String attrValue = in.getAttributeValue(attrNdx); + if (TaskPersister.DEBUG) { + Slog.d(TaskPersister.TAG, "Task: attribute name=" + attrName + " value=" + + attrValue); } - taskDescription.restoreFromXml(in); - - int event; - while (((event = in.next()) != XmlPullParser.END_DOCUMENT) - && (event != XmlPullParser.END_TAG || in.getDepth() >= outerDepth)) { - if (event == XmlPullParser.START_TAG) { - final String name = in.getName(); - if (TaskPersister.DEBUG) Slog.d(TaskPersister.TAG, - "Task: START_TAG name=" + name); - if (TAG_AFFINITYINTENT.equals(name)) { - affinityIntent = Intent.restoreFromXml(in); - } else if (TAG_INTENT.equals(name)) { - intent = Intent.restoreFromXml(in); - } else if (TAG_ACTIVITY.equals(name)) { - ActivityRecord activity = - ActivityRecord.restoreFromXml(in, stackSupervisor); - if (TaskPersister.DEBUG) Slog.d(TaskPersister.TAG, "Task: activity=" - + activity); - if (activity != null) { - activities.add(activity); - } - } else { - handleUnknownTag(name, in); + switch (attrName) { + case ATTR_TASKID: + if (taskId == INVALID_TASK_ID) taskId = Integer.parseInt(attrValue); + break; + case ATTR_REALACTIVITY: + realActivity = ComponentName.unflattenFromString(attrValue); + break; + case ATTR_REALACTIVITY_SUSPENDED: + realActivitySuspended = Boolean.valueOf(attrValue); + break; + case ATTR_ORIGACTIVITY: + origActivity = ComponentName.unflattenFromString(attrValue); + break; + case ATTR_AFFINITY: + affinity = attrValue; + break; + case ATTR_ROOT_AFFINITY: + rootAffinity = attrValue; + hasRootAffinity = true; + break; + case ATTR_WINDOW_LAYOUT_AFFINITY: + windowLayoutAffinity = attrValue; + break; + case ATTR_ROOTHASRESET: + rootHasReset = Boolean.parseBoolean(attrValue); + break; + case ATTR_AUTOREMOVERECENTS: + autoRemoveRecents = Boolean.parseBoolean(attrValue); + break; + case ATTR_ASKEDCOMPATMODE: + askedCompatMode = Boolean.parseBoolean(attrValue); + break; + case ATTR_USERID: + userId = Integer.parseInt(attrValue); + break; + case ATTR_USER_SETUP_COMPLETE: + userSetupComplete = Boolean.parseBoolean(attrValue); + break; + case ATTR_EFFECTIVE_UID: + effectiveUid = Integer.parseInt(attrValue); + break; + case ATTR_TASKTYPE: + taskType = Integer.parseInt(attrValue); + break; + case ATTR_LASTDESCRIPTION: + lastDescription = attrValue; + break; + case ATTR_LASTTIMEMOVED: + lastTimeOnTop = Long.parseLong(attrValue); + break; + case ATTR_NEVERRELINQUISH: + neverRelinquishIdentity = Boolean.parseBoolean(attrValue); + break; + case ATTR_TASK_AFFILIATION: + taskAffiliation = Integer.parseInt(attrValue); + break; + case ATTR_PREV_AFFILIATION: + prevTaskId = Integer.parseInt(attrValue); + break; + case ATTR_NEXT_AFFILIATION: + nextTaskId = Integer.parseInt(attrValue); + break; + case ATTR_TASK_AFFILIATION_COLOR: + taskAffiliationColor = Integer.parseInt(attrValue); + break; + case ATTR_CALLING_UID: + callingUid = Integer.parseInt(attrValue); + break; + case ATTR_CALLING_PACKAGE: + callingPackage = attrValue; + break; + case ATTR_CALLING_FEATURE_ID: + callingFeatureId = attrValue; + break; + case ATTR_RESIZE_MODE: + resizeMode = Integer.parseInt(attrValue); + break; + case ATTR_SUPPORTS_PICTURE_IN_PICTURE: + supportsPictureInPicture = Boolean.parseBoolean(attrValue); + break; + case ATTR_NON_FULLSCREEN_BOUNDS: + lastNonFullscreenBounds = Rect.unflattenFromString(attrValue); + break; + case ATTR_MIN_WIDTH: + minWidth = Integer.parseInt(attrValue); + break; + case ATTR_MIN_HEIGHT: + minHeight = Integer.parseInt(attrValue); + break; + case ATTR_PERSIST_TASK_VERSION: + persistTaskVersion = Integer.parseInt(attrValue); + break; + default: + if (!attrName.startsWith(TaskDescription.ATTR_TASKDESCRIPTION_PREFIX)) { + Slog.w(TAG, "Task: Unknown attribute=" + attrName); } - } - } - if (!hasRootAffinity) { - rootAffinity = affinity; - } else if ("@".equals(rootAffinity)) { - rootAffinity = null; } - if (effectiveUid <= 0) { - Intent checkIntent = intent != null ? intent : affinityIntent; - effectiveUid = 0; - if (checkIntent != null) { - IPackageManager pm = AppGlobals.getPackageManager(); - try { - ApplicationInfo ai = pm.getApplicationInfo( - checkIntent.getComponent().getPackageName(), - PackageManager.MATCH_UNINSTALLED_PACKAGES - | PackageManager.MATCH_DISABLED_COMPONENTS, userId); - if (ai != null) { - effectiveUid = ai.uid; - } - } catch (RemoteException e) { + } + taskDescription.restoreFromXml(in); + + int event; + while (((event = in.next()) != XmlPullParser.END_DOCUMENT) + && (event != XmlPullParser.END_TAG || in.getDepth() >= outerDepth)) { + if (event == XmlPullParser.START_TAG) { + final String name = in.getName(); + if (TaskPersister.DEBUG) Slog.d(TaskPersister.TAG, "Task: START_TAG name=" + name); + if (TAG_AFFINITYINTENT.equals(name)) { + affinityIntent = Intent.restoreFromXml(in); + } else if (TAG_INTENT.equals(name)) { + intent = Intent.restoreFromXml(in); + } else if (TAG_ACTIVITY.equals(name)) { + ActivityRecord activity = + ActivityRecord.restoreFromXml(in, stackSupervisor); + if (TaskPersister.DEBUG) { + Slog.d(TaskPersister.TAG, "Task: activity=" + activity); } + if (activity != null) { + activities.add(activity); + } + } else { + Slog.e(TAG, "restoreTask: Unexpected name=" + name); + XmlUtils.skipCurrentTag(in); } - Slog.w(TAG, "Updating task #" + taskId + " for " + checkIntent - + ": effectiveUid=" + effectiveUid); } - - if (persistTaskVersion < 1) { - // We need to convert the resize mode of home activities saved before version one if - // they are marked as RESIZE_MODE_RESIZEABLE to - // RESIZE_MODE_RESIZEABLE_VIA_SDK_VERSION since we didn't have that differentiation - // before version 1 and the system didn't resize home activities before then. - if (taskType == 1 /* old home type */ && resizeMode == RESIZE_MODE_RESIZEABLE) { - resizeMode = RESIZE_MODE_RESIZEABLE_VIA_SDK_VERSION; - } - } else { - // This activity has previously marked itself explicitly as both resizeable and - // supporting picture-in-picture. Since there is no longer a requirement for - // picture-in-picture activities to be resizeable, we can mark this simply as - // resizeable and supporting picture-in-picture separately. - if (resizeMode == RESIZE_MODE_RESIZEABLE_AND_PIPABLE_DEPRECATED) { - resizeMode = RESIZE_MODE_RESIZEABLE; - supportsPictureInPicture = true; + } + if (!hasRootAffinity) { + rootAffinity = affinity; + } else if ("@".equals(rootAffinity)) { + rootAffinity = null; + } + if (effectiveUid <= 0) { + Intent checkIntent = intent != null ? intent : affinityIntent; + effectiveUid = 0; + if (checkIntent != null) { + IPackageManager pm = AppGlobals.getPackageManager(); + try { + ApplicationInfo ai = pm.getApplicationInfo( + checkIntent.getComponent().getPackageName(), + PackageManager.MATCH_UNINSTALLED_PACKAGES + | PackageManager.MATCH_DISABLED_COMPONENTS, userId); + if (ai != null) { + effectiveUid = ai.uid; + } + } catch (RemoteException e) { } } + Slog.w(TAG, "Updating task #" + taskId + " for " + checkIntent + + ": effectiveUid=" + effectiveUid); + } - final Task task = create(stackSupervisor.mService, - taskId, intent, affinityIntent, - affinity, rootAffinity, realActivity, origActivity, rootHasReset, - autoRemoveRecents, askedCompatMode, userId, effectiveUid, lastDescription, - lastTimeOnTop, neverRelinquishIdentity, taskDescription, - taskAffiliation, prevTaskId, nextTaskId, taskAffiliationColor, callingUid, - callingPackage, callingFeatureId, resizeMode, supportsPictureInPicture, - realActivitySuspended, userSetupComplete, minWidth, minHeight, null /*stack*/); - task.mLastNonFullscreenBounds = lastNonFullscreenBounds; - task.setBounds(lastNonFullscreenBounds); - task.mWindowLayoutAffinity = windowLayoutAffinity; - - for (int activityNdx = activities.size() - 1; activityNdx >= 0; --activityNdx) { - task.addChild(activities.get(activityNdx)); + if (persistTaskVersion < 1) { + // We need to convert the resize mode of home activities saved before version one if + // they are marked as RESIZE_MODE_RESIZEABLE to + // RESIZE_MODE_RESIZEABLE_VIA_SDK_VERSION since we didn't have that differentiation + // before version 1 and the system didn't resize home activities before then. + if (taskType == 1 /* old home type */ && resizeMode == RESIZE_MODE_RESIZEABLE) { + resizeMode = RESIZE_MODE_RESIZEABLE_VIA_SDK_VERSION; + } + } else { + // This activity has previously marked itself explicitly as both resizeable and + // supporting picture-in-picture. Since there is no longer a requirement for + // picture-in-picture activities to be resizeable, we can mark this simply as + // resizeable and supporting picture-in-picture separately. + if (resizeMode == RESIZE_MODE_RESIZEABLE_AND_PIPABLE_DEPRECATED) { + resizeMode = RESIZE_MODE_RESIZEABLE; + supportsPictureInPicture = true; } - - if (DEBUG_RECENTS) Slog.d(TAG_RECENTS, "Restored task=" + task); - return task; } - void handleUnknownTag(String name, XmlPullParser in) - throws IOException, XmlPullParserException { - Slog.e(TAG, "restoreTask: Unexpected name=" + name); - XmlUtils.skipCurrentTag(in); + final Task task = new ActivityStack(stackSupervisor.mService, taskId, intent, + affinityIntent, affinity, rootAffinity, realActivity, origActivity, rootHasReset, + autoRemoveRecents, askedCompatMode, userId, effectiveUid, lastDescription, + lastTimeOnTop, neverRelinquishIdentity, taskDescription, taskAffiliation, + prevTaskId, nextTaskId, taskAffiliationColor, callingUid, callingPackage, + callingFeatureId, resizeMode, supportsPictureInPicture, realActivitySuspended, + userSetupComplete, minWidth, minHeight, null /*ActivityInfo*/, + null /*_voiceSession*/, null /*_voiceInteractor*/, null /* stack */); + task.mLastNonFullscreenBounds = lastNonFullscreenBounds; + task.setBounds(lastNonFullscreenBounds); + task.mWindowLayoutAffinity = windowLayoutAffinity; + + for (int activityNdx = activities.size() - 1; activityNdx >= 0; --activityNdx) { + task.addChild(activities.get(activityNdx)); } + + if (DEBUG_RECENTS) Slog.d(TAG_RECENTS, "Restored task=" + task); + return task; } @Override diff --git a/services/core/java/com/android/server/wm/TaskChangeNotificationController.java b/services/core/java/com/android/server/wm/TaskChangeNotificationController.java index 4b0e293e831e..df0fa9cc3272 100644 --- a/services/core/java/com/android/server/wm/TaskChangeNotificationController.java +++ b/services/core/java/com/android/server/wm/TaskChangeNotificationController.java @@ -60,6 +60,7 @@ class TaskChangeNotificationController { private static final int NOTIFY_SINGLE_TASK_DISPLAY_EMPTY = 25; private static final int NOTIFY_TASK_LIST_FROZEN_UNFROZEN_MSG = 26; private static final int NOTIFY_TASK_FOCUS_CHANGED_MSG = 27; + private static final int NOTIFY_TASK_REQUESTED_ORIENTATION_CHANGED_MSG = 28; // Delay in notifying task stack change listeners (in millis) private static final int NOTIFY_TASK_STACK_CHANGE_LISTENERS_DELAY = 100; @@ -178,6 +179,10 @@ class TaskChangeNotificationController { l.onTaskFocusChanged(m.arg1, m.arg2 != 0); }; + private final TaskStackConsumer mNotifyTaskRequestedOrientationChanged = (l, m) -> { + l.onTaskRequestedOrientationChanged(m.arg1, m.arg2); + }; + @FunctionalInterface public interface TaskStackConsumer { void accept(ITaskStackListener t, Message m) throws RemoteException; @@ -269,6 +274,9 @@ class TaskChangeNotificationController { case NOTIFY_TASK_FOCUS_CHANGED_MSG: forAllRemoteListeners(mNotifyTaskFocusChanged, msg); break; + case NOTIFY_TASK_REQUESTED_ORIENTATION_CHANGED_MSG: + forAllRemoteListeners(mNotifyTaskRequestedOrientationChanged, msg); + break; } if (msg.obj instanceof SomeArgs) { ((SomeArgs) msg.obj).recycle(); @@ -558,4 +566,12 @@ class TaskChangeNotificationController { forAllLocalListeners(mNotifyTaskFocusChanged, msg); msg.sendToTarget(); } + + /** @see android.app.ITaskStackListener#onTaskRequestedOrientationChanged(int, int) */ + void notifyTaskRequestedOrientationChanged(int taskId, int requestedOrientation) { + final Message msg = mHandler.obtainMessage(NOTIFY_TASK_REQUESTED_ORIENTATION_CHANGED_MSG, + taskId, requestedOrientation); + forAllLocalListeners(mNotifyTaskRequestedOrientationChanged, msg); + msg.sendToTarget(); + } } diff --git a/services/core/java/com/android/server/wm/TaskDisplayArea.java b/services/core/java/com/android/server/wm/TaskDisplayArea.java index 3dc672396c29..75295e6d248e 100644 --- a/services/core/java/com/android/server/wm/TaskDisplayArea.java +++ b/services/core/java/com/android/server/wm/TaskDisplayArea.java @@ -959,7 +959,7 @@ final class TaskDisplayArea extends DisplayArea<ActivityStack> { windowingMode = WINDOWING_MODE_UNDEFINED; } - final ActivityStack stack = (ActivityStack) Task.create(mAtmService, stackId, activityType, + final ActivityStack stack = new ActivityStack(mAtmService, stackId, activityType, info, intent, createdByOrganizer); if (launchRootTask != null) { launchRootTask.addChild(stack, onTop ? POSITION_TOP : POSITION_BOTTOM); diff --git a/services/people/java/com/android/server/people/data/ConversationInfo.java b/services/people/java/com/android/server/people/data/ConversationInfo.java index 27fa36b70b8f..dc3fa2a048f6 100644 --- a/services/people/java/com/android/server/people/data/ConversationInfo.java +++ b/services/people/java/com/android/server/people/data/ConversationInfo.java @@ -62,8 +62,6 @@ public class ConversationInfo { private static final int FLAG_DEMOTED = 1 << 6; - private static final int FLAG_NOTIFICATION_SETTING_CHANGED = 1 << 7; - @IntDef(flag = true, prefix = {"FLAG_"}, value = { FLAG_IMPORTANT, FLAG_NOTIFICATION_SILENCED, @@ -72,7 +70,6 @@ public class ConversationInfo { FLAG_PERSON_BOT, FLAG_CONTACT_STARRED, FLAG_DEMOTED, - FLAG_NOTIFICATION_SETTING_CHANGED, }) @Retention(RetentionPolicy.SOURCE) private @interface ConversationFlags { @@ -188,11 +185,6 @@ public class ConversationInfo { return hasConversationFlags(FLAG_CONTACT_STARRED); } - /** Whether the conversation's notification setting has ever been changed by the user. */ - boolean isNotificationSettingChanged() { - return hasConversationFlags(FLAG_NOTIFICATION_SETTING_CHANGED); - } - @Override public boolean equals(Object obj) { if (this == obj) { @@ -499,10 +491,6 @@ public class ConversationInfo { return setConversationFlag(FLAG_CONTACT_STARRED, value); } - Builder setNotificationSettingChanged(boolean value) { - return setConversationFlag(FLAG_NOTIFICATION_SETTING_CHANGED, value); - } - private Builder setConversationFlag(@ConversationFlags int flags, boolean value) { if (value) { return addConversationFlags(flags); diff --git a/services/people/java/com/android/server/people/data/DataManager.java b/services/people/java/com/android/server/people/data/DataManager.java index 8e1141da9df1..d9ca4152026e 100644 --- a/services/people/java/com/android/server/people/data/DataManager.java +++ b/services/people/java/com/android/server/people/data/DataManager.java @@ -16,8 +16,6 @@ package com.android.server.people.data; -import static android.app.NotificationChannel.USER_LOCKED_ALLOW_BUBBLE; - import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.UserIdInt; @@ -60,9 +58,11 @@ import android.telecom.TelecomManager; import android.text.format.DateUtils; import android.util.ArrayMap; import android.util.ArraySet; +import android.util.Pair; import android.util.Slog; import android.util.SparseArray; +import com.android.internal.annotations.GuardedBy; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.app.ChooserActivity; import com.android.internal.content.PackageMonitor; @@ -106,8 +106,7 @@ public class DataManager { private final SparseArray<BroadcastReceiver> mBroadcastReceivers = new SparseArray<>(); private final SparseArray<ContentObserver> mContactsContentObservers = new SparseArray<>(); private final SparseArray<ScheduledFuture<?>> mUsageStatsQueryFutures = new SparseArray<>(); - private final SparseArray<NotificationListenerService> mNotificationListeners = - new SparseArray<>(); + private final SparseArray<NotificationListener> mNotificationListeners = new SparseArray<>(); private final SparseArray<PackageMonitor> mPackageMonitors = new SparseArray<>(); private ContentObserver mCallLogContentObserver; private ContentObserver mMmsSmsContentObserver; @@ -272,6 +271,7 @@ public class DataManager { } pruneUninstalledPackageData(userData); + final NotificationListener notificationListener = mNotificationListeners.get(userId); userData.forAllPackages(packageData -> { if (signal.isCanceled()) { return; @@ -284,6 +284,20 @@ public class DataManager { packageData.getEventStore().deleteEventHistories(EventStore.CATEGORY_SMS); } packageData.pruneOrphanEvents(); + if (notificationListener != null) { + String packageName = packageData.getPackageName(); + packageData.forAllConversations(conversationInfo -> { + if (conversationInfo.isShortcutCached() + && conversationInfo.getNotificationChannelId() == null + && !notificationListener.hasActiveNotifications( + packageName, conversationInfo.getShortcutId())) { + mShortcutServiceInternal.uncacheShortcuts(userId, + mContext.getPackageName(), packageName, + Collections.singletonList(conversationInfo.getShortcutId()), + userId); + } + }); + } }); } @@ -337,7 +351,7 @@ public class DataManager { Contacts.CONTENT_URI, /* notifyForDescendants= */ true, contactsContentObserver, userId); - NotificationListener notificationListener = new NotificationListener(); + NotificationListener notificationListener = new NotificationListener(userId); mNotificationListeners.put(userId, notificationListener); try { notificationListener.registerAsSystemService(mContext, @@ -753,14 +767,27 @@ public class DataManager { /** Listener for the notifications and their settings changes. */ private class NotificationListener extends NotificationListenerService { - // Conversation shortcut ID -> Number of active notifications - private final Map<String, Integer> mActiveNotifCounts = new ArrayMap<>(); + private final int mUserId; + + // Conversation package name + shortcut ID -> Number of active notifications + @GuardedBy("this") + private final Map<Pair<String, String>, Integer> mActiveNotifCounts = new ArrayMap<>(); + + private NotificationListener(int userId) { + mUserId = userId; + } @Override public void onNotificationPosted(StatusBarNotification sbn) { + if (sbn.getUser().getIdentifier() != mUserId) { + return; + } String shortcutId = sbn.getNotification().getShortcutId(); PackageData packageData = getPackageIfConversationExists(sbn, conversationInfo -> { - mActiveNotifCounts.merge(shortcutId, 1, Integer::sum); + synchronized (this) { + mActiveNotifCounts.merge( + Pair.create(sbn.getPackageName(), shortcutId), 1, Integer::sum); + } }); if (packageData != null) { @@ -771,26 +798,32 @@ public class DataManager { } @Override - public void onNotificationRemoved(StatusBarNotification sbn, RankingMap rankingMap, - int reason) { + public synchronized void onNotificationRemoved(StatusBarNotification sbn, + RankingMap rankingMap, int reason) { + if (sbn.getUser().getIdentifier() != mUserId) { + return; + } String shortcutId = sbn.getNotification().getShortcutId(); PackageData packageData = getPackageIfConversationExists(sbn, conversationInfo -> { - int count = mActiveNotifCounts.getOrDefault(shortcutId, 0) - 1; - if (count <= 0) { - mActiveNotifCounts.remove(sbn.getNotification().getShortcutId()); - // The shortcut was cached by Notification Manager synchronously when the - // associated notification was posted. Uncache it here when all the associated - // notifications are removed. - if (conversationInfo.isShortcutCached() - && !conversationInfo.isNotificationSettingChanged()) { - int userId = sbn.getUser().getIdentifier(); - mShortcutServiceInternal.uncacheShortcuts(userId, - mContext.getPackageName(), sbn.getPackageName(), - Collections.singletonList(conversationInfo.getShortcutId()), - userId); + Pair<String, String> conversationKey = + Pair.create(sbn.getPackageName(), shortcutId); + synchronized (this) { + int count = mActiveNotifCounts.getOrDefault(conversationKey, 0) - 1; + if (count <= 0) { + mActiveNotifCounts.remove(conversationKey); + // The shortcut was cached by Notification Manager synchronously when the + // associated notification was posted. Uncache it here when all the + // associated notifications are removed. + if (conversationInfo.isShortcutCached() + && conversationInfo.getNotificationChannelId() == null) { + mShortcutServiceInternal.uncacheShortcuts(mUserId, + mContext.getPackageName(), sbn.getPackageName(), + Collections.singletonList(conversationInfo.getShortcutId()), + mUserId); + } + } else { + mActiveNotifCounts.put(conversationKey, count); } - } else { - mActiveNotifCounts.put(shortcutId, count); } }); @@ -806,6 +839,9 @@ public class DataManager { @Override public void onNotificationChannelModified(String pkg, UserHandle user, NotificationChannel channel, int modificationType) { + if (user.getIdentifier() != mUserId) { + return; + } PackageData packageData = getPackage(pkg, user.getIdentifier()); String shortcutId = channel.getConversationId(); if (packageData == null || shortcutId == null) { @@ -816,16 +852,7 @@ public class DataManager { if (conversationInfo == null) { return; } - boolean isNotificationSettingChanged = - conversationInfo.isImportant() != channel.isImportantConversation() - || conversationInfo.isDemoted() != channel.isDemoted() - || channel.hasUserSetImportance() - || (channel.getUserLockedFields() & USER_LOCKED_ALLOW_BUBBLE) != 0; ConversationInfo.Builder builder = new ConversationInfo.Builder(conversationInfo); - if (modificationType == NOTIFICATION_CHANNEL_OR_GROUP_UPDATED - && isNotificationSettingChanged) { - builder.setNotificationSettingChanged(true); - } switch (modificationType) { case NOTIFICATION_CHANNEL_OR_GROUP_ADDED: case NOTIFICATION_CHANNEL_OR_GROUP_UPDATED: @@ -848,6 +875,28 @@ public class DataManager { } conversationStore.addOrUpdate(builder.build()); } + + synchronized void cleanupCachedShortcuts() { + for (Pair<String, String> conversationKey : mActiveNotifCounts.keySet()) { + String packageName = conversationKey.first; + String shortcutId = conversationKey.second; + PackageData packageData = getPackage(packageName, mUserId); + ConversationInfo conversationInfo = + packageData != null ? packageData.getConversationInfo(shortcutId) : null; + if (conversationInfo != null + && conversationInfo.isShortcutCached() + && conversationInfo.getNotificationChannelId() == null) { + mShortcutServiceInternal.uncacheShortcuts(mUserId, + mContext.getPackageName(), packageName, + Collections.singletonList(shortcutId), + mUserId); + } + } + } + + synchronized boolean hasActiveNotifications(String packageName, String shortcutId) { + return mActiveNotifCounts.containsKey(Pair.create(packageName, shortcutId)); + } } /** @@ -917,7 +966,16 @@ public class DataManager { @Override public void onReceive(Context context, Intent intent) { - forAllUnlockedUsers(userData -> userData.forAllPackages(PackageData::saveToDisk)); + forAllUnlockedUsers(userData -> { + NotificationListener listener = mNotificationListeners.get(userData.getUserId()); + // Clean up the cached shortcuts because all the notifications are cleared after + // system shutdown. The associated shortcuts need to be uncached to keep in sync + // unless the settings are changed by the user. + if (listener != null) { + listener.cleanupCachedShortcuts(); + } + userData.forAllPackages(PackageData::saveToDisk); + }); } } diff --git a/services/tests/mockingservicestests/src/com/android/server/display/LocalDisplayAdapterTest.java b/services/tests/mockingservicestests/src/com/android/server/display/LocalDisplayAdapterTest.java index 6d1530219372..8abddc82a90b 100644 --- a/services/tests/mockingservicestests/src/com/android/server/display/LocalDisplayAdapterTest.java +++ b/services/tests/mockingservicestests/src/com/android/server/display/LocalDisplayAdapterTest.java @@ -308,7 +308,7 @@ public class LocalDisplayAdapterTest { doReturn(0).when(() -> SurfaceControl.getActiveColorMode(display.token)); doReturn(new int[] { 0 }).when( () -> SurfaceControl.getDisplayColorModes(display.token)); - doReturn(new SurfaceControl.DesiredDisplayConfigSpecs(0, 60.f, 60.f)) + doReturn(new SurfaceControl.DesiredDisplayConfigSpecs(0, 60.f, 60.f, 60.f, 60.f)) .when(() -> SurfaceControl.getDesiredDisplayConfigSpecs(display.token)); } diff --git a/services/tests/servicestests/src/com/android/server/display/DisplayModeDirectorTest.java b/services/tests/servicestests/src/com/android/server/display/DisplayModeDirectorTest.java index 08bd1ee3c389..8137c36ea350 100644 --- a/services/tests/servicestests/src/com/android/server/display/DisplayModeDirectorTest.java +++ b/services/tests/servicestests/src/com/android/server/display/DisplayModeDirectorTest.java @@ -16,7 +16,6 @@ package com.android.server.display; -import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import android.content.Context; @@ -30,7 +29,6 @@ import androidx.test.filters.SmallTest; import androidx.test.runner.AndroidJUnit4; import com.android.server.display.DisplayModeDirector.DesiredDisplayModeSpecs; -import com.android.server.display.DisplayModeDirector.RefreshRateRange; import com.android.server.display.DisplayModeDirector.Vote; import com.google.common.truth.Truth; @@ -79,10 +77,12 @@ public class DisplayModeDirectorTest { int displayId = 0; // With no votes present, DisplayModeDirector should allow any refresh rate. - assertEquals(new DesiredDisplayModeSpecs(/*baseModeId=*/60, - new RefreshRateRange(0f, Float.POSITIVE_INFINITY)), + DesiredDisplayModeSpecs modeSpecs = createDisplayModeDirectorWithDisplayFpsRange(60, 90).getDesiredDisplayModeSpecs( - displayId)); + displayId); + Truth.assertThat(modeSpecs.baseModeId).isEqualTo(60); + Truth.assertThat(modeSpecs.primaryRefreshRateRange.min).isEqualTo(0f); + Truth.assertThat(modeSpecs.primaryRefreshRateRange.max).isEqualTo(Float.POSITIVE_INFINITY); int numPriorities = DisplayModeDirector.Vote.MAX_PRIORITY - DisplayModeDirector.Vote.MIN_PRIORITY + 1; @@ -101,10 +101,12 @@ public class DisplayModeDirectorTest { int priority = Vote.MIN_PRIORITY + i; votes.put(priority, Vote.forRefreshRates(minFps + i, maxFps - i)); director.injectVotesByDisplay(votesByDisplay); - assertEquals(new DesiredDisplayModeSpecs( - /*baseModeId=*/minFps + i, - new RefreshRateRange(minFps + i, maxFps - i)), - director.getDesiredDisplayModeSpecs(displayId)); + modeSpecs = director.getDesiredDisplayModeSpecs(displayId); + Truth.assertThat(modeSpecs.baseModeId).isEqualTo(minFps + i); + Truth.assertThat(modeSpecs.primaryRefreshRateRange.min) + .isEqualTo((float) (minFps + i)); + Truth.assertThat(modeSpecs.primaryRefreshRateRange.max) + .isEqualTo((float) (maxFps - i)); } } @@ -119,9 +121,10 @@ public class DisplayModeDirectorTest { votes.put(Vote.MAX_PRIORITY, Vote.forRefreshRates(65, 85)); votes.put(Vote.MIN_PRIORITY, Vote.forRefreshRates(70, 80)); director.injectVotesByDisplay(votesByDisplay); - assertEquals(new DesiredDisplayModeSpecs(/*baseModeId=*/70, - new RefreshRateRange(70, 80)), - director.getDesiredDisplayModeSpecs(displayId)); + modeSpecs = director.getDesiredDisplayModeSpecs(displayId); + Truth.assertThat(modeSpecs.baseModeId).isEqualTo(70); + Truth.assertThat(modeSpecs.primaryRefreshRateRange.min).isEqualTo(70f); + Truth.assertThat(modeSpecs.primaryRefreshRateRange.max).isEqualTo(80f); } } @@ -140,8 +143,8 @@ public class DisplayModeDirectorTest { director.injectVotesByDisplay(votesByDisplay); DesiredDisplayModeSpecs desiredSpecs = director.getDesiredDisplayModeSpecs(displayId); - Truth.assertThat(desiredSpecs.refreshRateRange.min).isWithin(FLOAT_TOLERANCE).of(60); - Truth.assertThat(desiredSpecs.refreshRateRange.max).isWithin(FLOAT_TOLERANCE).of(60); + Truth.assertThat(desiredSpecs.primaryRefreshRateRange.min).isWithin(FLOAT_TOLERANCE).of(60); + Truth.assertThat(desiredSpecs.primaryRefreshRateRange.max).isWithin(FLOAT_TOLERANCE).of(60); Truth.assertThat(desiredSpecs.baseModeId).isEqualTo(60); } @@ -159,34 +162,77 @@ public class DisplayModeDirectorTest { votes.put(Vote.PRIORITY_LOW_BRIGHTNESS, Vote.forRefreshRates(60, 60)); director.injectVotesByDisplay(votesByDisplay); DesiredDisplayModeSpecs desiredSpecs = director.getDesiredDisplayModeSpecs(displayId); - Truth.assertThat(desiredSpecs.refreshRateRange.min).isWithin(FLOAT_TOLERANCE).of(60); - Truth.assertThat(desiredSpecs.refreshRateRange.max).isWithin(FLOAT_TOLERANCE).of(60); + Truth.assertThat(desiredSpecs.primaryRefreshRateRange.min).isWithin(FLOAT_TOLERANCE).of(60); + Truth.assertThat(desiredSpecs.primaryRefreshRateRange.max).isWithin(FLOAT_TOLERANCE).of(60); votes.clear(); votes.put(Vote.PRIORITY_APP_REQUEST_REFRESH_RATE, Vote.forRefreshRates(60, 90)); votes.put(Vote.PRIORITY_LOW_BRIGHTNESS, Vote.forRefreshRates(90, 90)); director.injectVotesByDisplay(votesByDisplay); desiredSpecs = director.getDesiredDisplayModeSpecs(displayId); - Truth.assertThat(desiredSpecs.refreshRateRange.min).isWithin(FLOAT_TOLERANCE).of(90); - Truth.assertThat(desiredSpecs.refreshRateRange.max).isWithin(FLOAT_TOLERANCE).of(90); - + Truth.assertThat(desiredSpecs.primaryRefreshRateRange.min).isWithin(FLOAT_TOLERANCE).of(90); + Truth.assertThat(desiredSpecs.primaryRefreshRateRange.max).isWithin(FLOAT_TOLERANCE).of(90); votes.clear(); votes.put(Vote.PRIORITY_APP_REQUEST_REFRESH_RATE, Vote.forRefreshRates(90, 90)); votes.put(Vote.PRIORITY_LOW_BRIGHTNESS, Vote.forRefreshRates(60, 60)); director.injectVotesByDisplay(votesByDisplay); desiredSpecs = director.getDesiredDisplayModeSpecs(displayId); - Truth.assertThat(desiredSpecs.refreshRateRange.min).isWithin(FLOAT_TOLERANCE).of(90); - Truth.assertThat(desiredSpecs.refreshRateRange.max).isWithin(FLOAT_TOLERANCE).of(90); + Truth.assertThat(desiredSpecs.primaryRefreshRateRange.min).isWithin(FLOAT_TOLERANCE).of(90); + Truth.assertThat(desiredSpecs.primaryRefreshRateRange.max).isWithin(FLOAT_TOLERANCE).of(90); votes.clear(); votes.put(Vote.PRIORITY_APP_REQUEST_REFRESH_RATE, Vote.forRefreshRates(60, 60)); votes.put(Vote.PRIORITY_LOW_BRIGHTNESS, Vote.forRefreshRates(90, 90)); director.injectVotesByDisplay(votesByDisplay); desiredSpecs = director.getDesiredDisplayModeSpecs(displayId); - Truth.assertThat(desiredSpecs.refreshRateRange.min).isWithin(FLOAT_TOLERANCE).of(60); - Truth.assertThat(desiredSpecs.refreshRateRange.max).isWithin(FLOAT_TOLERANCE).of(60); + Truth.assertThat(desiredSpecs.primaryRefreshRateRange.min).isWithin(FLOAT_TOLERANCE).of(60); + Truth.assertThat(desiredSpecs.primaryRefreshRateRange.max).isWithin(FLOAT_TOLERANCE).of(60); + } + @Test + public void testAppRequestRefreshRateRange() { + // Confirm that the app request range doesn't include low brightness or min refresh rate + // settings, but does include everything else. + assertTrue( + Vote.PRIORITY_LOW_BRIGHTNESS < Vote.APP_REQUEST_REFRESH_RATE_RANGE_PRIORITY_CUTOFF); + assertTrue(Vote.PRIORITY_USER_SETTING_MIN_REFRESH_RATE + < Vote.APP_REQUEST_REFRESH_RATE_RANGE_PRIORITY_CUTOFF); + assertTrue(Vote.PRIORITY_APP_REQUEST_REFRESH_RATE + >= Vote.APP_REQUEST_REFRESH_RATE_RANGE_PRIORITY_CUTOFF); + int displayId = 0; + DisplayModeDirector director = createDisplayModeDirectorWithDisplayFpsRange(60, 90); + SparseArray<Vote> votes = new SparseArray<>(); + SparseArray<SparseArray<Vote>> votesByDisplay = new SparseArray<>(); + votesByDisplay.put(displayId, votes); + votes.put(Vote.PRIORITY_LOW_BRIGHTNESS, Vote.forRefreshRates(60, 60)); + director.injectVotesByDisplay(votesByDisplay); + DesiredDisplayModeSpecs desiredSpecs = director.getDesiredDisplayModeSpecs(displayId); + Truth.assertThat(desiredSpecs.primaryRefreshRateRange.min).isWithin(FLOAT_TOLERANCE).of(60); + Truth.assertThat(desiredSpecs.primaryRefreshRateRange.max).isWithin(FLOAT_TOLERANCE).of(60); + Truth.assertThat(desiredSpecs.appRequestRefreshRateRange.min).isAtMost(60f); + Truth.assertThat(desiredSpecs.appRequestRefreshRateRange.max).isAtLeast(90f); + + votes.put(Vote.PRIORITY_USER_SETTING_MIN_REFRESH_RATE, + Vote.forRefreshRates(90, Float.POSITIVE_INFINITY)); + director.injectVotesByDisplay(votesByDisplay); + desiredSpecs = director.getDesiredDisplayModeSpecs(displayId); + Truth.assertThat(desiredSpecs.primaryRefreshRateRange.min).isWithin(FLOAT_TOLERANCE).of(90); + Truth.assertThat(desiredSpecs.primaryRefreshRateRange.max).isAtLeast(90f); + Truth.assertThat(desiredSpecs.appRequestRefreshRateRange.min).isAtMost(60f); + Truth.assertThat(desiredSpecs.appRequestRefreshRateRange.max).isAtLeast(90f); + + votes.put(Vote.PRIORITY_APP_REQUEST_REFRESH_RATE, Vote.forRefreshRates(75, 75)); + director.injectVotesByDisplay(votesByDisplay); + desiredSpecs = director.getDesiredDisplayModeSpecs(displayId); + Truth.assertThat(desiredSpecs.primaryRefreshRateRange.min).isWithin(FLOAT_TOLERANCE).of(75); + Truth.assertThat(desiredSpecs.primaryRefreshRateRange.max).isWithin(FLOAT_TOLERANCE).of(75); + Truth.assertThat(desiredSpecs.appRequestRefreshRateRange.min) + .isWithin(FLOAT_TOLERANCE) + .of(75); + Truth.assertThat(desiredSpecs.appRequestRefreshRateRange.max) + .isWithin(FLOAT_TOLERANCE) + .of(75); } } diff --git a/services/tests/servicestests/src/com/android/server/people/data/ConversationInfoTest.java b/services/tests/servicestests/src/com/android/server/people/data/ConversationInfoTest.java index ea8aa6bb5c03..70d6cf81c3b0 100644 --- a/services/tests/servicestests/src/com/android/server/people/data/ConversationInfoTest.java +++ b/services/tests/servicestests/src/com/android/server/people/data/ConversationInfoTest.java @@ -54,7 +54,6 @@ public final class ConversationInfoTest { .setPersonImportant(true) .setPersonBot(true) .setContactStarred(true) - .setNotificationSettingChanged(true) .build(); assertEquals(SHORTCUT_ID, conversationInfo.getShortcutId()); @@ -71,7 +70,6 @@ public final class ConversationInfoTest { assertTrue(conversationInfo.isPersonImportant()); assertTrue(conversationInfo.isPersonBot()); assertTrue(conversationInfo.isContactStarred()); - assertTrue(conversationInfo.isNotificationSettingChanged()); } @Test @@ -94,7 +92,6 @@ public final class ConversationInfoTest { assertFalse(conversationInfo.isPersonImportant()); assertFalse(conversationInfo.isPersonBot()); assertFalse(conversationInfo.isContactStarred()); - assertFalse(conversationInfo.isNotificationSettingChanged()); } @Test @@ -112,7 +109,6 @@ public final class ConversationInfoTest { .setPersonImportant(true) .setPersonBot(true) .setContactStarred(true) - .setNotificationSettingChanged(true) .build(); ConversationInfo destination = new ConversationInfo.Builder(source) @@ -132,6 +128,5 @@ public final class ConversationInfoTest { assertTrue(destination.isPersonImportant()); assertTrue(destination.isPersonBot()); assertFalse(destination.isContactStarred()); - assertTrue(destination.isNotificationSettingChanged()); } } diff --git a/services/tests/servicestests/src/com/android/server/people/data/DataManagerTest.java b/services/tests/servicestests/src/com/android/server/people/data/DataManagerTest.java index e51ab9dbdd9b..1a2032ac15d0 100644 --- a/services/tests/servicestests/src/com/android/server/people/data/DataManagerTest.java +++ b/services/tests/servicestests/src/com/android/server/people/data/DataManagerTest.java @@ -49,6 +49,7 @@ import android.app.prediction.AppTarget; import android.app.prediction.AppTargetEvent; import android.app.prediction.AppTargetId; import android.app.usage.UsageStatsManagerInternal; +import android.content.BroadcastReceiver; import android.content.ContentResolver; import android.content.Context; import android.content.Intent; @@ -95,8 +96,6 @@ import java.util.List; import java.util.Set; import java.util.concurrent.Executor; import java.util.concurrent.ScheduledExecutorService; -import java.util.concurrent.ScheduledFuture; -import java.util.concurrent.TimeUnit; import java.util.function.BiConsumer; import java.util.function.Consumer; @@ -125,18 +124,19 @@ public final class DataManagerTest { @Mock private TelephonyManager mTelephonyManager; @Mock private TelecomManager mTelecomManager; @Mock private ContentResolver mContentResolver; - @Mock private ScheduledExecutorService mExecutorService; @Mock private JobScheduler mJobScheduler; - @Mock private ScheduledFuture mScheduledFuture; @Mock private StatusBarNotification mStatusBarNotification; @Mock private Notification mNotification; @Captor private ArgumentCaptor<ShortcutChangeCallback> mShortcutChangeCallbackCaptor; + @Captor private ArgumentCaptor<BroadcastReceiver> mBroadcastReceiverCaptor; + private ScheduledExecutorService mExecutorService; private NotificationChannel mNotificationChannel; private DataManager mDataManager; private CancellationSignal mCancellationSignal; private ShortcutChangeCallback mShortcutChangeCallback; + private BroadcastReceiver mShutdownBroadcastReceiver; private TestInjector mInjector; @Before @@ -182,13 +182,7 @@ public final class DataManagerTest { when(mContext.getSystemServiceName(JobScheduler.class)).thenReturn( Context.JOB_SCHEDULER_SERVICE); - when(mExecutorService.scheduleAtFixedRate(any(Runnable.class), anyLong(), anyLong(), any( - TimeUnit.class))).thenReturn(mScheduledFuture); - doAnswer(ans -> { - Runnable runnable = (Runnable) ans.getArguments()[0]; - runnable.run(); - return null; - }).when(mExecutorService).execute(any(Runnable.class)); + mExecutorService = new MockScheduledExecutorService(); when(mUserManager.getEnabledProfiles(USER_ID_PRIMARY)) .thenReturn(Arrays.asList( @@ -221,6 +215,9 @@ public final class DataManagerTest { verify(mShortcutServiceInternal).addShortcutChangeCallback( mShortcutChangeCallbackCaptor.capture()); mShortcutChangeCallback = mShortcutChangeCallbackCaptor.getValue(); + + verify(mContext).registerReceiver(mBroadcastReceiverCaptor.capture(), any()); + mShutdownBroadcastReceiver = mBroadcastReceiverCaptor.getValue(); } @After @@ -459,7 +456,7 @@ public final class DataManagerTest { } @Test - public void testShortcutNotUncachedIfSettingChanged() { + public void testShortcutNotUncachedIfNotificationChannelCreated() { mDataManager.onUserUnlocked(USER_ID_PRIMARY); ShortcutInfo shortcut = buildShortcutInfo(TEST_PKG_NAME, USER_ID_PRIMARY, TEST_SHORTCUT_ID, @@ -473,7 +470,6 @@ public final class DataManagerTest { shortcut.setCached(); mDataManager.addOrUpdateConversationInfo(shortcut); - mNotificationChannel.setImportantConversation(true); listenerService.onNotificationChannelModified(TEST_PKG_NAME, UserHandle.of(USER_ID_PRIMARY), mNotificationChannel, NOTIFICATION_CHANNEL_OR_GROUP_UPDATED); @@ -530,7 +526,6 @@ public final class DataManagerTest { assertTrue(conversationInfo.isImportant()); assertFalse(conversationInfo.isNotificationSilenced()); assertFalse(conversationInfo.isDemoted()); - assertTrue(conversationInfo.isNotificationSettingChanged()); } @Test @@ -563,6 +558,51 @@ public final class DataManagerTest { } @Test + public void testUncacheShortcutWhenShutdown() { + mDataManager.onUserUnlocked(USER_ID_PRIMARY); + + ShortcutInfo shortcut = buildShortcutInfo(TEST_PKG_NAME, USER_ID_PRIMARY, TEST_SHORTCUT_ID, + buildPerson()); + mDataManager.addOrUpdateConversationInfo(shortcut); + + NotificationListenerService listenerService = + mDataManager.getNotificationListenerServiceForTesting(USER_ID_PRIMARY); + + listenerService.onNotificationPosted(mStatusBarNotification); + shortcut.setCached(); + mDataManager.addOrUpdateConversationInfo(shortcut); + + mShutdownBroadcastReceiver.onReceive(mContext, new Intent()); + verify(mShortcutServiceInternal).uncacheShortcuts( + anyInt(), any(), eq(TEST_PKG_NAME), + eq(Collections.singletonList(TEST_SHORTCUT_ID)), eq(USER_ID_PRIMARY)); + } + + @Test + public void testDoNotUncacheShortcutWhenShutdownIfNotificationChannelCreated() { + mDataManager.onUserUnlocked(USER_ID_PRIMARY); + + ShortcutInfo shortcut = buildShortcutInfo(TEST_PKG_NAME, USER_ID_PRIMARY, TEST_SHORTCUT_ID, + buildPerson()); + mDataManager.addOrUpdateConversationInfo(shortcut); + + NotificationListenerService listenerService = + mDataManager.getNotificationListenerServiceForTesting(USER_ID_PRIMARY); + + listenerService.onNotificationPosted(mStatusBarNotification); + shortcut.setCached(); + mDataManager.addOrUpdateConversationInfo(shortcut); + + listenerService.onNotificationChannelModified(TEST_PKG_NAME, UserHandle.of(USER_ID_PRIMARY), + mNotificationChannel, NOTIFICATION_CHANNEL_OR_GROUP_UPDATED); + + mShutdownBroadcastReceiver.onReceive(mContext, new Intent()); + verify(mShortcutServiceInternal, never()).uncacheShortcuts( + anyInt(), any(), eq(TEST_PKG_NAME), + eq(Collections.singletonList(TEST_SHORTCUT_ID)), eq(USER_ID_PRIMARY)); + } + + @Test public void testShortcutAddedOrUpdated() { mDataManager.onUserUnlocked(USER_ID_PRIMARY); @@ -722,6 +762,22 @@ public final class DataManagerTest { } @Test + public void testPruneInactiveCachedShortcuts() { + mDataManager.onUserUnlocked(USER_ID_PRIMARY); + + ShortcutInfo shortcut = buildShortcutInfo(TEST_PKG_NAME, USER_ID_PRIMARY, TEST_SHORTCUT_ID, + buildPerson()); + shortcut.setCached(); + mDataManager.addOrUpdateConversationInfo(shortcut); + + mDataManager.pruneDataForUser(USER_ID_PRIMARY, mCancellationSignal); + + verify(mShortcutServiceInternal).uncacheShortcuts( + anyInt(), any(), eq(TEST_PKG_NAME), + eq(Collections.singletonList(TEST_SHORTCUT_ID)), eq(USER_ID_PRIMARY)); + } + + @Test public void testBackupAndRestoration() throws IntentFilter.MalformedMimeTypeException { mDataManager.onUserUnlocked(USER_ID_PRIMARY); diff --git a/services/tests/servicestests/src/com/android/server/people/data/MockScheduledExecutorService.java b/services/tests/servicestests/src/com/android/server/people/data/MockScheduledExecutorService.java index aecbc8d031e1..8cb846ff9b14 100644 --- a/services/tests/servicestests/src/com/android/server/people/data/MockScheduledExecutorService.java +++ b/services/tests/servicestests/src/com/android/server/people/data/MockScheduledExecutorService.java @@ -96,7 +96,6 @@ class MockScheduledExecutorService implements ScheduledExecutorService { @Override public ScheduledFuture<?> scheduleAtFixedRate(Runnable command, long initialDelay, long period, TimeUnit unit) { - Preconditions.checkState(unit == TimeUnit.MILLISECONDS); return new MockScheduledFuture<>(command, period, unit); } diff --git a/services/tests/servicestests/src/com/android/server/usage/UsageStatsDatabaseTest.java b/services/tests/servicestests/src/com/android/server/usage/UsageStatsDatabaseTest.java index f1c39067994c..60390dc3995e 100644 --- a/services/tests/servicestests/src/com/android/server/usage/UsageStatsDatabaseTest.java +++ b/services/tests/servicestests/src/com/android/server/usage/UsageStatsDatabaseTest.java @@ -126,7 +126,7 @@ public class UsageStatsDatabaseTest { mIntervalStats.majorVersion = 7; mIntervalStats.minorVersion = 8; - mIntervalStats.beginTime = time; + mIntervalStats.beginTime = time - 1; mIntervalStats.interactiveTracker.count = 2; mIntervalStats.interactiveTracker.duration = 111111; mIntervalStats.nonInteractiveTracker.count = 3; diff --git a/services/tests/wmtests/AndroidManifest.xml b/services/tests/wmtests/AndroidManifest.xml index 7e7d69acc138..fdc9401a66b0 100644 --- a/services/tests/wmtests/AndroidManifest.xml +++ b/services/tests/wmtests/AndroidManifest.xml @@ -54,6 +54,10 @@ <activity android:name="com.android.server.wm.TaskStackChangedListenerTest$ActivityViewTestActivity" /> <activity android:name="com.android.server.wm.TaskStackChangedListenerTest$ActivityInActivityView" android:resizeableActivity="true" /> + <activity android:name="com.android.server.wm.TaskStackChangedListenerTest$LandscapeActivity" + android:screenOrientation="sensorLandscape" + android:showWhenLocked="true" + android:turnScreenOn="true" /> <activity android:name="com.android.server.wm.ScreenDecorWindowTests$TestActivity" android:showWhenLocked="true" android:allowEmbedded="true"/> </application> diff --git a/services/tests/wmtests/src/com/android/server/wm/TaskRecordTests.java b/services/tests/wmtests/src/com/android/server/wm/TaskRecordTests.java index f0a97c5f9d6a..fb24d868e970 100644 --- a/services/tests/wmtests/src/com/android/server/wm/TaskRecordTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/TaskRecordTests.java @@ -49,7 +49,6 @@ import static org.hamcrest.Matchers.sameInstance; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotEquals; -import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertThat; import static org.junit.Assert.assertTrue; @@ -67,16 +66,12 @@ import android.content.res.Configuration; import android.graphics.Rect; import android.os.IBinder; import android.platform.test.annotations.Presubmit; -import android.service.voice.IVoiceInteractionSession; import android.util.DisplayMetrics; import android.util.Xml; import android.view.DisplayInfo; import androidx.test.filters.MediumTest; -import com.android.internal.app.IVoiceInteractor; -import com.android.server.wm.Task.TaskFactory; - import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -122,11 +117,6 @@ public class TaskRecordTests extends ActivityTestsBase { assertEquals(expected.mLastNonFullscreenBounds, actual.mLastNonFullscreenBounds); } - @Test - public void testDefaultTaskFactoryNotNull() throws Exception { - assertNotNull(Task.getTaskFactory()); - } - /** Ensure we have no chance to modify the original intent. */ @Test public void testCopyBaseIntentForTaskInfo() { @@ -139,23 +129,6 @@ public class TaskRecordTests extends ActivityTestsBase { } @Test - public void testCreateTestRecordUsingCustomizedFactory() throws Exception { - TestTaskFactory factory = new TestTaskFactory(); - Task.setTaskFactory(factory); - - try { - assertFalse(factory.mCreated); - - Task.create(mService, 0 /*taskId*/, 0 /*activityType*/, - new ActivityInfo(), new Intent(), false /* createdByOrganizer */); - - assertTrue(factory.mCreated); - } finally { - Task.setTaskFactory(null); - } - } - - @Test public void testReturnsToHomeStack() throws Exception { final Task task = createTask(1); spyOn(task); @@ -540,8 +513,9 @@ public class TaskRecordTests extends ActivityTestsBase { info.packageName = DEFAULT_COMPONENT_PACKAGE_NAME; info.targetActivity = targetClassName; - final Task task = Task.create(mService, 1 /* taskId */, info, intent, - null /* voiceSession */, null /* voiceInteractor */, null /*stack*/); + final Task task = new ActivityStack(mService, 1 /* taskId */, info, intent, + null /* voiceSession */, null /* voiceInteractor */, null /* taskDescriptor */, + null /*stack*/); assertEquals("The alias activity component should be saved in task intent.", aliasClassName, task.intent.getComponent().getClassName()); @@ -1038,48 +1012,4 @@ public class TaskRecordTests extends ActivityTestsBase { 0, null /*ActivityInfo*/, null /*_voiceSession*/, null /*_voiceInteractor*/, null /*stack*/); } - - private static class TestTaskFactory extends TaskFactory { - private boolean mCreated = false; - - @Override - Task create(ActivityTaskManagerService service, int taskId, int activityType, - ActivityInfo info, Intent intent, boolean createdByOrganizer) { - mCreated = true; - return null; - } - - @Override - Task create(ActivityTaskManagerService service, int taskId, ActivityInfo info, - Intent intent, IVoiceInteractionSession voiceSession, - IVoiceInteractor voiceInteractor, ActivityStack stack) { - mCreated = true; - return null; - } - - @Override - Task create(ActivityTaskManagerService service, int taskId, Intent intent, - Intent affinityIntent, String affinity, String rootAffinity, - ComponentName realActivity, - ComponentName origActivity, boolean rootWasReset, boolean autoRemoveRecents, - boolean askedCompatMode, int userId, int effectiveUid, String lastDescription, - long lastTimeMoved, - boolean neverRelinquishIdentity, - ActivityManager.TaskDescription lastTaskDescription, - int taskAffiliation, int prevTaskId, int nextTaskId, int taskAffiliationColor, - int callingUid, String callingPackage, String callingFeatureId, int resizeMode, - boolean supportsPictureInPicture, - boolean realActivitySuspended, boolean userSetupComplete, int minWidth, - int minHeight, ActivityStack stack) { - mCreated = true; - return null; - } - - @Override - Task restoreFromXml(XmlPullParser in, ActivityStackSupervisor stackSupervisor) - throws IOException, XmlPullParserException { - mCreated = true; - return null; - } - } } diff --git a/services/tests/wmtests/src/com/android/server/wm/TaskStackChangedListenerTest.java b/services/tests/wmtests/src/com/android/server/wm/TaskStackChangedListenerTest.java index 9872faaf6582..4e92ea0f82e6 100644 --- a/services/tests/wmtests/src/com/android/server/wm/TaskStackChangedListenerTest.java +++ b/services/tests/wmtests/src/com/android/server/wm/TaskStackChangedListenerTest.java @@ -22,6 +22,7 @@ import static androidx.test.platform.app.InstrumentationRegistry.getInstrumentat import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import android.app.Activity; @@ -41,6 +42,7 @@ import android.content.Intent; import android.content.pm.ActivityInfo; import android.os.Bundle; import android.os.RemoteException; +import android.os.SystemClock; import android.platform.test.annotations.Presubmit; import android.support.test.uiautomator.UiDevice; import android.text.TextUtils; @@ -56,8 +58,10 @@ import org.junit.After; import org.junit.Before; import org.junit.Test; +import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; +import java.util.function.Predicate; /** * Build/Install/Run: @@ -391,6 +395,42 @@ public class TaskStackChangedListenerTest { } }; + @Presubmit + @FlakyTest(bugId = 150409355) + @Test + public void testNotifyTaskRequestedOrientationChanged() throws Exception { + final ArrayBlockingQueue<int[]> taskIdAndOrientationQueue = new ArrayBlockingQueue<>(10); + registerTaskStackChangedListener(new TaskStackListener() { + @Override + public void onTaskRequestedOrientationChanged(int taskId, int requestedOrientation) { + int[] taskIdAndOrientation = new int[2]; + taskIdAndOrientation[0] = taskId; + taskIdAndOrientation[1] = requestedOrientation; + taskIdAndOrientationQueue.offer(taskIdAndOrientation); + } + }); + + final LandscapeActivity activity = + (LandscapeActivity) startTestActivity(LandscapeActivity.class); + + int[] taskIdAndOrientation = waitForResult(taskIdAndOrientationQueue, + candidate -> candidate[0] == activity.getTaskId()); + assertNotNull(taskIdAndOrientation); + assertEquals(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE, taskIdAndOrientation[1]); + + activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT); + taskIdAndOrientation = waitForResult(taskIdAndOrientationQueue, + candidate -> candidate[0] == activity.getTaskId()); + assertNotNull(taskIdAndOrientation); + assertEquals(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT, taskIdAndOrientation[1]); + + activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED); + taskIdAndOrientation = waitForResult(taskIdAndOrientationQueue, + candidate -> candidate[0] == activity.getTaskId()); + assertNotNull(taskIdAndOrientation); + assertEquals(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED, taskIdAndOrientation[1]); + } + /** * Starts the provided activity and returns the started instance. */ @@ -432,6 +472,19 @@ public class TaskStackChangedListenerTest { } } + private <T> T waitForResult(ArrayBlockingQueue<T> queue, Predicate<T> predicate) { + try { + final long timeout = SystemClock.uptimeMillis() + TimeUnit.SECONDS.toMillis(15); + T result; + do { + result = queue.poll(timeout - SystemClock.uptimeMillis(), TimeUnit.MILLISECONDS); + } while (result != null && !predicate.test(result)); + return result; + } catch (InterruptedException e) { + return null; + } + } + public static class TestActivity extends Activity { boolean mIsResumed = false; @@ -563,4 +616,6 @@ public class TaskStackChangedListenerTest { // Activity that has {@link android.R.attr#resizeableActivity} attribute set to {@code true} public static class ActivityInActivityView extends TestActivity {} + + public static class LandscapeActivity extends TestActivity {} } diff --git a/services/usage/java/com/android/server/usage/IntervalStats.java b/services/usage/java/com/android/server/usage/IntervalStats.java index 8fadf5eb9333..5ee3b4859d54 100644 --- a/services/usage/java/com/android/server/usage/IntervalStats.java +++ b/services/usage/java/com/android/server/usage/IntervalStats.java @@ -253,10 +253,6 @@ public class IntervalStats { } break; } - if (event.mTimeStamp == 0) { - //mTimestamp not set, assume default value 0 plus beginTime - event.mTimeStamp = beginTime; - } return event; } } diff --git a/services/usage/java/com/android/server/usage/UsageStatsProto.java b/services/usage/java/com/android/server/usage/UsageStatsProto.java index 932784d334b8..463fc378c27d 100644 --- a/services/usage/java/com/android/server/usage/UsageStatsProto.java +++ b/services/usage/java/com/android/server/usage/UsageStatsProto.java @@ -149,10 +149,6 @@ final class UsageStatsProto { break; } } - if (stats.mLastTimeUsed == 0) { - // mLastTimeUsed was not assigned, assume default value of 0 plus beginTime; - stats.mLastTimeUsed = statsOut.beginTime; - } proto.end(token); } @@ -289,10 +285,6 @@ final class UsageStatsProto { configActive = proto.readBoolean(IntervalStatsProto.Configuration.ACTIVE); break; case ProtoInputStream.NO_MORE_FIELDS: - if (configStats.mLastTimeActive == 0) { - //mLastTimeActive was not assigned, assume default value of 0 plus beginTime - configStats.mLastTimeActive = statsOut.beginTime; - } if (configActive) { statsOut.activeConfiguration = configStats.mConfiguration; } @@ -336,21 +328,21 @@ final class UsageStatsProto { // Package not in Stringpool for some reason, write full string instead proto.write(IntervalStatsProto.UsageStats.PACKAGE, usageStats.mPackageName); } - // Time attributes stored as an offset of the beginTime. - proto.write(IntervalStatsProto.UsageStats.LAST_TIME_ACTIVE_MS, - usageStats.mLastTimeUsed - stats.beginTime); + UsageStatsProtoV2.writeOffsetTimestamp(proto, + IntervalStatsProto.UsageStats.LAST_TIME_ACTIVE_MS, + usageStats.mLastTimeUsed, stats.beginTime); proto.write(IntervalStatsProto.UsageStats.TOTAL_TIME_ACTIVE_MS, usageStats.mTotalTimeInForeground); proto.write(IntervalStatsProto.UsageStats.LAST_EVENT, usageStats.mLastEvent); - // Time attributes stored as an offset of the beginTime. - proto.write(IntervalStatsProto.UsageStats.LAST_TIME_SERVICE_USED_MS, - usageStats.mLastTimeForegroundServiceUsed - stats.beginTime); + UsageStatsProtoV2.writeOffsetTimestamp(proto, + IntervalStatsProto.UsageStats.LAST_TIME_SERVICE_USED_MS, + usageStats.mLastTimeForegroundServiceUsed, stats.beginTime); proto.write(IntervalStatsProto.UsageStats.TOTAL_TIME_SERVICE_USED_MS, usageStats.mTotalTimeForegroundServiceUsed); - // Time attributes stored as an offset of the beginTime. - proto.write(IntervalStatsProto.UsageStats.LAST_TIME_VISIBLE_MS, - usageStats.mLastTimeVisible - stats.beginTime); + UsageStatsProtoV2.writeOffsetTimestamp(proto, + IntervalStatsProto.UsageStats.LAST_TIME_VISIBLE_MS, + usageStats.mLastTimeVisible, stats.beginTime); proto.write(IntervalStatsProto.UsageStats.TOTAL_TIME_VISIBLE_MS, usageStats.mTotalTimeVisible); proto.write(IntervalStatsProto.UsageStats.APP_LAUNCH_COUNT, usageStats.mAppLaunchCount); @@ -411,8 +403,9 @@ final class UsageStatsProto { throws IllegalArgumentException { final long token = proto.start(fieldId); configStats.mConfiguration.dumpDebug(proto, IntervalStatsProto.Configuration.CONFIG); - proto.write(IntervalStatsProto.Configuration.LAST_TIME_ACTIVE_MS, - configStats.mLastTimeActive - stats.beginTime); + UsageStatsProtoV2.writeOffsetTimestamp(proto, + IntervalStatsProto.Configuration.LAST_TIME_ACTIVE_MS, + configStats.mLastTimeActive, stats.beginTime); proto.write(IntervalStatsProto.Configuration.TOTAL_TIME_ACTIVE_MS, configStats.mTotalTimeActive); proto.write(IntervalStatsProto.Configuration.COUNT, configStats.mActivationCount); @@ -439,7 +432,8 @@ final class UsageStatsProto { proto.write(IntervalStatsProto.Event.CLASS, event.mClass); } } - proto.write(IntervalStatsProto.Event.TIME_MS, event.mTimeStamp - stats.beginTime); + UsageStatsProtoV2.writeOffsetTimestamp(proto, IntervalStatsProto.Event.TIME_MS, + event.mTimeStamp, stats.beginTime); proto.write(IntervalStatsProto.Event.FLAGS, event.mFlags); proto.write(IntervalStatsProto.Event.TYPE, event.mEventType); proto.write(IntervalStatsProto.Event.INSTANCE_ID, event.mInstanceId); @@ -566,10 +560,6 @@ final class UsageStatsProto { } break; case ProtoInputStream.NO_MORE_FIELDS: - if (statsOut.endTime == 0) { - // endTime not assigned, assume default value of 0 plus beginTime - statsOut.endTime = statsOut.beginTime; - } statsOut.upgradeIfNeeded(); return; } @@ -585,7 +575,8 @@ final class UsageStatsProto { public static void write(OutputStream out, IntervalStats stats) throws IOException, IllegalArgumentException { final ProtoOutputStream proto = new ProtoOutputStream(out); - proto.write(IntervalStatsProto.END_TIME_MS, stats.endTime - stats.beginTime); + proto.write(IntervalStatsProto.END_TIME_MS, + UsageStatsProtoV2.getOffsetTimestamp(stats.endTime, stats.beginTime)); proto.write(IntervalStatsProto.MAJOR_VERSION, stats.majorVersion); proto.write(IntervalStatsProto.MINOR_VERSION, stats.minorVersion); // String pool should be written before the rest of the usage stats diff --git a/services/usage/java/com/android/server/usage/UsageStatsProtoV2.java b/services/usage/java/com/android/server/usage/UsageStatsProtoV2.java index e4aa9fe0dc1e..e6d28417d3ca 100644 --- a/services/usage/java/com/android/server/usage/UsageStatsProtoV2.java +++ b/services/usage/java/com/android/server/usage/UsageStatsProtoV2.java @@ -30,6 +30,7 @@ import java.io.InputStream; import java.io.OutputStream; import java.util.ArrayList; import java.util.LinkedList; +import java.util.concurrent.TimeUnit; /** * UsageStats reader/writer V2 for Protocol Buffer format. @@ -37,6 +38,8 @@ import java.util.LinkedList; final class UsageStatsProtoV2 { private static final String TAG = "UsageStatsProtoV2"; + private static final long ONE_HOUR_MS = TimeUnit.HOURS.toMillis(1); + // Static-only utility class. private UsageStatsProtoV2() {} @@ -88,10 +91,6 @@ final class UsageStatsProtoV2 { UsageStatsObfuscatedProto.TOTAL_TIME_VISIBLE_MS); break; case ProtoInputStream.NO_MORE_FIELDS: - // mLastTimeUsed was not read, assume default value of 0 plus beginTime - if (stats.mLastTimeUsed == 0) { - stats.mLastTimeUsed = beginTime; - } return stats; } } @@ -219,10 +218,6 @@ final class UsageStatsProtoV2 { IntervalStatsObfuscatedProto.Configuration.ACTIVE); break; case ProtoInputStream.NO_MORE_FIELDS: - // mLastTimeActive was not assigned, assume default value of 0 plus beginTime - if (configStats.mLastTimeActive == 0) { - configStats.mLastTimeActive = stats.beginTime; - } if (configActive) { stats.activeConfiguration = configStats.mConfiguration; } @@ -282,27 +277,40 @@ final class UsageStatsProtoV2 { EventObfuscatedProto.LOCUS_ID_TOKEN) - 1; break; case ProtoInputStream.NO_MORE_FIELDS: - // timeStamp was not read, assume default value 0 plus beginTime - if (event.mTimeStamp == 0) { - event.mTimeStamp = beginTime; - } return event.mPackageToken == PackagesTokenData.UNASSIGNED_TOKEN ? null : event; } } } + static void writeOffsetTimestamp(ProtoOutputStream proto, long fieldId, + long timestamp, long beginTime) { + // timestamps will only be written if they're after the begin time + // a grace period of one hour before the begin time is allowed because of rollover logic + final long rolloverGracePeriod = beginTime - ONE_HOUR_MS; + if (timestamp > rolloverGracePeriod) { + // time attributes are stored as an offset of the begin time (given offset) + proto.write(fieldId, getOffsetTimestamp(timestamp, beginTime)); + } + } + + static long getOffsetTimestamp(long timestamp, long offset) { + final long offsetTimestamp = timestamp - offset; + // add one ms to timestamp if 0 to ensure it's written to proto (default values are ignored) + return offsetTimestamp == 0 ? offsetTimestamp + 1 : offsetTimestamp; + } + private static void writeUsageStats(ProtoOutputStream proto, final long beginTime, final UsageStats stats) throws IllegalArgumentException { - // Time attributes stored as an offset of the beginTime. proto.write(UsageStatsObfuscatedProto.PACKAGE_TOKEN, stats.mPackageToken + 1); - proto.write(UsageStatsObfuscatedProto.LAST_TIME_ACTIVE_MS, stats.mLastTimeUsed - beginTime); + writeOffsetTimestamp(proto, UsageStatsObfuscatedProto.LAST_TIME_ACTIVE_MS, + stats.mLastTimeUsed, beginTime); proto.write(UsageStatsObfuscatedProto.TOTAL_TIME_ACTIVE_MS, stats.mTotalTimeInForeground); - proto.write(UsageStatsObfuscatedProto.LAST_TIME_SERVICE_USED_MS, - stats.mLastTimeForegroundServiceUsed - beginTime); + writeOffsetTimestamp(proto, UsageStatsObfuscatedProto.LAST_TIME_SERVICE_USED_MS, + stats.mLastTimeForegroundServiceUsed, beginTime); proto.write(UsageStatsObfuscatedProto.TOTAL_TIME_SERVICE_USED_MS, stats.mTotalTimeForegroundServiceUsed); - proto.write(UsageStatsObfuscatedProto.LAST_TIME_VISIBLE_MS, - stats.mLastTimeVisible - beginTime); + writeOffsetTimestamp(proto, UsageStatsObfuscatedProto.LAST_TIME_VISIBLE_MS, + stats.mLastTimeVisible, beginTime); proto.write(UsageStatsObfuscatedProto.TOTAL_TIME_VISIBLE_MS, stats.mTotalTimeVisible); proto.write(UsageStatsObfuscatedProto.APP_LAUNCH_COUNT, stats.mAppLaunchCount); try { @@ -361,8 +369,8 @@ final class UsageStatsProtoV2 { throws IllegalArgumentException { configStats.mConfiguration.dumpDebug(proto, IntervalStatsObfuscatedProto.Configuration.CONFIG); - proto.write(IntervalStatsObfuscatedProto.Configuration.LAST_TIME_ACTIVE_MS, - configStats.mLastTimeActive - statsBeginTime); + writeOffsetTimestamp(proto, IntervalStatsObfuscatedProto.Configuration.LAST_TIME_ACTIVE_MS, + configStats.mLastTimeActive, statsBeginTime); proto.write(IntervalStatsObfuscatedProto.Configuration.TOTAL_TIME_ACTIVE_MS, configStats.mTotalTimeActive); proto.write(IntervalStatsObfuscatedProto.Configuration.COUNT, configStats.mActivationCount); @@ -375,7 +383,7 @@ final class UsageStatsProtoV2 { if (event.mClassToken != PackagesTokenData.UNASSIGNED_TOKEN) { proto.write(EventObfuscatedProto.CLASS_TOKEN, event.mClassToken + 1); } - proto.write(EventObfuscatedProto.TIME_MS, event.mTimeStamp - statsBeginTime); + writeOffsetTimestamp(proto, EventObfuscatedProto.TIME_MS, event.mTimeStamp, statsBeginTime); proto.write(EventObfuscatedProto.FLAGS, event.mFlags); proto.write(EventObfuscatedProto.TYPE, event.mEventType); proto.write(EventObfuscatedProto.INSTANCE_ID, event.mInstanceId); @@ -489,10 +497,6 @@ final class UsageStatsProtoV2 { } break; case ProtoInputStream.NO_MORE_FIELDS: - // endTime not assigned, assume default value of 0 plus beginTime - if (stats.endTime == 0) { - stats.endTime = stats.beginTime; - } // update the begin and end time stamps for all usage stats final int usageStatsSize = stats.packageStatsObfuscated.size(); for (int i = 0; i < usageStatsSize; i++) { @@ -514,7 +518,8 @@ final class UsageStatsProtoV2 { public static void write(OutputStream out, IntervalStats stats) throws IOException, IllegalArgumentException { final ProtoOutputStream proto = new ProtoOutputStream(out); - proto.write(IntervalStatsObfuscatedProto.END_TIME_MS, stats.endTime - stats.beginTime); + proto.write(IntervalStatsObfuscatedProto.END_TIME_MS, + getOffsetTimestamp(stats.endTime, stats.beginTime)); proto.write(IntervalStatsObfuscatedProto.MAJOR_VERSION, stats.majorVersion); proto.write(IntervalStatsObfuscatedProto.MINOR_VERSION, stats.minorVersion); diff --git a/services/voiceinteraction/java/com/android/server/soundtrigger/SoundTriggerService.java b/services/voiceinteraction/java/com/android/server/soundtrigger/SoundTriggerService.java index 170bee841e74..42e2bbf08834 100644 --- a/services/voiceinteraction/java/com/android/server/soundtrigger/SoundTriggerService.java +++ b/services/voiceinteraction/java/com/android/server/soundtrigger/SoundTriggerService.java @@ -443,6 +443,8 @@ public class SoundTriggerService extends SystemService { enforceCallingPermission(Manifest.permission.MANAGE_SOUND_TRIGGER); + enforceDetectionPermissions(detectionService); + if (!isInitialized()) return STATUS_ERROR; if (DEBUG) { Slog.i(TAG, "startRecognition(): id = " + soundModelId); @@ -1532,6 +1534,16 @@ public class SoundTriggerService extends SystemService { } } + private void enforceDetectionPermissions(ComponentName detectionService) { + PackageManager packageManager = mContext.getPackageManager(); + String packageName = detectionService.getPackageName(); + if (packageManager.checkPermission(Manifest.permission.CAPTURE_AUDIO_HOTWORD, packageName) + != PackageManager.PERMISSION_GRANTED) { + throw new SecurityException(detectionService.getPackageName() + " does not have" + + " permission " + Manifest.permission.CAPTURE_AUDIO_HOTWORD); + } + } + //================================================================= // For logging diff --git a/telecomm/java/android/telecom/TelecomManager.java b/telecomm/java/android/telecom/TelecomManager.java index eb553d3e8af3..f2f14125ef6b 100644 --- a/telecomm/java/android/telecom/TelecomManager.java +++ b/telecomm/java/android/telecom/TelecomManager.java @@ -399,7 +399,7 @@ public class TelecomManager { * Optional extra for communicating the call network technology used by a * {@link android.telecom.Connection} to Telecom and InCallUI. * - * @see {@code NETWORK_TYPE_*} in {@link android.telephony.TelephonyManager}. + * {@code NETWORK_TYPE_*} in {@link android.telephony.TelephonyManager}. */ public static final String EXTRA_CALL_NETWORK_TYPE = "android.telecom.extra.CALL_NETWORK_TYPE"; diff --git a/telephony/java/android/telephony/TelephonyDisplayInfo.java b/telephony/java/android/telephony/TelephonyDisplayInfo.java index 36fa5cc8d343..3d5c6aad1042 100644 --- a/telephony/java/android/telephony/TelephonyDisplayInfo.java +++ b/telephony/java/android/telephony/TelephonyDisplayInfo.java @@ -62,8 +62,6 @@ public final class TelephonyDisplayInfo implements Parcelable { * {@link TelephonyManager#NETWORK_TYPE_LTE} network and has E-UTRA-NR Dual Connectivity(EN-DC) * capability or is currently connected to the secondary * {@link TelephonyManager#NETWORK_TYPE_NR} cellular network on millimeter wave bands. - * - * @see AccessNetworkConstants.NgranBands#FREQUENCY_RANGE_GROUP_2 */ public static final int OVERRIDE_NETWORK_TYPE_NR_NSA_MMWAVE = 4; diff --git a/telephony/java/android/telephony/ims/ImsMmTelManager.java b/telephony/java/android/telephony/ims/ImsMmTelManager.java index bd531daff6b9..43db1d9ce8a4 100644 --- a/telephony/java/android/telephony/ims/ImsMmTelManager.java +++ b/telephony/java/android/telephony/ims/ImsMmTelManager.java @@ -140,8 +140,7 @@ public class ImsMmTelManager implements RegistrationManager { } /** - * Receives IMS capability status updates from the ImsService. This information is also - * available via the {@see #isAvailable(int, int)} method below. + * Receives IMS capability status updates from the ImsService. * * @see #registerMmTelCapabilityCallback(Executor, CapabilityCallback) (CapabilityCallback) * @see #unregisterMmTelCapabilityCallback(CapabilityCallback) @@ -194,8 +193,6 @@ public class ImsMmTelManager implements RegistrationManager { * If unavailable, the feature is not able to support the unavailable capability at this * time. * - * This information can also be queried using the {@see #isAvailable(int, int)} API. - * * @param capabilities The new availability of the capabilities. */ public void onCapabilitiesStatusChanged( @@ -496,8 +493,7 @@ public class ImsMmTelManager implements RegistrationManager { /** * Registers a {@link CapabilityCallback} with the system, which will provide MmTel service * availability updates for the subscription specified in - * {@link ImsManager#getImsMmTelManager(int)}. The method {@see #isAvailable(int, int)} - * can also be used to query this information at any time. + * {@link ImsManager#getImsMmTelManager(int)}. * * Use {@link SubscriptionManager.OnSubscriptionsChangedListener} to listen to * subscription changed events and call @@ -639,7 +635,6 @@ public class ImsMmTelManager implements RegistrationManager { * @see android.telephony.CarrierConfigManager#KEY_HIDE_ENHANCED_4G_LTE_BOOL * @see android.telephony.CarrierConfigManager#KEY_ENHANCED_4G_LTE_ON_BY_DEFAULT_BOOL * @see android.telephony.CarrierConfigManager#KEY_CARRIER_VOLTE_AVAILABLE_BOOL - * @see #setAdvancedCallingSettingEnabled(boolean) * @throws IllegalArgumentException if the subscription associated with this operation is not * active (SIM is not inserted, ESIM inactive) or invalid. * @return true if the user's setting for advanced calling is enabled, false otherwise. @@ -858,7 +853,6 @@ public class ImsMmTelManager implements RegistrationManager { * @throws IllegalArgumentException if the subscription associated with this operation is not * active (SIM is not inserted, ESIM inactive) or invalid. * @return true if the user’s “Video Calling” setting is currently enabled. - * @see #setVtSettingEnabled(boolean) */ @RequiresPermission(anyOf = { android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, @@ -933,7 +927,6 @@ public class ImsMmTelManager implements RegistrationManager { * * @throws IllegalArgumentException if the subscription associated with this operation is not * active (SIM is not inserted, ESIM inactive) or invalid. - * @see #setVoWiFiSettingEnabled(boolean) */ @SuppressAutoDoc // No support for device / profile owner or carrier privileges (b/72967236). @RequiresPermission(anyOf = { @@ -1011,7 +1004,6 @@ public class ImsMmTelManager implements RegistrationManager { * active (SIM is not inserted, ESIM inactive) or invalid. * @return true if the user's setting for Voice over WiFi while roaming is enabled, false * if disabled. - * @see #setVoWiFiRoamingSettingEnabled(boolean) */ @SuppressAutoDoc // No support for device / profile owner or carrier privileges (b/72967236). @RequiresPermission(anyOf = { @@ -1130,7 +1122,6 @@ public class ImsMmTelManager implements RegistrationManager { * - {@link #WIFI_MODE_WIFI_ONLY} * - {@link #WIFI_MODE_CELLULAR_PREFERRED} * - {@link #WIFI_MODE_WIFI_PREFERRED} - * @see #setVoWiFiSettingEnabled(boolean) */ @SuppressAutoDoc // No support for device / profile owner or carrier privileges (b/72967236). @RequiresPermission(anyOf = { @@ -1315,7 +1306,6 @@ public class ImsMmTelManager implements RegistrationManager { * * @throws IllegalArgumentException if the subscription associated with this operation is not * active (SIM is not inserted, ESIM inactive) or invalid. - * @see android.telecom.TelecomManager#getCurrentTtyMode * @see android.telephony.CarrierConfigManager#KEY_CARRIER_VOLTE_TTY_SUPPORTED_BOOL */ @SuppressAutoDoc // No support for device / profile owner or carrier privileges (b/72967236). diff --git a/telephony/java/android/telephony/ims/RegistrationManager.java b/telephony/java/android/telephony/ims/RegistrationManager.java index 1dbaff5df802..e085dec10546 100644 --- a/telephony/java/android/telephony/ims/RegistrationManager.java +++ b/telephony/java/android/telephony/ims/RegistrationManager.java @@ -270,7 +270,7 @@ public interface RegistrationManager { * inactive subscription, it will result in a no-op. * * @param c The {@link RegistrationCallback} to be removed. - * @see SubscriptionManager.OnSubscriptionsChangedListener + * @see android.telephony.SubscriptionManager.OnSubscriptionsChangedListener * @see #registerImsRegistrationCallback(Executor, RegistrationCallback) */ @RequiresPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE) diff --git a/telephony/java/android/telephony/ims/feature/MmTelFeature.java b/telephony/java/android/telephony/ims/feature/MmTelFeature.java index 0b25d6f8275b..b3b7b200816a 100644 --- a/telephony/java/android/telephony/ims/feature/MmTelFeature.java +++ b/telephony/java/android/telephony/ims/feature/MmTelFeature.java @@ -218,13 +218,7 @@ public class MmTelFeature extends ImsFeature { * {@link MmTelCapabilities#CAPABILITY_TYPE_UT}, and * {@link MmTelCapabilities#CAPABILITY_TYPE_SMS}. * - * The capabilities of this MmTelFeature will be set by the framework and can be queried with - * {@see #queryCapabilityStatus()}. - * - * This MmTelFeature can then return the status of each of these capabilities (enabled or not) - * by sending a {@see #notifyCapabilitiesStatusChanged} callback to the framework. The current - * status can also be queried using {@see #queryCapabilityStatus()}. - * @see #isCapable(int) + * The capabilities of this MmTelFeature will be set by the framework. */ public static class MmTelCapabilities extends Capabilities { diff --git a/wifi/java/android/net/wifi/WpsInfo.java b/wifi/java/android/net/wifi/WpsInfo.java index 00cb243efcaa..689ace5bf5b9 100644 --- a/wifi/java/android/net/wifi/WpsInfo.java +++ b/wifi/java/android/net/wifi/WpsInfo.java @@ -22,7 +22,7 @@ import android.os.Parcelable; /** * A class representing Wi-Fi Protected Setup * - * {@see WifiP2pConfig} + * {@see android.net.wifi.p2p.WifiP2pConfig} */ public class WpsInfo implements Parcelable { |