diff options
128 files changed, 702 insertions, 698 deletions
diff --git a/api/current.txt b/api/current.txt index b17363892a8c..df9ea355bbc0 100644 --- a/api/current.txt +++ b/api/current.txt @@ -2716,7 +2716,8 @@ package android.accounts { method public java.lang.String getUserData(android.accounts.Account, java.lang.String); method public android.accounts.AccountManagerFuture<java.lang.Boolean> hasFeatures(android.accounts.Account, java.lang.String[], android.accounts.AccountManagerCallback<java.lang.Boolean>, android.os.Handler); method public void invalidateAuthToken(java.lang.String, java.lang.String); - method public static android.content.Intent newChooseAccountIntent(android.accounts.Account, java.util.ArrayList<android.accounts.Account>, java.lang.String[], boolean, java.lang.String, java.lang.String, java.lang.String[], android.os.Bundle); + method public static deprecated android.content.Intent newChooseAccountIntent(android.accounts.Account, java.util.ArrayList<android.accounts.Account>, java.lang.String[], boolean, java.lang.String, java.lang.String, java.lang.String[], android.os.Bundle); + method public static android.content.Intent newChooseAccountIntent(android.accounts.Account, java.util.List<android.accounts.Account>, java.lang.String[], java.lang.String, java.lang.String, java.lang.String[], android.os.Bundle); method public boolean notifyAccountAuthenticated(android.accounts.Account); method public java.lang.String peekAuthToken(android.accounts.Account, java.lang.String); method public deprecated android.accounts.AccountManagerFuture<java.lang.Boolean> removeAccount(android.accounts.Account, android.accounts.AccountManagerCallback<java.lang.Boolean>, android.os.Handler); @@ -26415,7 +26416,8 @@ package android.provider { field public static final java.lang.String ACTION_LOCATION_SOURCE_SETTINGS = "android.settings.LOCATION_SOURCE_SETTINGS"; field public static final java.lang.String ACTION_MANAGE_ALL_APPLICATIONS_SETTINGS = "android.settings.MANAGE_ALL_APPLICATIONS_SETTINGS"; field public static final java.lang.String ACTION_MANAGE_APPLICATIONS_SETTINGS = "android.settings.MANAGE_APPLICATIONS_SETTINGS"; - field public static final java.lang.String ACTION_MANAGE_OVERLAY_PERMISSION = "android.settings.MANAGE_OVERLAY_PERMISSION"; + field public static final java.lang.String ACTION_MANAGE_OVERLAY_PERMISSION = "android.settings.action.MANAGE_OVERLAY_PERMISSION"; + field public static final java.lang.String ACTION_MANAGE_WRITE_SETTINGS = "android.settings.action.MANAGE_WRITE_SETTINGS"; field public static final java.lang.String ACTION_MEMORY_CARD_SETTINGS = "android.settings.MEMORY_CARD_SETTINGS"; field public static final java.lang.String ACTION_NETWORK_OPERATOR_SETTINGS = "android.settings.NETWORK_OPERATOR_SETTINGS"; field public static final java.lang.String ACTION_NFCSHARING_SETTINGS = "android.settings.NFCSHARING_SETTINGS"; diff --git a/api/system-current.txt b/api/system-current.txt index 14fff8ac15ad..eb1c4313ce9a 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -2813,7 +2813,8 @@ package android.accounts { method public java.lang.String getUserData(android.accounts.Account, java.lang.String); method public android.accounts.AccountManagerFuture<java.lang.Boolean> hasFeatures(android.accounts.Account, java.lang.String[], android.accounts.AccountManagerCallback<java.lang.Boolean>, android.os.Handler); method public void invalidateAuthToken(java.lang.String, java.lang.String); - method public static android.content.Intent newChooseAccountIntent(android.accounts.Account, java.util.ArrayList<android.accounts.Account>, java.lang.String[], boolean, java.lang.String, java.lang.String, java.lang.String[], android.os.Bundle); + method public static deprecated android.content.Intent newChooseAccountIntent(android.accounts.Account, java.util.ArrayList<android.accounts.Account>, java.lang.String[], boolean, java.lang.String, java.lang.String, java.lang.String[], android.os.Bundle); + method public static android.content.Intent newChooseAccountIntent(android.accounts.Account, java.util.List<android.accounts.Account>, java.lang.String[], java.lang.String, java.lang.String, java.lang.String[], android.os.Bundle); method public boolean notifyAccountAuthenticated(android.accounts.Account); method public java.lang.String peekAuthToken(android.accounts.Account, java.lang.String); method public deprecated android.accounts.AccountManagerFuture<java.lang.Boolean> removeAccount(android.accounts.Account, android.accounts.AccountManagerCallback<java.lang.Boolean>, android.os.Handler); @@ -28471,7 +28472,8 @@ package android.provider { field public static final java.lang.String ACTION_LOCATION_SOURCE_SETTINGS = "android.settings.LOCATION_SOURCE_SETTINGS"; field public static final java.lang.String ACTION_MANAGE_ALL_APPLICATIONS_SETTINGS = "android.settings.MANAGE_ALL_APPLICATIONS_SETTINGS"; field public static final java.lang.String ACTION_MANAGE_APPLICATIONS_SETTINGS = "android.settings.MANAGE_APPLICATIONS_SETTINGS"; - field public static final java.lang.String ACTION_MANAGE_OVERLAY_PERMISSION = "android.settings.MANAGE_OVERLAY_PERMISSION"; + field public static final java.lang.String ACTION_MANAGE_OVERLAY_PERMISSION = "android.settings.action.MANAGE_OVERLAY_PERMISSION"; + field public static final java.lang.String ACTION_MANAGE_WRITE_SETTINGS = "android.settings.action.MANAGE_WRITE_SETTINGS"; field public static final java.lang.String ACTION_MEMORY_CARD_SETTINGS = "android.settings.MEMORY_CARD_SETTINGS"; field public static final java.lang.String ACTION_NETWORK_OPERATOR_SETTINGS = "android.settings.NETWORK_OPERATOR_SETTINGS"; field public static final java.lang.String ACTION_NFCSHARING_SETTINGS = "android.settings.NFCSHARING_SETTINGS"; diff --git a/core/java/android/accounts/AccountManager.java b/core/java/android/accounts/AccountManager.java index aa7692b1097f..7a209296a08c 100644 --- a/core/java/android/accounts/AccountManager.java +++ b/core/java/android/accounts/AccountManager.java @@ -43,6 +43,7 @@ import com.google.android.collect.Maps; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; import java.util.concurrent.Callable; import java.util.concurrent.CancellationException; @@ -2259,6 +2260,9 @@ public class AccountManager { } /** + * Deprecated in favor of {@link #newChooseAccountIntent(Account, List, String[], String, + * String, String[], Bundle)}. + * * Returns an intent to an {@link Activity} that prompts the user to choose from a list of * accounts. * The caller will then typically start the activity by calling @@ -2273,14 +2277,13 @@ public class AccountManager { * null, null, null);</pre> * @param selectedAccount if specified, indicates that the {@link Account} is the currently * selected one, according to the caller's definition of selected. - * @param allowableAccounts an optional {@link ArrayList} of accounts that are allowed to be + * @param allowableAccounts an optional {@link List} of accounts that are allowed to be * shown. If not specified then this field will not limit the displayed accounts. * @param allowableAccountTypes an optional string array of account types. These are used * both to filter the shown accounts and to filter the list of account types that are shown * when adding an account. If not specified then this field will not limit the displayed * account types when adding an account. - * @param alwaysPromptForAccount if set the account chooser screen is always shown, otherwise - * it is only shown when there is more than one account from which to choose + * @param alwaysPromptForAccount boolean that is ignored. * @param descriptionOverrideText if non-null this string is used as the description in the * accounts chooser screen rather than the default * @param addAccountAuthTokenType this string is passed as the {@link #addAccount} @@ -2291,7 +2294,9 @@ public class AccountManager { * parameter * @return an {@link Intent} that can be used to launch the ChooseAccount activity flow. */ - static public Intent newChooseAccountIntent(Account selectedAccount, + @Deprecated + static public Intent newChooseAccountIntent( + Account selectedAccount, ArrayList<Account> allowableAccounts, String[] allowableAccountTypes, boolean alwaysPromptForAccount, @@ -2299,20 +2304,67 @@ public class AccountManager { String addAccountAuthTokenType, String[] addAccountRequiredFeatures, Bundle addAccountOptions) { + return newChooseAccountIntent( + selectedAccount, + allowableAccounts, + allowableAccountTypes, + descriptionOverrideText, + addAccountAuthTokenType, + addAccountRequiredFeatures, + addAccountOptions); + } + + /** + * Returns an intent to an {@link Activity} that prompts the user to choose from a list of + * accounts. + * The caller will then typically start the activity by calling + * <code>startActivityForResult(intent, ...);</code>. + * <p> + * On success the activity returns a Bundle with the account name and type specified using + * keys {@link #KEY_ACCOUNT_NAME} and {@link #KEY_ACCOUNT_TYPE}. + * <p> + * The most common case is to call this with one account type, e.g.: + * <p> + * <pre> newChooseAccountIntent(null, null, new String[]{"com.google"}, null, null, null, + * null);</pre> + * @param selectedAccount if specified, indicates that the {@link Account} is the currently + * selected one, according to the caller's definition of selected. + * @param allowableAccounts an optional {@link List} of accounts that are allowed to be + * shown. If not specified then this field will not limit the displayed accounts. + * @param allowableAccountTypes an optional string array of account types. These are used + * both to filter the shown accounts and to filter the list of account types that are shown + * when adding an account. If not specified then this field will not limit the displayed + * account types when adding an account. + * @param descriptionOverrideText if non-null this string is used as the description in the + * accounts chooser screen rather than the default + * @param addAccountAuthTokenType this string is passed as the {@link #addAccount} + * authTokenType parameter + * @param addAccountRequiredFeatures this string array is passed as the {@link #addAccount} + * requiredFeatures parameter + * @param addAccountOptions This {@link Bundle} is passed as the {@link #addAccount} options + * parameter + * @return an {@link Intent} that can be used to launch the ChooseAccount activity flow. + */ + static public Intent newChooseAccountIntent( + Account selectedAccount, + List<Account> allowableAccounts, + String[] allowableAccountTypes, + String descriptionOverrideText, + String addAccountAuthTokenType, + String[] addAccountRequiredFeatures, + Bundle addAccountOptions) { Intent intent = new Intent(); ComponentName componentName = ComponentName.unflattenFromString( Resources.getSystem().getString(R.string.config_chooseTypeAndAccountActivity)); intent.setClassName(componentName.getPackageName(), componentName.getClassName()); intent.putExtra(ChooseTypeAndAccountActivity.EXTRA_ALLOWABLE_ACCOUNTS_ARRAYLIST, - allowableAccounts); + new ArrayList<Account>(allowableAccounts)); intent.putExtra(ChooseTypeAndAccountActivity.EXTRA_ALLOWABLE_ACCOUNT_TYPES_STRING_ARRAY, allowableAccountTypes); intent.putExtra(ChooseTypeAndAccountActivity.EXTRA_ADD_ACCOUNT_OPTIONS_BUNDLE, addAccountOptions); intent.putExtra(ChooseTypeAndAccountActivity.EXTRA_SELECTED_ACCOUNT, selectedAccount); - intent.putExtra(ChooseTypeAndAccountActivity.EXTRA_ALWAYS_PROMPT_FOR_ACCOUNT, - alwaysPromptForAccount); intent.putExtra(ChooseTypeAndAccountActivity.EXTRA_DESCRIPTION_TEXT_OVERRIDE, descriptionOverrideText); intent.putExtra(ChooseTypeAndAccountActivity.EXTRA_ADD_ACCOUNT_AUTH_TOKEN_TYPE_STRING, diff --git a/core/java/android/accounts/ChooseTypeAndAccountActivity.java b/core/java/android/accounts/ChooseTypeAndAccountActivity.java index c06b4622c571..133df2bfa16a 100644 --- a/core/java/android/accounts/ChooseTypeAndAccountActivity.java +++ b/core/java/android/accounts/ChooseTypeAndAccountActivity.java @@ -88,9 +88,10 @@ public class ChooseTypeAndAccountActivity extends Activity public static final String EXTRA_SELECTED_ACCOUNT = "selectedAccount"; /** - * If true then display the account selection list even if there is just - * one account to choose from. boolean. + * Deprecated. Providing this extra to {@link ChooseTypeAndAccountActivity} + * will have no effect. */ + @Deprecated public static final String EXTRA_ALWAYS_PROMPT_FOR_ACCOUNT = "alwaysPromptForAccount"; @@ -117,7 +118,6 @@ public class ChooseTypeAndAccountActivity extends Activity private Set<String> mSetOfRelevantAccountTypes; private String mSelectedAccountName = null; private boolean mSelectedAddNewAccount = false; - private boolean mAlwaysPromptForAccount = false; private String mDescriptionOverride; private ArrayList<Account> mAccounts; @@ -188,7 +188,6 @@ public class ChooseTypeAndAccountActivity extends Activity mSetOfAllowableAccounts = getAllowableAccountSet(intent); mSetOfRelevantAccountTypes = getReleventAccountTypes(intent); - mAlwaysPromptForAccount = intent.getBooleanExtra(EXTRA_ALWAYS_PROMPT_FOR_ACCOUNT, false); mDescriptionOverride = intent.getStringExtra(EXTRA_DESCRIPTION_TEXT_OVERRIDE); mAccounts = getAcceptableAccountChoices(AccountManager.get(this)); @@ -218,15 +217,6 @@ public class ChooseTypeAndAccountActivity extends Activity } else { startChooseAccountTypeActivity(); } - return; - } - - // if there is only one allowable account return it - if (!mAlwaysPromptForAccount && mAccounts.size() == 1) { - Account account = mAccounts.get(0); - super.onCreate(savedInstanceState); - setResultAndFinish(account.name, account.type); - return; } } diff --git a/core/java/android/content/pm/IntentFilterVerificationInfo.java b/core/java/android/content/pm/IntentFilterVerificationInfo.java index 96000dd84c6f..4dbac05f4580 100644 --- a/core/java/android/content/pm/IntentFilterVerificationInfo.java +++ b/core/java/android/content/pm/IntentFilterVerificationInfo.java @@ -26,7 +26,9 @@ import android.os.Parcelable; import android.text.TextUtils; import android.util.ArraySet; import android.util.Log; + import com.android.internal.util.XmlUtils; + import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; import org.xmlpull.v1.XmlSerializer; @@ -181,14 +183,28 @@ public final class IntentFilterVerificationInfo implements Parcelable { return getStatusStringFromValue(mMainStatus); } - public static String getStatusStringFromValue(int val) { - switch (val) { - case INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ASK : return "ask"; - case INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ALWAYS : return "always"; - case INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_NEVER : return "never"; + public static String getStatusStringFromValue(long val) { + StringBuilder sb = new StringBuilder(); + switch ((int)(val >> 32)) { + case INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ALWAYS: + sb.append("always : "); + sb.append(Long.toHexString(val & 0x00000000FFFFFFFF)); + break; + + case INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ASK: + sb.append("ask"); + break; + + case INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_NEVER: + sb.append("never"); + break; + + case INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_UNDEFINED: default: - case INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_UNDEFINED : return "undefined"; + sb.append("undefined"); + break; } + return sb.toString(); } @Override diff --git a/core/java/android/content/pm/PackageUserState.java b/core/java/android/content/pm/PackageUserState.java index 92b80550cb8f..9b28401f5938 100644 --- a/core/java/android/content/pm/PackageUserState.java +++ b/core/java/android/content/pm/PackageUserState.java @@ -38,6 +38,7 @@ public class PackageUserState { public ArraySet<String> enabledComponents; public int domainVerificationStatus; + public int appLinkGeneration; public PackageUserState() { installed = true; @@ -60,5 +61,6 @@ public class PackageUserState { ? new ArraySet<>(o.enabledComponents) : null; blockUninstall = o.blockUninstall; domainVerificationStatus = o.domainVerificationStatus; + appLinkGeneration = o.appLinkGeneration; } } diff --git a/core/java/android/content/res/ColorStateList.java b/core/java/android/content/res/ColorStateList.java index 579634f1290a..19921b548aac 100644 --- a/core/java/android/content/res/ColorStateList.java +++ b/core/java/android/content/res/ColorStateList.java @@ -603,7 +603,7 @@ public class ColorStateList implements Parcelable { * @hide only for resource preloading */ public ConstantState<ColorStateList> getConstantState() { - if (mFactory != null) { + if (mFactory == null) { mFactory = new ColorStateListFactory(this); } return mFactory; diff --git a/core/java/android/content/res/Resources.java b/core/java/android/content/res/Resources.java index 9a99a46d289b..731903c158be 100644 --- a/core/java/android/content/res/Resources.java +++ b/core/java/android/content/res/Resources.java @@ -1918,6 +1918,7 @@ public class Resources { other.mResId = mResId; other.mForce = mForce; other.mCount = mCount; + other.mHashCode = mHashCode; return other; } } diff --git a/core/java/android/hardware/SystemSensorManager.java b/core/java/android/hardware/SystemSensorManager.java index e7deae8a703c..30cdfd322c04 100644 --- a/core/java/android/hardware/SystemSensorManager.java +++ b/core/java/android/hardware/SystemSensorManager.java @@ -123,7 +123,10 @@ public class SystemSensorManager extends SensorManager { SensorEventQueue queue = mSensorListeners.get(listener); if (queue == null) { Looper looper = (handler != null) ? handler.getLooper() : mMainLooper; - queue = new SensorEventQueue(listener, looper, this); + final String fullClassName = listener.getClass().getEnclosingClass() != null ? + listener.getClass().getEnclosingClass().getName() : + listener.getClass().getName(); + queue = new SensorEventQueue(listener, looper, this, fullClassName); if (!queue.addSensor(sensor, delayUs, maxBatchReportLatencyUs)) { queue.dispose(); return false; @@ -166,12 +169,17 @@ public class SystemSensorManager extends SensorManager { protected boolean requestTriggerSensorImpl(TriggerEventListener listener, Sensor sensor) { if (sensor == null) throw new IllegalArgumentException("sensor cannot be null"); + if (listener == null) throw new IllegalArgumentException("listener cannot be null"); + if (sensor.getReportingMode() != Sensor.REPORTING_MODE_ONE_SHOT) return false; synchronized (mTriggerListeners) { TriggerEventQueue queue = mTriggerListeners.get(listener); if (queue == null) { - queue = new TriggerEventQueue(listener, mMainLooper, this); + final String fullClassName = listener.getClass().getEnclosingClass() != null ? + listener.getClass().getEnclosingClass().getName() : + listener.getClass().getName(); + queue = new TriggerEventQueue(listener, mMainLooper, this, fullClassName); if (!queue.addSensor(sensor, 0, 0)) { queue.dispose(); return false; @@ -234,7 +242,8 @@ public class SystemSensorManager extends SensorManager { } // Initialize a client for data_injection. if (mInjectEventQueue == null) { - mInjectEventQueue = new InjectEventQueue(mMainLooper, this); + mInjectEventQueue = new InjectEventQueue(mMainLooper, this, + mContext.getPackageName()); } } else { // If data injection is being disabled clean up the native resources. @@ -296,10 +305,11 @@ public class SystemSensorManager extends SensorManager { protected static final int OPERATING_MODE_NORMAL = 0; protected static final int OPERATING_MODE_DATA_INJECTION = 1; - BaseEventQueue(Looper looper, SystemSensorManager manager, int mode) { + BaseEventQueue(Looper looper, SystemSensorManager manager, int mode, String packageName) { + if (packageName == null) packageName = ""; nSensorEventQueue = nativeInitBaseEventQueue(manager.mNativeInstance, new WeakReference<>(this), looper.getQueue(), mScratch, - manager.mContext.getPackageName(), mode, manager.mContext.getOpPackageName()); + packageName, mode, manager.mContext.getOpPackageName()); mCloseGuard.open("dispose"); mManager = manager; } @@ -419,8 +429,8 @@ public class SystemSensorManager extends SensorManager { private final SparseArray<SensorEvent> mSensorsEvents = new SparseArray<SensorEvent>(); public SensorEventQueue(SensorEventListener listener, Looper looper, - SystemSensorManager manager) { - super(looper, manager, OPERATING_MODE_NORMAL); + SystemSensorManager manager, String packageName) { + super(looper, manager, OPERATING_MODE_NORMAL, packageName); mListener = listener; } @@ -486,8 +496,8 @@ public class SystemSensorManager extends SensorManager { private final SparseArray<TriggerEvent> mTriggerEvents = new SparseArray<TriggerEvent>(); public TriggerEventQueue(TriggerEventListener listener, Looper looper, - SystemSensorManager manager) { - super(looper, manager, OPERATING_MODE_NORMAL); + SystemSensorManager manager, String packageName) { + super(looper, manager, OPERATING_MODE_NORMAL, packageName); mListener = listener; } @@ -540,8 +550,8 @@ public class SystemSensorManager extends SensorManager { } final class InjectEventQueue extends BaseEventQueue { - public InjectEventQueue(Looper looper, SystemSensorManager manager) { - super(looper, manager, OPERATING_MODE_DATA_INJECTION); + public InjectEventQueue(Looper looper, SystemSensorManager manager, String packageName) { + super(looper, manager, OPERATING_MODE_DATA_INJECTION, packageName); } int injectSensorData(int handle, float[] values,int accuracy, long timestamp) { diff --git a/core/java/android/hardware/camera2/CameraMetadata.java b/core/java/android/hardware/camera2/CameraMetadata.java index c8ae5d487ebd..c36683bfb9c1 100644 --- a/core/java/android/hardware/camera2/CameraMetadata.java +++ b/core/java/android/hardware/camera2/CameraMetadata.java @@ -1935,21 +1935,21 @@ public abstract class CameraMetadata<TKey> { /** * <p>Same as FACE_PRIORITY scene mode, except that the camera - * device will choose higher sensivity values ({@link CaptureRequest#SENSOR_SENSITIVITY android.sensor.sensitivity}) + * device will choose higher sensitivity values ({@link CaptureRequest#SENSOR_SENSITIVITY android.sensor.sensitivity}) * under low light conditions.</p> * <p>The camera device may be tuned to expose the images in a reduced * sensitivity range to produce the best quality images. For example, * if the {@link CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE android.sensor.info.sensitivityRange} gives range of [100, 1600], * the camera device auto-exposure routine tuning process may limit the actual - * exposure sensivity range to [100, 1200] to ensure that the noise level isn't - * exessive to compromise the image quality. Under this situation, the image under + * exposure sensitivity range to [100, 1200] to ensure that the noise level isn't + * exessive in order to preserve the image quality. Under this situation, the image under * low light may be under-exposed when the sensor max exposure time (bounded by the * {@link CaptureRequest#CONTROL_AE_TARGET_FPS_RANGE android.control.aeTargetFpsRange} when {@link CaptureRequest#CONTROL_AE_MODE android.control.aeMode} is one of the - * ON_* modes) and effecitve max sensitivity are reached. This scene mode allows the + * ON_* modes) and effective max sensitivity are reached. This scene mode allows the * camera device auto-exposure routine to increase the sensitivity up to the max * sensitivity specified by {@link CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE android.sensor.info.sensitivityRange} when the scene is too * dark and the max exposure time is reached. The captured images may be noisier - * compared with the images captured in normal FACE_PRIORITY mode, therefore, it is + * compared with the images captured in normal FACE_PRIORITY mode; therefore, it is * recommended that the application only use this scene mode when it is capable of * reducing the noise level of the captured images.</p> * <p>Unlike the other scene modes, {@link CaptureRequest#CONTROL_AE_MODE android.control.aeMode}, diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java index 4e1375891337..fff355b452ce 100644 --- a/core/java/android/provider/Settings.java +++ b/core/java/android/provider/Settings.java @@ -574,7 +574,22 @@ public final class Settings { */ @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) public static final String ACTION_MANAGE_OVERLAY_PERMISSION = - "android.settings.MANAGE_OVERLAY_PERMISSION"; + "android.settings.action.MANAGE_OVERLAY_PERMISSION"; + + /** + * Activity Action: Show settings to toggle apps' capablity to + * to read/write system settings. + * <p> + * In some cases, a matching Activity may not exist, so ensure you + * safeguard against this. + * <p> + * Input: Nothing. + * <p> + * Output: Nothing. + */ + @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) + public static final String ACTION_MANAGE_WRITE_SETTINGS = + "android.settings.action.MANAGE_WRITE_SETTINGS"; /** * Activity Action: Show screen of details about a particular application. diff --git a/core/java/android/text/Html.java b/core/java/android/text/Html.java index a55a08cc73e2..dc1d6f6229c1 100644 --- a/core/java/android/text/Html.java +++ b/core/java/android/text/Html.java @@ -137,7 +137,12 @@ public class Html { } /** - * Returns an HTML representation of the provided Spanned text. + * Returns an HTML representation of the provided Spanned text. A best effort is + * made to add HTML tags corresponding to spans. Also note that HTML metacharacters + * (such as "<" and "&") within the input text are escaped. + * + * @param text input text to convert + * @return string containing input converted to HTML */ public static String toHtml(Spanned text) { StringBuilder out = new StringBuilder(); diff --git a/core/java/android/text/SpannableStringInternal.java b/core/java/android/text/SpannableStringInternal.java index d114d3241b4d..5c5deb45c391 100644 --- a/core/java/android/text/SpannableStringInternal.java +++ b/core/java/android/text/SpannableStringInternal.java @@ -214,10 +214,6 @@ import java.lang.reflect.Array; Object ret1 = null; for (int i = 0; i < spanCount; i++) { - if (kind != null && !kind.isInstance(spans[i])) { - continue; - } - int spanStart = data[i * COLUMNS + START]; int spanEnd = data[i * COLUMNS + END]; @@ -237,6 +233,11 @@ import java.lang.reflect.Array; } } + // verify span class as late as possible, since it is expensive + if (kind != null && !kind.isInstance(spans[i])) { + continue; + } + if (count == 0) { ret1 = spans[i]; count++; diff --git a/core/java/android/widget/AppSecurityPermissions.java b/core/java/android/widget/AppSecurityPermissions.java index d1af9dc8a255..e3ce6f2e7469 100644 --- a/core/java/android/widget/AppSecurityPermissions.java +++ b/core/java/android/widget/AppSecurityPermissions.java @@ -61,8 +61,6 @@ import java.util.Set; */ public class AppSecurityPermissions { - public static final int WHICH_PERSONAL = 1<<0; - public static final int WHICH_DEVICE = 1<<1; public static final int WHICH_NEW = 1<<2; public static final int WHICH_ALL = 0xffff; @@ -75,7 +73,8 @@ public class AppSecurityPermissions { = new HashMap<String, MyPermissionGroupInfo>(); private final List<MyPermissionGroupInfo> mPermGroupsList = new ArrayList<MyPermissionGroupInfo>(); - private final PermissionGroupInfoComparator mPermGroupComparator = new PermissionGroupInfoComparator(); + private final PermissionGroupInfoComparator mPermGroupComparator = + new PermissionGroupInfoComparator(); private final PermissionInfoComparator mPermComparator = new PermissionInfoComparator(); private final List<MyPermissionInfo> mPermsList = new ArrayList<MyPermissionInfo>(); private final CharSequence mNewPermPrefix; @@ -85,8 +84,6 @@ public class AppSecurityPermissions { CharSequence mLabel; final ArrayList<MyPermissionInfo> mNewPermissions = new ArrayList<MyPermissionInfo>(); - final ArrayList<MyPermissionInfo> mPersonalPermissions = new ArrayList<MyPermissionInfo>(); - final ArrayList<MyPermissionInfo> mDevicePermissions = new ArrayList<MyPermissionInfo>(); final ArrayList<MyPermissionInfo> mAllPermissions = new ArrayList<MyPermissionInfo>(); MyPermissionGroupInfo(PermissionInfo perm) { @@ -352,13 +349,6 @@ public class AppSecurityPermissions { } for (int i=0; i<strList.length; i++) { String permName = strList[i]; - // If we are only looking at an existing app, then we only - // care about permissions that have actually been granted to it. - if (installedPkgInfo != null && info != installedPkgInfo) { - if ((flagsList[i]&PackageInfo.REQUESTED_PERMISSION_GRANTED) == 0) { - continue; - } - } try { PermissionInfo tmpPermInfo = mPm.getPermissionInfo(permName, 0); if (tmpPermInfo == null) { @@ -431,10 +421,6 @@ public class AppSecurityPermissions { private List<MyPermissionInfo> getPermissionList(MyPermissionGroupInfo grp, int which) { if (which == WHICH_NEW) { return grp.mNewPermissions; - } else if (which == WHICH_PERSONAL) { - return grp.mPersonalPermissions; - } else if (which == WHICH_DEVICE) { - return grp.mDevicePermissions; } else { return grp.mAllPermissions; } @@ -577,15 +563,8 @@ public class AppSecurityPermissions { private static class PermissionGroupInfoComparator implements Comparator<MyPermissionGroupInfo> { private final Collator sCollator = Collator.getInstance(); - PermissionGroupInfoComparator() { - } + @Override public final int compare(MyPermissionGroupInfo a, MyPermissionGroupInfo b) { - if (((a.flags^b.flags)&PermissionGroupInfo.FLAG_PERSONAL_INFO) != 0) { - return ((a.flags&PermissionGroupInfo.FLAG_PERSONAL_INFO) != 0) ? -1 : 1; - } - if (a.priority != b.priority) { - return a.priority > b.priority ? -1 : 1; - } return sCollator.compare(a.mLabel, b.mLabel); } } @@ -628,11 +607,6 @@ public class AppSecurityPermissions { if (pInfo.mNew) { addPermToList(group.mNewPermissions, pInfo); } - if ((group.flags&PermissionGroupInfo.FLAG_PERSONAL_INFO) != 0) { - addPermToList(group.mPersonalPermissions, pInfo); - } else { - addPermToList(group.mDevicePermissions, pInfo); - } } } } @@ -652,12 +626,5 @@ public class AppSecurityPermissions { mPermGroupsList.add(pgrp); } Collections.sort(mPermGroupsList, mPermGroupComparator); - if (localLOGV) { - for (MyPermissionGroupInfo grp : mPermGroupsList) { - Log.i(TAG, "Group " + grp.name + " personal=" - + ((grp.flags&PermissionGroupInfo.FLAG_PERSONAL_INFO) != 0) - + " priority=" + grp.priority); - } - } } } diff --git a/core/java/android/widget/Editor.java b/core/java/android/widget/Editor.java index 96e033a3231b..d897f49dbffd 100644 --- a/core/java/android/widget/Editor.java +++ b/core/java/android/widget/Editor.java @@ -16,6 +16,12 @@ package android.widget; +import java.text.BreakIterator; +import java.util.Arrays; +import java.util.Comparator; +import java.util.HashMap; +import java.util.List; + import android.R; import android.annotation.Nullable; import android.app.PendingIntent; @@ -106,12 +112,6 @@ import com.android.internal.util.GrowingArrayUtils; import com.android.internal.util.Preconditions; import com.android.internal.widget.EditableInputConnection; -import java.text.BreakIterator; -import java.util.Arrays; -import java.util.Comparator; -import java.util.HashMap; -import java.util.List; - /** * Helper class used by TextView to handle editable text views. @@ -127,6 +127,7 @@ public class Editor { private static int DRAG_SHADOW_MAX_TEXT_LENGTH = 20; private static final float LINE_SLOP_MULTIPLIER_FOR_HANDLEVIEWS = 0.5f; private static final int UNSET_X_VALUE = -1; + private static final int UNSET_LINE = -1; // Tag used when the Editor maintains its own separate UndoManager. private static final String UNDO_OWNER_TAG = "Editor"; @@ -3510,7 +3511,11 @@ public class Editor { // Minimum touch target size for handles private int mMinSize; // Indicates the line of text that the handle is on. - protected int mPrevLine = -1; + protected int mPrevLine = UNSET_LINE; + // Indicates the line of text that the user was touching. This can differ from mPrevLine + // when selecting text when the handles jump to the end / start of words which may be on + // a different line. + protected int mPreviousLineTouched = UNSET_LINE; public HandleView(Drawable drawableLtr, Drawable drawableRtl) { super(mTextView.getContext()); @@ -3801,6 +3806,7 @@ public class Editor { mLastParentX = positionListener.getPositionX(); mLastParentY = positionListener.getPositionY(); mIsDragging = true; + mPreviousLineTouched = UNSET_LINE; break; } @@ -4015,8 +4021,12 @@ public class Editor { Layout layout = mTextView.getLayout(); int offset; if (layout != null) { - int currLine = getCurrentLineAdjustedForSlop(layout, mPrevLine, y); + if (mPreviousLineTouched == UNSET_LINE) { + mPreviousLineTouched = mTextView.getLineAtCoordinate(y); + } + int currLine = getCurrentLineAdjustedForSlop(layout, mPreviousLineTouched, y); offset = mTextView.getOffsetAtCoordinate(currLine, x); + mPreviousLineTouched = currLine; } else { offset = mTextView.getOffsetForPosition(x, y); } @@ -4092,9 +4102,13 @@ public class Editor { return; } + if (mPreviousLineTouched == UNSET_LINE) { + mPreviousLineTouched = mTextView.getLineAtCoordinate(y); + } + boolean positionCursor = false; final int selectionEnd = mTextView.getSelectionEnd(); - int currLine = getCurrentLineAdjustedForSlop(layout, mPrevLine, y); + int currLine = getCurrentLineAdjustedForSlop(layout, mPreviousLineTouched, y); int initialOffset = mTextView.getOffsetAtCoordinate(currLine, x); if (initialOffset >= selectionEnd) { @@ -4138,9 +4152,9 @@ public class Editor { } else { final float xDiff = x - mPrevX; if (atRtl) { - isExpanding = xDiff > 0 || currLine > mPrevLine; + isExpanding = xDiff > 0 || currLine > mPreviousLineTouched; } else { - isExpanding = xDiff < 0 || currLine < mPrevLine; + isExpanding = xDiff < 0 || currLine < mPreviousLineTouched; } } @@ -4204,6 +4218,7 @@ public class Editor { offset = getNextCursorOffset(selectionEnd, false); mTouchWordDelta = 0.0f; } + mPreviousLineTouched = currLine; positionAtCursorOffset(offset, false); } mPrevX = x; @@ -4218,8 +4233,9 @@ public class Editor { @Override public boolean onTouchEvent(MotionEvent event) { boolean superResult = super.onTouchEvent(event); - if (event.getActionMasked() == MotionEvent.ACTION_UP) { - // Reset the touch word offset when the user has lifted their finger. + if (event.getActionMasked() == MotionEvent.ACTION_DOWN) { + // Reset the touch word offset and x value when the user + // re-engages the handle. mTouchWordDelta = 0.0f; mPrevX = UNSET_X_VALUE; } @@ -4280,9 +4296,13 @@ public class Editor { return; } + if (mPreviousLineTouched == UNSET_LINE) { + mPreviousLineTouched = mTextView.getLineAtCoordinate(y); + } + boolean positionCursor = false; final int selectionStart = mTextView.getSelectionStart(); - int currLine = getCurrentLineAdjustedForSlop(layout, mPrevLine, y); + int currLine = getCurrentLineAdjustedForSlop(layout, mPreviousLineTouched, y); int initialOffset = mTextView.getOffsetAtCoordinate(currLine, x); if (initialOffset <= selectionStart) { @@ -4326,9 +4346,9 @@ public class Editor { } else { final float xDiff = x - mPrevX; if (atRtl) { - isExpanding = xDiff < 0 || currLine < mPrevLine; + isExpanding = xDiff < 0 || currLine < mPreviousLineTouched; } else { - isExpanding = xDiff > 0 || currLine > mPrevLine; + isExpanding = xDiff > 0 || currLine > mPreviousLineTouched; } } @@ -4392,6 +4412,7 @@ public class Editor { offset = getNextCursorOffset(selectionStart, true); mTouchWordDelta = 0.0f; } + mPreviousLineTouched = currLine; positionAtCursorOffset(offset, false); } mPrevX = x; @@ -4406,8 +4427,9 @@ public class Editor { @Override public boolean onTouchEvent(MotionEvent event) { boolean superResult = super.onTouchEvent(event); - if (event.getActionMasked() == MotionEvent.ACTION_UP) { - // Reset the touch word offset when the user has lifted their finger. + if (event.getActionMasked() == MotionEvent.ACTION_DOWN) { + // Reset the touch word offset and x value when the user + // re-engages the handle. mTouchWordDelta = 0.0f; mPrevX = UNSET_X_VALUE; } @@ -4416,10 +4438,16 @@ public class Editor { } private int getCurrentLineAdjustedForSlop(Layout layout, int prevLine, float y) { + final int trueLine = mTextView.getLineAtCoordinate(y); if (layout == null || prevLine > layout.getLineCount() || layout.getLineCount() <= 0 || prevLine < 0) { // Invalid parameters, just return whatever line is at y. - return mTextView.getLineAtCoordinate(y); + return trueLine; + } + + if (Math.abs(trueLine - prevLine) >= 2) { + // Only stick to lines if we're within a line of the previous selection. + return trueLine; } final float verticalOffset = mTextView.viewportToContentVerticalOffset(); diff --git a/core/java/com/android/internal/logging/MetricsConstants.java b/core/java/com/android/internal/logging/MetricsConstants.java index 8c6b79ba7c1d..7278d5c07f00 100644 --- a/core/java/com/android/internal/logging/MetricsConstants.java +++ b/core/java/com/android/internal/logging/MetricsConstants.java @@ -22,6 +22,7 @@ package com.android.internal.logging; */ public interface MetricsConstants { // These constants must match those in the analytic pipeline, do not edit. + // Add temporary values to the top of MetricsLogger instead. public static final int VIEW_UNKNOWN = 0; public static final int MAIN_SETTINGS = 1; public static final int ACCESSIBILITY = 2; @@ -229,6 +230,29 @@ public interface MetricsConstants { public static final int ACTION_NOTE_CONTROLS = 204; public static final int ACTION_NOTE_INFO = 205; public static final int ACTION_APP_NOTE_SETTINGS = 206; + public static final int VOLUME_DIALOG = 207; + public static final int VOLUME_DIALOG_DETAILS = 208; + public static final int ACTION_VOLUME_SLIDER = 209; + public static final int ACTION_VOLUME_STREAM = 210; + public static final int ACTION_VOLUME_KEY = 211; + public static final int ACTION_VOLUME_ICON = 212; + public static final int ACTION_RINGER_MODE = 213; + public static final int ACTION_ACTIVITY_CHOOSER_SHOWN = 214; + public static final int ACTION_ACTIVITY_CHOOSER_PICKED_APP_TARGET = 215; + public static final int ACTION_ACTIVITY_CHOOSER_PICKED_SERVICE_TARGET = 216; + public static final int ACTION_ACTIVITY_CHOOSER_PICKED_STANDARD_TARGET = 217; + public static final int ACTION_BRIGHTNESS = 218; + public static final int ACTION_BRIGHTNESS_AUTO = 219; + public static final int BRIGHTNESS_DIALOG = 220; + public static final int SYSTEM_ALERT_WINDOW_APPS = 221; + public static final int DREAMING = 222; + public static final int DOZING = 223; + public static final int OVERVIEW_ACTIVITY = 224; + public static final int ABOUT_LEGAL_SETTINGS = 225; + public static final int ACTION_SEARCH_RESULTS = 226; + + // These constants must match those in the analytic pipeline, do not edit. + // Add temporary values to the top of MetricsLogger instead. //aliases public static final int DEVICEINFO_STORAGE = DEVICEINFO_MEMORY; diff --git a/core/java/com/android/internal/logging/MetricsLogger.java b/core/java/com/android/internal/logging/MetricsLogger.java index 66fa8fc285f2..cbe535fb74fd 100644 --- a/core/java/com/android/internal/logging/MetricsLogger.java +++ b/core/java/com/android/internal/logging/MetricsLogger.java @@ -26,25 +26,8 @@ import android.view.View; * @hide */ public class MetricsLogger implements MetricsConstants { - public static final int VOLUME_DIALOG = 207; - public static final int VOLUME_DIALOG_DETAILS = 208; - public static final int ACTION_VOLUME_SLIDER = 209; - public static final int ACTION_VOLUME_STREAM = 210; - public static final int ACTION_VOLUME_KEY = 211; - public static final int ACTION_VOLUME_ICON = 212; - public static final int ACTION_RINGER_MODE = 213; - public static final int ACTION_ACTIVITY_CHOOSER_SHOWN = 214; - public static final int ACTION_ACTIVITY_CHOOSER_PICKED_APP_TARGET = 215; - public static final int ACTION_ACTIVITY_CHOOSER_PICKED_SERVICE_TARGET = 216; - public static final int ACTION_ACTIVITY_CHOOSER_PICKED_STANDARD_TARGET = 217; - public static final int ACTION_BRIGHTNESS = 218; - public static final int ACTION_BRIGHTNESS_AUTO = 219; - public static final int BRIGHTNESS_DIALOG = 220; - public static final int SYSTEM_ALERT_WINDOW_APPS = 221; - public static final int DREAMING = 222; - public static final int DOZING = 223; - public static final int OVERVIEW_ACTIVITY = 224; // Temporary constants go here, to await migration to MetricsConstants. + // next value is 227; public static void visible(Context context, int category) throws IllegalArgumentException { if (Build.IS_DEBUGGABLE && category == VIEW_UNKNOWN) { diff --git a/core/java/com/android/internal/os/storage/ExternalStorageFormatter.java b/core/java/com/android/internal/os/storage/ExternalStorageFormatter.java deleted file mode 100644 index 0a01ae9234f3..000000000000 --- a/core/java/com/android/internal/os/storage/ExternalStorageFormatter.java +++ /dev/null @@ -1,146 +0,0 @@ -package com.android.internal.os.storage; - -import android.app.ProgressDialog; -import android.app.Service; -import android.content.ComponentName; -import android.content.Context; -import android.content.Intent; -import android.os.IBinder; -import android.os.PowerManager; -import android.os.storage.StorageManager; -import android.os.storage.StorageVolume; -import android.util.Slog; -import android.view.WindowManager; -import android.widget.Toast; - -import com.android.internal.R; - -/** - * Takes care of unmounting and formatting external storage. - * - * @deprecated Please use {@link Intent#ACTION_MASTER_CLEAR} broadcast with extra - * {@link Intent#EXTRA_WIPE_EXTERNAL_STORAGE} to wipe and factory reset, or call - * {@link StorageManager#wipeAdoptableDisks} directly to format external storages. - */ -public class ExternalStorageFormatter extends Service { - static final String TAG = "ExternalStorageFormatter"; - - public static final String FORMAT_ONLY = "com.android.internal.os.storage.FORMAT_ONLY"; - public static final String FORMAT_AND_FACTORY_RESET = "com.android.internal.os.storage.FORMAT_AND_FACTORY_RESET"; - - public static final String EXTRA_ALWAYS_RESET = "always_reset"; - - public static final ComponentName COMPONENT_NAME - = new ComponentName("android", ExternalStorageFormatter.class.getName()); - - private StorageManager mStorageManager; - - private PowerManager.WakeLock mWakeLock; - - private ProgressDialog mProgressDialog = null; - - private boolean mFactoryReset = false; - private boolean mAlwaysReset = false; - private String mReason = null; - - @Override - public void onCreate() { - super.onCreate(); - - mStorageManager = getSystemService(StorageManager.class); - - mWakeLock = ((PowerManager)getSystemService(Context.POWER_SERVICE)) - .newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "ExternalStorageFormatter"); - mWakeLock.acquire(); - } - - @Override - public int onStartCommand(Intent intent, int flags, int startId) { - if (FORMAT_AND_FACTORY_RESET.equals(intent.getAction())) { - mFactoryReset = true; - } - if (intent.getBooleanExtra(EXTRA_ALWAYS_RESET, false)) { - mAlwaysReset = true; - } - - mReason = intent.getStringExtra(Intent.EXTRA_REASON); - StorageVolume userVol = intent.getParcelableExtra(StorageVolume.EXTRA_STORAGE_VOLUME); - if (userVol == null) { - Slog.w(TAG, "Missing explicit storage volume; assuming default"); - userVol = mStorageManager.getPrimaryVolume(); - } - - final String volumeId = userVol.getId(); - - mProgressDialog = new ProgressDialog(this); - mProgressDialog.setIndeterminate(true); - mProgressDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT); - mProgressDialog.setMessage(getText(R.string.progress_unmounting)); - mProgressDialog.show(); - - new FormatTask(volumeId).start(); - - return Service.START_REDELIVER_INTENT; - } - - private class FormatTask extends Thread { - private final String mVolumeId; - - public FormatTask(String volumeId) { - mVolumeId = volumeId; - } - - @Override - public void run() { - boolean success = false; - try { - mStorageManager.format(mVolumeId); - success = true; - } catch (Exception e) { - Slog.w(TAG, "Failed to format", e); - Toast.makeText(ExternalStorageFormatter.this, - R.string.format_error, Toast.LENGTH_LONG).show(); - } - if (success) { - if (mFactoryReset) { - Intent intent = new Intent(Intent.ACTION_MASTER_CLEAR); - intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND); - intent.putExtra(Intent.EXTRA_REASON, mReason); - sendBroadcast(intent); - // Intent handling is asynchronous -- assume it will happen soon. - stopSelf(); - return; - } - } - // If we didn't succeed, or aren't doing a full factory - // reset, then it is time to remount the storage. - if (!success && mAlwaysReset) { - Intent intent = new Intent(Intent.ACTION_MASTER_CLEAR); - intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND); - intent.putExtra(Intent.EXTRA_REASON, mReason); - sendBroadcast(intent); - } else { - try { - mStorageManager.mount(mVolumeId); - } catch (Exception e) { - Slog.w(TAG, "Failed to mount", e); - } - } - stopSelf(); - } - } - - @Override - public void onDestroy() { - if (mProgressDialog != null) { - mProgressDialog.dismiss(); - } - mWakeLock.release(); - super.onDestroy(); - } - - @Override - public IBinder onBind(Intent intent) { - return null; - } -} diff --git a/core/jni/android/graphics/Paint.cpp b/core/jni/android/graphics/Paint.cpp index bff1885bc07b..c66cdfec7d1c 100644 --- a/core/jni/android/graphics/Paint.cpp +++ b/core/jni/android/graphics/Paint.cpp @@ -1065,12 +1065,11 @@ public: jint contextEnd, jboolean isRtl, jint offset) { const Paint* paint = reinterpret_cast<Paint*>(paintHandle); TypefaceImpl* typeface = reinterpret_cast<TypefaceImpl*>(typefaceHandle); - // TODO performance: optimize JNI array access - jchar* textArray = env->GetCharArrayElements(text, NULL); + jchar* textArray = (jchar*) env->GetPrimitiveArrayCritical(text, NULL); jfloat result = doRunAdvance(paint, typeface, textArray + contextStart, start - contextStart, end - start, contextEnd - contextStart, isRtl, offset - contextStart); - env->ReleaseCharArrayElements(text, textArray, JNI_ABORT); + env->ReleasePrimitiveArrayCritical(text, textArray, JNI_ABORT); return result; } @@ -1086,12 +1085,11 @@ public: jint contextEnd, jboolean isRtl, jfloat advance) { const Paint* paint = reinterpret_cast<Paint*>(paintHandle); TypefaceImpl* typeface = reinterpret_cast<TypefaceImpl*>(typefaceHandle); - // TODO performance: optimize JNI array access - jchar* textArray = env->GetCharArrayElements(text, NULL); + jchar* textArray = (jchar*) env->GetPrimitiveArrayCritical(text, NULL); jint result = doOffsetForAdvance(paint, typeface, textArray + contextStart, start - contextStart, end - start, contextEnd - contextStart, isRtl, advance); result += contextStart; - env->ReleaseCharArrayElements(text, textArray, JNI_ABORT); + env->ReleasePrimitiveArrayCritical(text, textArray, JNI_ABORT); return result; } @@ -1158,9 +1156,9 @@ static JNINativeMethod methods[] = { {"ascent","!()F", (void*) PaintGlue::ascent}, {"descent","!()F", (void*) PaintGlue::descent}, - {"getFontMetrics", "(Landroid/graphics/Paint$FontMetrics;)F", + {"getFontMetrics", "!(Landroid/graphics/Paint$FontMetrics;)F", (void*)PaintGlue::getFontMetrics}, - {"getFontMetricsInt", "(Landroid/graphics/Paint$FontMetricsInt;)I", + {"getFontMetricsInt", "!(Landroid/graphics/Paint$FontMetricsInt;)I", (void*)PaintGlue::getFontMetricsInt}, {"native_measureText","([CIII)F", (void*) PaintGlue::measureText_CIII}, {"native_measureText","(Ljava/lang/String;I)F", (void*) PaintGlue::measureText_StringI}, diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml index 0617b4fe71f3..91b63484168a 100644 --- a/core/res/AndroidManifest.xml +++ b/core/res/AndroidManifest.xml @@ -1538,7 +1538,7 @@ <permission android:name="android.permission.WRITE_SETTINGS" android:label="@string/permlab_writeSettings" android:description="@string/permdesc_writeSettings" - android:protectionLevel="dangerous" /> + android:protectionLevel="signature|preinstalled|appop|pre23" /> <!-- @SystemApi Allows an application to modify the Google service map. <p>Not for use by third-party applications. --> @@ -2436,7 +2436,7 @@ <!-- Allows managing (adding, removing) fingerprint templates. Reserved for the system. @hide --> <permission android:name="android.permission.MANAGE_FINGERPRINT" - android:protectionLevel="signature" /> + android:protectionLevel="system|signature" /> <!-- Allows an application to control keyguard. Only allowed for system processes. @hide --> @@ -2784,10 +2784,6 @@ </intent-filter> </receiver> - <service android:name="com.android.internal.os.storage.ExternalStorageFormatter" - android:permission="android.permission.MASTER_CLEAR" - android:exported="true" /> - <service android:name="android.hardware.location.GeofenceHardwareService" android:permission="android.permission.LOCATION_HARDWARE" android:exported="false" /> diff --git a/core/res/res/layout/app_permission_item.xml b/core/res/res/layout/app_permission_item.xml index 1eff3dce4568..383d771074e0 100644 --- a/core/res/res/layout/app_permission_item.xml +++ b/core/res/res/layout/app_permission_item.xml @@ -31,7 +31,8 @@ android:layout_height="24dp" android:layout_marginStart="16dp" android:layout_marginEnd="8dp" - android:scaleType="fitCenter" /> + android:scaleType="fitCenter" + android:tint="@android:color/black"/> <ImageView android:layout_width="wrap_content" diff --git a/core/res/res/values-af/strings.xml b/core/res/res/values-af/strings.xml index 525ca3413450..f7b61ed5d10b 100644 --- a/core/res/res/values-af/strings.xml +++ b/core/res/res/values-af/strings.xml @@ -1041,7 +1041,6 @@ <string name="usb_mtp_notification_title" msgid="8396264943589760855">"USB vir lêeroordrag"</string> <string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB vir foto-oordrag"</string> <string name="usb_midi_notification_title" msgid="4850904915889144654">"USB vir MIDI"</string> - <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"Gekoppel as \'n installeerder"</string> <string name="usb_accessory_notification_title" msgid="7848236974087653666">"Gekoppel aan \'n USB-toebehoorsel"</string> <string name="usb_notification_message" msgid="7347368030849048437">"Raak vir meer opsies."</string> <string name="adb_active_notification_title" msgid="6729044778949189918">"USB-ontfouter gekoppel"</string> diff --git a/core/res/res/values-am/strings.xml b/core/res/res/values-am/strings.xml index 533ef91ee367..e57bcac925cb 100644 --- a/core/res/res/values-am/strings.xml +++ b/core/res/res/values-am/strings.xml @@ -1041,7 +1041,6 @@ <string name="usb_mtp_notification_title" msgid="8396264943589760855">"ዩኤስቢ ለፋይል ሽግግር"</string> <string name="usb_ptp_notification_title" msgid="1347328437083192112">"ዩኤስቢ ለፎቶ ሽግግር"</string> <string name="usb_midi_notification_title" msgid="4850904915889144654">"ዩኤስቢ ለMIDI"</string> - <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"እንደ ጫኝ ተያይዟል"</string> <string name="usb_accessory_notification_title" msgid="7848236974087653666">"ለUSB ተቀጥላ ተያይዟል"</string> <string name="usb_notification_message" msgid="7347368030849048437">"ለተጨማሪ አማራጮች ነካ ያድርጉ።"</string> <string name="adb_active_notification_title" msgid="6729044778949189918">"USB አድስ ተያይዟል"</string> diff --git a/core/res/res/values-ar/strings.xml b/core/res/res/values-ar/strings.xml index c7cbc713df83..ca1431e1f0f2 100644 --- a/core/res/res/values-ar/strings.xml +++ b/core/res/res/values-ar/strings.xml @@ -1069,7 +1069,6 @@ <string name="usb_mtp_notification_title" msgid="8396264943589760855">"USB لنقل الملفات"</string> <string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB لنقل الصور"</string> <string name="usb_midi_notification_title" msgid="4850904915889144654">"USB لـ MIDI"</string> - <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"التوصيل كأداة تثبيت"</string> <string name="usb_accessory_notification_title" msgid="7848236974087653666">"الاتصال بجهاز USB ملحق"</string> <string name="usb_notification_message" msgid="7347368030849048437">"المس للحصول على مزيد من الخيارات."</string> <string name="adb_active_notification_title" msgid="6729044778949189918">"تم توصيل تصحيح أخطاء USB"</string> diff --git a/core/res/res/values-az-rAZ/strings.xml b/core/res/res/values-az-rAZ/strings.xml index c21a4d838931..06cbf76bca52 100644 --- a/core/res/res/values-az-rAZ/strings.xml +++ b/core/res/res/values-az-rAZ/strings.xml @@ -1041,7 +1041,6 @@ <string name="usb_mtp_notification_title" msgid="8396264943589760855">"Fayl transferi üçün USB"</string> <string name="usb_ptp_notification_title" msgid="1347328437083192112">"Foto transfer üçün USB"</string> <string name="usb_midi_notification_title" msgid="4850904915889144654">"MIDI üçün USB"</string> - <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"Quraşdırıcı kimi qoşulub"</string> <string name="usb_accessory_notification_title" msgid="7848236974087653666">"USB aksesuara qoşuldu"</string> <string name="usb_notification_message" msgid="7347368030849048437">"Əlavə seçimlər üçün toxunun."</string> <string name="adb_active_notification_title" msgid="6729044778949189918">"USB sazlama qoşuludur"</string> diff --git a/core/res/res/values-bg/strings.xml b/core/res/res/values-bg/strings.xml index 46316ad49b84..cefc70f55245 100644 --- a/core/res/res/values-bg/strings.xml +++ b/core/res/res/values-bg/strings.xml @@ -1041,7 +1041,6 @@ <string name="usb_mtp_notification_title" msgid="8396264943589760855">"USB за прехвърляне на файлове"</string> <string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB за прехвърляне на снимки"</string> <string name="usb_midi_notification_title" msgid="4850904915889144654">"USB за MIDI"</string> - <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"Свързан като инсталационна програма"</string> <string name="usb_accessory_notification_title" msgid="7848236974087653666">"Установена е връзка с аксесоар за USB"</string> <string name="usb_notification_message" msgid="7347368030849048437">"Докоснете за още опции."</string> <string name="adb_active_notification_title" msgid="6729044778949189918">"Отстраняване на грешки през USB"</string> diff --git a/core/res/res/values-bn-rBD/strings.xml b/core/res/res/values-bn-rBD/strings.xml index 5113414fdff9..8e9ad5f71e4a 100644 --- a/core/res/res/values-bn-rBD/strings.xml +++ b/core/res/res/values-bn-rBD/strings.xml @@ -1041,7 +1041,6 @@ <string name="usb_mtp_notification_title" msgid="8396264943589760855">"ফাইল স্থানান্তরের জন্য USB"</string> <string name="usb_ptp_notification_title" msgid="1347328437083192112">"ফটো স্থানান্তরের জন্য USB"</string> <string name="usb_midi_notification_title" msgid="4850904915889144654">"MIDI এর জন্য USB"</string> - <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"একটি ইনস্টলার হিসাবে সংযুক্ত হয়েছে"</string> <string name="usb_accessory_notification_title" msgid="7848236974087653666">"একটি USB যন্ত্রাংশতে সংযুক্ত হয়েছে"</string> <string name="usb_notification_message" msgid="7347368030849048437">"আরো বিকল্পের জন্য স্পর্শ করুন৷"</string> <string name="adb_active_notification_title" msgid="6729044778949189918">"USB ডিবাগিং সংযুক্ত হয়েছে"</string> diff --git a/core/res/res/values-ca/strings.xml b/core/res/res/values-ca/strings.xml index c75459ae3677..8127699b6e31 100644 --- a/core/res/res/values-ca/strings.xml +++ b/core/res/res/values-ca/strings.xml @@ -1041,7 +1041,6 @@ <string name="usb_mtp_notification_title" msgid="8396264943589760855">"USB per transferir fitxers"</string> <string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB per transferir fotos"</string> <string name="usb_midi_notification_title" msgid="4850904915889144654">"USB per a MIDI"</string> - <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"Connectat com a instal·lador"</string> <string name="usb_accessory_notification_title" msgid="7848236974087653666">"Connectat a un accessori USB"</string> <string name="usb_notification_message" msgid="7347368030849048437">"Toca per veure més opcions."</string> <string name="adb_active_notification_title" msgid="6729044778949189918">"Depuració USB activada"</string> diff --git a/core/res/res/values-cs/strings.xml b/core/res/res/values-cs/strings.xml index ba4de898e44c..f0cefe368c72 100644 --- a/core/res/res/values-cs/strings.xml +++ b/core/res/res/values-cs/strings.xml @@ -1055,7 +1055,6 @@ <string name="usb_mtp_notification_title" msgid="8396264943589760855">"USB na přenos souborů"</string> <string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB na přenos fotek"</string> <string name="usb_midi_notification_title" msgid="4850904915889144654">"USB v režimu MIDI"</string> - <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"Připojeno jako instalátor"</string> <string name="usb_accessory_notification_title" msgid="7848236974087653666">"Připojeno k perifernímu zařízení USB"</string> <string name="usb_notification_message" msgid="7347368030849048437">"Klepnutím zobrazíte další možnosti."</string> <string name="adb_active_notification_title" msgid="6729044778949189918">"Ladění přes USB připojeno"</string> diff --git a/core/res/res/values-da/strings.xml b/core/res/res/values-da/strings.xml index 3aa9db41057e..10d8c80e776a 100644 --- a/core/res/res/values-da/strings.xml +++ b/core/res/res/values-da/strings.xml @@ -1041,7 +1041,6 @@ <string name="usb_mtp_notification_title" msgid="8396264943589760855">"USB til filoverførsel"</string> <string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB til billedoverførsel"</string> <string name="usb_midi_notification_title" msgid="4850904915889144654">"USB til MIDI"</string> - <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"Tilsluttet som et installationsprogram"</string> <string name="usb_accessory_notification_title" msgid="7848236974087653666">"Tilsluttet et USB-ekstraudstyr"</string> <string name="usb_notification_message" msgid="7347368030849048437">"Tryk for at se flere muligheder."</string> <string name="adb_active_notification_title" msgid="6729044778949189918">"USB-fejlretning er tilsluttet"</string> diff --git a/core/res/res/values-de/strings.xml b/core/res/res/values-de/strings.xml index cc4eb0970d7f..e62e08b64f97 100644 --- a/core/res/res/values-de/strings.xml +++ b/core/res/res/values-de/strings.xml @@ -227,7 +227,7 @@ <string name="user_owner_label" msgid="2804351898001038951">"Privat"</string> <string name="managed_profile_label" msgid="6260850669674791528">"Geschäftlich"</string> <string name="permgrouplab_contacts" msgid="3657758145679177612">"Kontakte"</string> - <string name="permgroupdesc_contacts" msgid="6951499528303668046">"Auf Kontakte zuzugreifen"</string> + <string name="permgroupdesc_contacts" msgid="6951499528303668046">"auf Kontakte zuzugreifen"</string> <string name="permgrouplab_location" msgid="7275582855722310164">"Standort"</string> <string name="permgroupdesc_location" msgid="1346617465127855033">"Auf den Standort Ihres Geräts zugreifen"</string> <string name="permgrouplab_calendar" msgid="5863508437783683902">"Kalender"</string> @@ -1041,7 +1041,6 @@ <string name="usb_mtp_notification_title" msgid="8396264943589760855">"USB für die Dateiübertragung"</string> <string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB für die Fotoübertragung"</string> <string name="usb_midi_notification_title" msgid="4850904915889144654">"USB für MIDI"</string> - <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"Als Installationsprogramm angeschlossen"</string> <string name="usb_accessory_notification_title" msgid="7848236974087653666">"Mit USB-Zubehör verbunden"</string> <string name="usb_notification_message" msgid="7347368030849048437">"Für weitere Optionen tippen"</string> <string name="adb_active_notification_title" msgid="6729044778949189918">"USB-Debugging"</string> diff --git a/core/res/res/values-el/strings.xml b/core/res/res/values-el/strings.xml index 7f5d2c394c4f..4b1929074f9f 100644 --- a/core/res/res/values-el/strings.xml +++ b/core/res/res/values-el/strings.xml @@ -1041,7 +1041,6 @@ <string name="usb_mtp_notification_title" msgid="8396264943589760855">"USB για μεταφορά αρχείων"</string> <string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB για μεταφορά φωτογραφιών"</string> <string name="usb_midi_notification_title" msgid="4850904915889144654">"USB για MIDI"</string> - <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"Συνδεδεμένο ως πρόγραμμα εγκατάστασης"</string> <string name="usb_accessory_notification_title" msgid="7848236974087653666">"Σύνδεση σε αξεσουάρ USB"</string> <string name="usb_notification_message" msgid="7347368030849048437">"Αγγίξτε για περισσότερες επιλογές."</string> <string name="adb_active_notification_title" msgid="6729044778949189918">"Συνδέθηκε ο εντοπισμός σφαλμάτων USB"</string> diff --git a/core/res/res/values-en-rAU/strings.xml b/core/res/res/values-en-rAU/strings.xml index 55270f7d30ba..ee1eaff9dea4 100644 --- a/core/res/res/values-en-rAU/strings.xml +++ b/core/res/res/values-en-rAU/strings.xml @@ -354,10 +354,8 @@ <string name="permdesc_flashlight" msgid="6522284794568368310">"Allows the app to control the flashlight."</string> <string name="permlab_callPhone" msgid="3925836347681847954">"directly call phone numbers"</string> <string name="permdesc_callPhone" msgid="3740797576113760827">"Allows the app to call phone numbers without your intervention. This may result in unexpected charges or calls. Note that this doesn\'t allow the app to call emergency numbers. Malicious apps may cost you money by making calls without your confirmation."</string> - <!-- no translation found for permlab_accessImsCallService (3574943847181793918) --> - <skip /> - <!-- no translation found for permdesc_accessImsCallService (8992884015198298775) --> - <skip /> + <string name="permlab_accessImsCallService" msgid="3574943847181793918">"access IMS call service"</string> + <string name="permdesc_accessImsCallService" msgid="8992884015198298775">"Allows the app to use the IMS service to make calls without your intervention."</string> <string name="permlab_readPhoneState" msgid="9178228524507610486">"read phone status and identity"</string> <string name="permdesc_readPhoneState" msgid="1639212771826125528">"Allows the app to access the phone features of the device. This permission allows the app to determine the phone number and device IDs, whether a call is active and the remote number connected by a call."</string> <string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"prevent tablet from sleeping"</string> @@ -1041,7 +1039,6 @@ <string name="usb_mtp_notification_title" msgid="8396264943589760855">"USB for file transfer"</string> <string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB for photo transfer"</string> <string name="usb_midi_notification_title" msgid="4850904915889144654">"USB for MIDI"</string> - <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"Connected as an installer"</string> <string name="usb_accessory_notification_title" msgid="7848236974087653666">"Connected to a USB accessory"</string> <string name="usb_notification_message" msgid="7347368030849048437">"Touch for more options."</string> <string name="adb_active_notification_title" msgid="6729044778949189918">"USB debugging connected"</string> diff --git a/core/res/res/values-en-rGB/strings.xml b/core/res/res/values-en-rGB/strings.xml index 55270f7d30ba..ee1eaff9dea4 100644 --- a/core/res/res/values-en-rGB/strings.xml +++ b/core/res/res/values-en-rGB/strings.xml @@ -354,10 +354,8 @@ <string name="permdesc_flashlight" msgid="6522284794568368310">"Allows the app to control the flashlight."</string> <string name="permlab_callPhone" msgid="3925836347681847954">"directly call phone numbers"</string> <string name="permdesc_callPhone" msgid="3740797576113760827">"Allows the app to call phone numbers without your intervention. This may result in unexpected charges or calls. Note that this doesn\'t allow the app to call emergency numbers. Malicious apps may cost you money by making calls without your confirmation."</string> - <!-- no translation found for permlab_accessImsCallService (3574943847181793918) --> - <skip /> - <!-- no translation found for permdesc_accessImsCallService (8992884015198298775) --> - <skip /> + <string name="permlab_accessImsCallService" msgid="3574943847181793918">"access IMS call service"</string> + <string name="permdesc_accessImsCallService" msgid="8992884015198298775">"Allows the app to use the IMS service to make calls without your intervention."</string> <string name="permlab_readPhoneState" msgid="9178228524507610486">"read phone status and identity"</string> <string name="permdesc_readPhoneState" msgid="1639212771826125528">"Allows the app to access the phone features of the device. This permission allows the app to determine the phone number and device IDs, whether a call is active and the remote number connected by a call."</string> <string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"prevent tablet from sleeping"</string> @@ -1041,7 +1039,6 @@ <string name="usb_mtp_notification_title" msgid="8396264943589760855">"USB for file transfer"</string> <string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB for photo transfer"</string> <string name="usb_midi_notification_title" msgid="4850904915889144654">"USB for MIDI"</string> - <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"Connected as an installer"</string> <string name="usb_accessory_notification_title" msgid="7848236974087653666">"Connected to a USB accessory"</string> <string name="usb_notification_message" msgid="7347368030849048437">"Touch for more options."</string> <string name="adb_active_notification_title" msgid="6729044778949189918">"USB debugging connected"</string> diff --git a/core/res/res/values-en-rIN/strings.xml b/core/res/res/values-en-rIN/strings.xml index 55270f7d30ba..ee1eaff9dea4 100644 --- a/core/res/res/values-en-rIN/strings.xml +++ b/core/res/res/values-en-rIN/strings.xml @@ -354,10 +354,8 @@ <string name="permdesc_flashlight" msgid="6522284794568368310">"Allows the app to control the flashlight."</string> <string name="permlab_callPhone" msgid="3925836347681847954">"directly call phone numbers"</string> <string name="permdesc_callPhone" msgid="3740797576113760827">"Allows the app to call phone numbers without your intervention. This may result in unexpected charges or calls. Note that this doesn\'t allow the app to call emergency numbers. Malicious apps may cost you money by making calls without your confirmation."</string> - <!-- no translation found for permlab_accessImsCallService (3574943847181793918) --> - <skip /> - <!-- no translation found for permdesc_accessImsCallService (8992884015198298775) --> - <skip /> + <string name="permlab_accessImsCallService" msgid="3574943847181793918">"access IMS call service"</string> + <string name="permdesc_accessImsCallService" msgid="8992884015198298775">"Allows the app to use the IMS service to make calls without your intervention."</string> <string name="permlab_readPhoneState" msgid="9178228524507610486">"read phone status and identity"</string> <string name="permdesc_readPhoneState" msgid="1639212771826125528">"Allows the app to access the phone features of the device. This permission allows the app to determine the phone number and device IDs, whether a call is active and the remote number connected by a call."</string> <string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"prevent tablet from sleeping"</string> @@ -1041,7 +1039,6 @@ <string name="usb_mtp_notification_title" msgid="8396264943589760855">"USB for file transfer"</string> <string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB for photo transfer"</string> <string name="usb_midi_notification_title" msgid="4850904915889144654">"USB for MIDI"</string> - <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"Connected as an installer"</string> <string name="usb_accessory_notification_title" msgid="7848236974087653666">"Connected to a USB accessory"</string> <string name="usb_notification_message" msgid="7347368030849048437">"Touch for more options."</string> <string name="adb_active_notification_title" msgid="6729044778949189918">"USB debugging connected"</string> diff --git a/core/res/res/values-es-rUS/strings.xml b/core/res/res/values-es-rUS/strings.xml index a8f3fbb16b46..dea510222c68 100644 --- a/core/res/res/values-es-rUS/strings.xml +++ b/core/res/res/values-es-rUS/strings.xml @@ -1041,7 +1041,6 @@ <string name="usb_mtp_notification_title" msgid="8396264943589760855">"USB para transferir archivos"</string> <string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB para transferir fotos"</string> <string name="usb_midi_notification_title" msgid="4850904915889144654">"USB para MIDI"</string> - <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"Conectado como un instalador"</string> <string name="usb_accessory_notification_title" msgid="7848236974087653666">"Conectado a un accesorio USB"</string> <string name="usb_notification_message" msgid="7347368030849048437">"Toca para ver más opciones."</string> <string name="adb_active_notification_title" msgid="6729044778949189918">"Depuración por USB conectada"</string> diff --git a/core/res/res/values-es/strings.xml b/core/res/res/values-es/strings.xml index f1e74903545e..fb4997ad2d26 100644 --- a/core/res/res/values-es/strings.xml +++ b/core/res/res/values-es/strings.xml @@ -1041,7 +1041,6 @@ <string name="usb_mtp_notification_title" msgid="8396264943589760855">"USB para transferir archivos"</string> <string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB para transferir fotos"</string> <string name="usb_midi_notification_title" msgid="4850904915889144654">"USB para MIDI"</string> - <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"Conectado como instalador"</string> <string name="usb_accessory_notification_title" msgid="7848236974087653666">"Conectado a un accesorio USB"</string> <string name="usb_notification_message" msgid="7347368030849048437">"Toca para obtener más opciones"</string> <string name="adb_active_notification_title" msgid="6729044778949189918">"Depuración USB habilitada"</string> diff --git a/core/res/res/values-et-rEE/strings.xml b/core/res/res/values-et-rEE/strings.xml index 132379be27c8..39aacefdd083 100644 --- a/core/res/res/values-et-rEE/strings.xml +++ b/core/res/res/values-et-rEE/strings.xml @@ -1041,7 +1041,6 @@ <string name="usb_mtp_notification_title" msgid="8396264943589760855">"USB failide edastamiseks"</string> <string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB fotode edastamiseks"</string> <string name="usb_midi_notification_title" msgid="4850904915889144654">"USB MIDI jaoks"</string> - <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"Ühendatud installijana"</string> <string name="usb_accessory_notification_title" msgid="7848236974087653666">"Ühendatud USB-lisaseadmega"</string> <string name="usb_notification_message" msgid="7347368030849048437">"Puudutage rohkemate valikute kuvamiseks."</string> <string name="adb_active_notification_title" msgid="6729044778949189918">"USB-silumine ühendatud"</string> diff --git a/core/res/res/values-eu-rES/strings.xml b/core/res/res/values-eu-rES/strings.xml index e482f57991fb..ddbfaeef93a9 100644 --- a/core/res/res/values-eu-rES/strings.xml +++ b/core/res/res/values-eu-rES/strings.xml @@ -1041,7 +1041,6 @@ <string name="usb_mtp_notification_title" msgid="8396264943589760855">"Fitxategiak transferitzeko USBa"</string> <string name="usb_ptp_notification_title" msgid="1347328437083192112">"Argazkiak transferitzeko USBa"</string> <string name="usb_midi_notification_title" msgid="4850904915889144654">"MIDI modurako USBa"</string> - <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"Instalatzaile gisa konektatua"</string> <string name="usb_accessory_notification_title" msgid="7848236974087653666">"USB osagarri batera konektatuta"</string> <string name="usb_notification_message" msgid="7347368030849048437">"Ukitu aukera gehiago ikusteko."</string> <string name="adb_active_notification_title" msgid="6729044778949189918">"USB arazketa konektatuta"</string> diff --git a/core/res/res/values-fa/strings.xml b/core/res/res/values-fa/strings.xml index a01a5bacd855..0ab425e531fe 100644 --- a/core/res/res/values-fa/strings.xml +++ b/core/res/res/values-fa/strings.xml @@ -1041,7 +1041,6 @@ <string name="usb_mtp_notification_title" msgid="8396264943589760855">"USB برای انتقال فایل"</string> <string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB برای انتقال عکس"</string> <string name="usb_midi_notification_title" msgid="4850904915889144654">"USB برای MIDI"</string> - <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"متصل شده بهعنوان نصب کننده"</string> <string name="usb_accessory_notification_title" msgid="7848236974087653666">"به یک وسیله جانبی USB وصل شده است"</string> <string name="usb_notification_message" msgid="7347368030849048437">"برای گزینههای بیشتر لمس کنید."</string> <string name="adb_active_notification_title" msgid="6729044778949189918">"اشکالزدایی USB متصل شد"</string> diff --git a/core/res/res/values-fi/strings.xml b/core/res/res/values-fi/strings.xml index 5379e9f19d37..cd908bb6172e 100644 --- a/core/res/res/values-fi/strings.xml +++ b/core/res/res/values-fi/strings.xml @@ -1041,7 +1041,6 @@ <string name="usb_mtp_notification_title" msgid="8396264943589760855">"USB on tiedonsiirtotilassa"</string> <string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB on kuvansiirtotilassa"</string> <string name="usb_midi_notification_title" msgid="4850904915889144654">"USB on MIDI-tilassa"</string> - <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"Kytketty asennusohjelmana"</string> <string name="usb_accessory_notification_title" msgid="7848236974087653666">"Liitetty USB-laitteeseen"</string> <string name="usb_notification_message" msgid="7347368030849048437">"Lisää vaihtoehtoja koskettamalla"</string> <string name="adb_active_notification_title" msgid="6729044778949189918">"USB-vianetsintä yhdistetty"</string> diff --git a/core/res/res/values-fr-rCA/strings.xml b/core/res/res/values-fr-rCA/strings.xml index 4cce5409033f..24241eb0e953 100644 --- a/core/res/res/values-fr-rCA/strings.xml +++ b/core/res/res/values-fr-rCA/strings.xml @@ -1041,7 +1041,6 @@ <string name="usb_mtp_notification_title" msgid="8396264943589760855">"USB pour le transfert de fichiers"</string> <string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB pour le transfert de photos"</string> <string name="usb_midi_notification_title" msgid="4850904915889144654">"USB pour MIDI"</string> - <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"Connecté en tant que programme d\'installation"</string> <string name="usb_accessory_notification_title" msgid="7848236974087653666">"Connecté à un accessoire USB"</string> <string name="usb_notification_message" msgid="7347368030849048437">"Touchez pour afficher plus d\'options."</string> <string name="adb_active_notification_title" msgid="6729044778949189918">"Débogage USB connecté"</string> diff --git a/core/res/res/values-fr/strings.xml b/core/res/res/values-fr/strings.xml index 097939380b77..760ae23e104c 100644 --- a/core/res/res/values-fr/strings.xml +++ b/core/res/res/values-fr/strings.xml @@ -1041,7 +1041,6 @@ <string name="usb_mtp_notification_title" msgid="8396264943589760855">"USB pour le transfert de fichiers"</string> <string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB pour le transfert de photos"</string> <string name="usb_midi_notification_title" msgid="4850904915889144654">"USB en mode MIDI"</string> - <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"Connecté en tant que programme d\'installation"</string> <string name="usb_accessory_notification_title" msgid="7848236974087653666">"Connecté à un accessoire USB"</string> <string name="usb_notification_message" msgid="7347368030849048437">"Appuyez pour afficher plus d\'options"</string> <string name="adb_active_notification_title" msgid="6729044778949189918">"Débogage USB activé"</string> diff --git a/core/res/res/values-gl-rES/strings.xml b/core/res/res/values-gl-rES/strings.xml index f6340ef2ca44..0267808ded44 100644 --- a/core/res/res/values-gl-rES/strings.xml +++ b/core/res/res/values-gl-rES/strings.xml @@ -1041,7 +1041,6 @@ <string name="usb_mtp_notification_title" msgid="8396264943589760855">"USB para transferencia de ficheiros"</string> <string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB para transferencia de fotos"</string> <string name="usb_midi_notification_title" msgid="4850904915889144654">"USB para MIDI"</string> - <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"Conectado como instalador"</string> <string name="usb_accessory_notification_title" msgid="7848236974087653666">"Conectado a un accesorio USB"</string> <string name="usb_notification_message" msgid="7347368030849048437">"Toca para ver máis opcións."</string> <string name="adb_active_notification_title" msgid="6729044778949189918">"Depuración USB conectada"</string> diff --git a/core/res/res/values-gu-rIN/strings.xml b/core/res/res/values-gu-rIN/strings.xml index c5f1f3ce6dfb..99b3e779515e 100644 --- a/core/res/res/values-gu-rIN/strings.xml +++ b/core/res/res/values-gu-rIN/strings.xml @@ -1041,7 +1041,6 @@ <string name="usb_mtp_notification_title" msgid="8396264943589760855">"ફાઇલ ટ્રાન્સફર માટે USB"</string> <string name="usb_ptp_notification_title" msgid="1347328437083192112">"ફોટા ટ્રાન્સફર માટે USB"</string> <string name="usb_midi_notification_title" msgid="4850904915889144654">"MIDI માટે USB"</string> - <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"ઇન્સ્ટોલર તરીકે કનેક્ટ કર્યું"</string> <string name="usb_accessory_notification_title" msgid="7848236974087653666">"USB ઍક્સેસરીથી કનેક્ટ થયાં"</string> <string name="usb_notification_message" msgid="7347368030849048437">"વધુ વિકલ્પો માટે ટચ કરો."</string> <string name="adb_active_notification_title" msgid="6729044778949189918">"USB ડીબગિંગ કનેક્ટ થયું."</string> diff --git a/core/res/res/values-hi/strings.xml b/core/res/res/values-hi/strings.xml index 97ba0327f103..678085cd7951 100644 --- a/core/res/res/values-hi/strings.xml +++ b/core/res/res/values-hi/strings.xml @@ -1041,7 +1041,6 @@ <string name="usb_mtp_notification_title" msgid="8396264943589760855">"फ़ाइल स्थानांतरण के लिए USB"</string> <string name="usb_ptp_notification_title" msgid="1347328437083192112">"फ़ोटो स्थानांतरण के लिए USB"</string> <string name="usb_midi_notification_title" msgid="4850904915889144654">"MIDI के लिए USB"</string> - <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"किसी इंस्टॉलर के रूप में कनेक्ट किया गया"</string> <string name="usb_accessory_notification_title" msgid="7848236974087653666">"USB सहायक सामग्री से कनेक्ट किया गया"</string> <string name="usb_notification_message" msgid="7347368030849048437">"और विकल्पों के लिए स्पर्श करें."</string> <string name="adb_active_notification_title" msgid="6729044778949189918">"USB डीबग कनेक्ट किया गया"</string> diff --git a/core/res/res/values-hr/strings.xml b/core/res/res/values-hr/strings.xml index d91170a59c19..b58aba0ff17a 100644 --- a/core/res/res/values-hr/strings.xml +++ b/core/res/res/values-hr/strings.xml @@ -1048,7 +1048,6 @@ <string name="usb_mtp_notification_title" msgid="8396264943589760855">"USB za prijenos datoteka"</string> <string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB za prijenos fotografija"</string> <string name="usb_midi_notification_title" msgid="4850904915889144654">"USB za MIDI"</string> - <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"Spojen kao instalacijski program"</string> <string name="usb_accessory_notification_title" msgid="7848236974087653666">"Spojen na USB pribor"</string> <string name="usb_notification_message" msgid="7347368030849048437">"Dodirnite za više opcija."</string> <string name="adb_active_notification_title" msgid="6729044778949189918">"Priključen je alat za uklanjanje pogrešaka USB-om"</string> diff --git a/core/res/res/values-hu/strings.xml b/core/res/res/values-hu/strings.xml index 0005a756f053..2a230ff224da 100644 --- a/core/res/res/values-hu/strings.xml +++ b/core/res/res/values-hu/strings.xml @@ -1041,7 +1041,6 @@ <string name="usb_mtp_notification_title" msgid="8396264943589760855">"USB fájlátvitelhez"</string> <string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB fotóátvitelhez"</string> <string name="usb_midi_notification_title" msgid="4850904915889144654">"USB MIDI-hez"</string> - <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"Csatlakoztatva telepítőként"</string> <string name="usb_accessory_notification_title" msgid="7848236974087653666">"Csatlakoztatva egy USB-kiegészítőhöz"</string> <string name="usb_notification_message" msgid="7347368030849048437">"Érintse meg a további lehetőségekhez."</string> <string name="adb_active_notification_title" msgid="6729044778949189918">"USB hibakereső csatlakoztatva"</string> diff --git a/core/res/res/values-hy-rAM/strings.xml b/core/res/res/values-hy-rAM/strings.xml index 6402e3190c4e..9ad94727e6f4 100644 --- a/core/res/res/values-hy-rAM/strings.xml +++ b/core/res/res/values-hy-rAM/strings.xml @@ -1041,7 +1041,6 @@ <string name="usb_mtp_notification_title" msgid="8396264943589760855">"Ֆայլերի փոխանցման USB"</string> <string name="usb_ptp_notification_title" msgid="1347328437083192112">"Լուսանկարների փոխանցման USB"</string> <string name="usb_midi_notification_title" msgid="4850904915889144654">"MIDI-ի USB"</string> - <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"Միացված է որպես տեղադրիչ"</string> <string name="usb_accessory_notification_title" msgid="7848236974087653666">"Կապակցված է USB լրասարքի"</string> <string name="usb_notification_message" msgid="7347368030849048437">"Հպեք՝ լրացուցիչ ընտրանքների համար:"</string> <string name="adb_active_notification_title" msgid="6729044778949189918">"USB վրիպազերծումը միացված է"</string> diff --git a/core/res/res/values-in/strings.xml b/core/res/res/values-in/strings.xml index 0c8b3ff46503..7406508688de 100644 --- a/core/res/res/values-in/strings.xml +++ b/core/res/res/values-in/strings.xml @@ -1041,7 +1041,6 @@ <string name="usb_mtp_notification_title" msgid="8396264943589760855">"USB untuk transfer file"</string> <string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB untuk transfer foto"</string> <string name="usb_midi_notification_title" msgid="4850904915889144654">"USB untuk MIDI"</string> - <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"Tersambung sebagai pemasang"</string> <string name="usb_accessory_notification_title" msgid="7848236974087653666">"Tersambung ke aksesori USB"</string> <string name="usb_notification_message" msgid="7347368030849048437">"Sentuh untuk opsi lainnya."</string> <string name="adb_active_notification_title" msgid="6729044778949189918">"Debugging USB terhubung"</string> diff --git a/core/res/res/values-is-rIS/strings.xml b/core/res/res/values-is-rIS/strings.xml index d90ad2b8cdf1..c84c19e0bcf2 100644 --- a/core/res/res/values-is-rIS/strings.xml +++ b/core/res/res/values-is-rIS/strings.xml @@ -1041,7 +1041,6 @@ <string name="usb_mtp_notification_title" msgid="8396264943589760855">"USB fyrir skráaflutning"</string> <string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB fyrir myndaflutning"</string> <string name="usb_midi_notification_title" msgid="4850904915889144654">"USB fyrir MIDI"</string> - <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"Tengt sem uppsetningarforrit"</string> <string name="usb_accessory_notification_title" msgid="7848236974087653666">"Tengt við USB-aukabúnað"</string> <string name="usb_notification_message" msgid="7347368030849048437">"Snertu til að fá fleiri valkosti."</string> <string name="adb_active_notification_title" msgid="6729044778949189918">"USB-villuleit tengd"</string> diff --git a/core/res/res/values-it/strings.xml b/core/res/res/values-it/strings.xml index 230541411890..75928a552dda 100644 --- a/core/res/res/values-it/strings.xml +++ b/core/res/res/values-it/strings.xml @@ -1041,7 +1041,6 @@ <string name="usb_mtp_notification_title" msgid="8396264943589760855">"USB per il trasferimento di file"</string> <string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB per il trasferimento di foto"</string> <string name="usb_midi_notification_title" msgid="4850904915889144654">"USB per la modalità MIDI"</string> - <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"Collegato come installer"</string> <string name="usb_accessory_notification_title" msgid="7848236974087653666">"Collegato a un accessorio USB"</string> <string name="usb_notification_message" msgid="7347368030849048437">"Tocca per visualizzare più opzioni."</string> <string name="adb_active_notification_title" msgid="6729044778949189918">"Debug USB collegato"</string> diff --git a/core/res/res/values-iw/strings.xml b/core/res/res/values-iw/strings.xml index 734f7e7f22c5..f40ae4067594 100644 --- a/core/res/res/values-iw/strings.xml +++ b/core/res/res/values-iw/strings.xml @@ -1055,7 +1055,6 @@ <string name="usb_mtp_notification_title" msgid="8396264943589760855">"USB להעברת קבצים"</string> <string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB להעברת תמונות"</string> <string name="usb_midi_notification_title" msgid="4850904915889144654">"USB ל-MIDI"</string> - <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"מחובר כמתקין"</string> <string name="usb_accessory_notification_title" msgid="7848236974087653666">"מחובר לאביזר USB"</string> <string name="usb_notification_message" msgid="7347368030849048437">"גע להצגת עוד אפשרויות."</string> <string name="adb_active_notification_title" msgid="6729044778949189918">"ניקוי באגים של USB מחובר"</string> diff --git a/core/res/res/values-ja/strings.xml b/core/res/res/values-ja/strings.xml index c305d3134a04..5b247d6324d3 100644 --- a/core/res/res/values-ja/strings.xml +++ b/core/res/res/values-ja/strings.xml @@ -1041,7 +1041,6 @@ <string name="usb_mtp_notification_title" msgid="8396264943589760855">"USBをファイル転送に使用"</string> <string name="usb_ptp_notification_title" msgid="1347328437083192112">"USBを写真転送に使用"</string> <string name="usb_midi_notification_title" msgid="4850904915889144654">"USBをMIDIに使用"</string> - <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"インストーラとして接続"</string> <string name="usb_accessory_notification_title" msgid="7848236974087653666">"USBアクセサリを接続しました"</string> <string name="usb_notification_message" msgid="7347368030849048437">"タップするとその他のオプションが表示されます。"</string> <string name="adb_active_notification_title" msgid="6729044778949189918">"USBデバッグが接続されました"</string> diff --git a/core/res/res/values-ka-rGE/strings.xml b/core/res/res/values-ka-rGE/strings.xml index 5cf85668ee28..c754738705b2 100644 --- a/core/res/res/values-ka-rGE/strings.xml +++ b/core/res/res/values-ka-rGE/strings.xml @@ -1041,7 +1041,6 @@ <string name="usb_mtp_notification_title" msgid="8396264943589760855">"USB ფაილების გადაცემისთვის"</string> <string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB ფოტოების გადაცემისთვის"</string> <string name="usb_midi_notification_title" msgid="4850904915889144654">"USB MIDI-სთვის"</string> - <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"დაკავშირებულია როგორც დამყენებელი"</string> <string name="usb_accessory_notification_title" msgid="7848236974087653666">"დაკავშირებულია USB აქსესუართან"</string> <string name="usb_notification_message" msgid="7347368030849048437">"შეეხეთ დამატებითი პარამეტრებისთვის."</string> <string name="adb_active_notification_title" msgid="6729044778949189918">"USB გამართვა შეერთებულია"</string> diff --git a/core/res/res/values-kk-rKZ/strings.xml b/core/res/res/values-kk-rKZ/strings.xml index 0fc111b64399..4bce4f347dd1 100644 --- a/core/res/res/values-kk-rKZ/strings.xml +++ b/core/res/res/values-kk-rKZ/strings.xml @@ -1041,7 +1041,6 @@ <string name="usb_mtp_notification_title" msgid="8396264943589760855">"Файлды тасымалдауға арналған USB"</string> <string name="usb_ptp_notification_title" msgid="1347328437083192112">"Фотосуретті тасымалдауға арналған USB"</string> <string name="usb_midi_notification_title" msgid="4850904915889144654">"MIDI режиміне арналған USB"</string> - <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"Орнату құрылғысына жалғанған"</string> <string name="usb_accessory_notification_title" msgid="7848236974087653666">"USB жабдығына қосылған"</string> <string name="usb_notification_message" msgid="7347368030849048437">"Қосымша параметрлер үшін түртіңіз."</string> <string name="adb_active_notification_title" msgid="6729044778949189918">"USB жөндеу қосылған"</string> diff --git a/core/res/res/values-km-rKH/strings.xml b/core/res/res/values-km-rKH/strings.xml index 0d95bee1ad2b..178bf6f99d48 100644 --- a/core/res/res/values-km-rKH/strings.xml +++ b/core/res/res/values-km-rKH/strings.xml @@ -1043,7 +1043,6 @@ <string name="usb_mtp_notification_title" msgid="8396264943589760855">"USB សម្រាប់ការផ្ទេរឯកសារ"</string> <string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB សម្រាប់ការផ្ទេររូបថត"</string> <string name="usb_midi_notification_title" msgid="4850904915889144654">"USB សម្រាប់ MIDI"</string> - <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"បានភ្ជាប់ជាកម្មវិធីដំឡើង"</string> <string name="usb_accessory_notification_title" msgid="7848236974087653666">"បានភ្ជាប់ឧបករណ៍យូអេសប៊ី"</string> <string name="usb_notification_message" msgid="7347368030849048437">"ប៉ះដើម្បីបានជម្រើសថែមទៀត។"</string> <string name="adb_active_notification_title" msgid="6729044778949189918">"បានភ្ជាប់ការកែកំហុសយូអេសប៊ី"</string> diff --git a/core/res/res/values-kn-rIN/strings.xml b/core/res/res/values-kn-rIN/strings.xml index 57dd3cc763f9..2ea1e5e80ce9 100644 --- a/core/res/res/values-kn-rIN/strings.xml +++ b/core/res/res/values-kn-rIN/strings.xml @@ -1041,7 +1041,6 @@ <string name="usb_mtp_notification_title" msgid="8396264943589760855">"ಫೈಲ್ ವರ್ಗಾವಣೆಗೆ USB"</string> <string name="usb_ptp_notification_title" msgid="1347328437083192112">"ಫೋಟೋ ವರ್ಗಾವಣೆಗೆ USB"</string> <string name="usb_midi_notification_title" msgid="4850904915889144654">"MIDI ಗೆ USB"</string> - <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"ಸ್ಥಾಪಕದಂತೆ ಸಂಪರ್ಕಗೊಂಡಿದೆ"</string> <string name="usb_accessory_notification_title" msgid="7848236974087653666">"USB ಪರಿಕರಕ್ಕೆ ಸಂಪರ್ಕಗೊಂಡಿದೆ"</string> <string name="usb_notification_message" msgid="7347368030849048437">"ಹೆಚ್ಚಿನ ಆಯ್ಕೆಗಳಿಗೆ ಸ್ಪರ್ಶಿಸಿ."</string> <string name="adb_active_notification_title" msgid="6729044778949189918">"USB ಡೀಬಗಿಂಗ್ ಸಂಪರ್ಕ"</string> diff --git a/core/res/res/values-ko/strings.xml b/core/res/res/values-ko/strings.xml index 31113fb917f2..c09490c84b23 100644 --- a/core/res/res/values-ko/strings.xml +++ b/core/res/res/values-ko/strings.xml @@ -1041,7 +1041,6 @@ <string name="usb_mtp_notification_title" msgid="8396264943589760855">"파일 전송용 USB"</string> <string name="usb_ptp_notification_title" msgid="1347328437083192112">"사진 전송용 USB"</string> <string name="usb_midi_notification_title" msgid="4850904915889144654">"MIDI용 USB"</string> - <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"설치 프로그램으로 연결됨"</string> <string name="usb_accessory_notification_title" msgid="7848236974087653666">"USB 액세서리에 연결됨"</string> <string name="usb_notification_message" msgid="7347368030849048437">"더 많은 옵션을 확인하려면 터치하세요."</string> <string name="adb_active_notification_title" msgid="6729044778949189918">"USB 디버깅 연결됨"</string> diff --git a/core/res/res/values-ky-rKG/strings.xml b/core/res/res/values-ky-rKG/strings.xml index 4637db241124..c264f59e4734 100644 --- a/core/res/res/values-ky-rKG/strings.xml +++ b/core/res/res/values-ky-rKG/strings.xml @@ -1384,8 +1384,6 @@ <string name="usb_mtp_notification_title" msgid="8396264943589760855">"Файл өткөрүү үчүн USB"</string> <string name="usb_ptp_notification_title" msgid="1347328437083192112">"Сүрөт өткөрүү үчүн USB"</string> <string name="usb_midi_notification_title" msgid="4850904915889144654">"MIDI үчүн USB"</string> - <!-- no translation found for usb_cd_installer_notification_title (6774712827892090754) --> - <skip /> <string name="usb_accessory_notification_title" msgid="7848236974087653666">"USB аксессуарга байланышты"</string> <string name="usb_notification_message" msgid="7347368030849048437">"Көбүрөөк параметр үчүн тийип коюңуз."</string> <!-- no translation found for adb_active_notification_title (6729044778949189918) --> diff --git a/core/res/res/values-lo-rLA/strings.xml b/core/res/res/values-lo-rLA/strings.xml index 2bc290863e48..b38f9155246f 100644 --- a/core/res/res/values-lo-rLA/strings.xml +++ b/core/res/res/values-lo-rLA/strings.xml @@ -1041,7 +1041,6 @@ <string name="usb_mtp_notification_title" msgid="8396264943589760855">"USB ສຳລັບການໂອນໄຟລ໌"</string> <string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB ສຳລັບການໂອນໄຟລ໌"</string> <string name="usb_midi_notification_title" msgid="4850904915889144654">"USB ສຳລັບ MIDI"</string> - <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"ເຊື່ອມຕໍ່ໃນນາມຕົວຕິດຕັ້ງ"</string> <string name="usb_accessory_notification_title" msgid="7848236974087653666">"ເຊື່ອມຕໍ່ກັບອຸປະກອນເສີມ USB ແລ້ວ"</string> <string name="usb_notification_message" msgid="7347368030849048437">"ສຳພັດສຳລັບທາງເລືອກເພີ່ມເຕີມ."</string> <string name="adb_active_notification_title" msgid="6729044778949189918">"ເຊື່ອມຕໍ່ການດີບັ໊ກຜ່ານ USB ແລ້ວ"</string> diff --git a/core/res/res/values-lt/strings.xml b/core/res/res/values-lt/strings.xml index a9b405040cf6..e4663a7a6082 100644 --- a/core/res/res/values-lt/strings.xml +++ b/core/res/res/values-lt/strings.xml @@ -1055,7 +1055,6 @@ <string name="usb_mtp_notification_title" msgid="8396264943589760855">"USB (failų perkėlimas)"</string> <string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB (nuotraukų perkėlimas)"</string> <string name="usb_midi_notification_title" msgid="4850904915889144654">"USB (MIDI)"</string> - <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"Prij. kaip diegimo programa"</string> <string name="usb_accessory_notification_title" msgid="7848236974087653666">"Prijungta prie USB priedo"</string> <string name="usb_notification_message" msgid="7347368030849048437">"Palieskite, kad būtų rodoma daugiau parinkčių."</string> <string name="adb_active_notification_title" msgid="6729044778949189918">"USB derinimas prijungtas"</string> diff --git a/core/res/res/values-lv/strings.xml b/core/res/res/values-lv/strings.xml index 3c1b78abea6b..22c4b07e01e1 100644 --- a/core/res/res/values-lv/strings.xml +++ b/core/res/res/values-lv/strings.xml @@ -1048,7 +1048,6 @@ <string name="usb_mtp_notification_title" msgid="8396264943589760855">"USB savienojums failu pārsūtīšanai"</string> <string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB savienojums fotoattēlu pārsūtīšanai"</string> <string name="usb_midi_notification_title" msgid="4850904915889144654">"USB savienojums MIDI režīmā"</string> - <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"Pievienots kā instalēšanas programma"</string> <string name="usb_accessory_notification_title" msgid="7848236974087653666">"Ir izveidots savienojums ar USB piederumu."</string> <string name="usb_notification_message" msgid="7347368030849048437">"Citas opcijas"</string> <string name="adb_active_notification_title" msgid="6729044778949189918">"USB atkļūdošana ir pievienota."</string> diff --git a/core/res/res/values-mk-rMK/strings.xml b/core/res/res/values-mk-rMK/strings.xml index 2582ea319399..ed2e58bb21d0 100644 --- a/core/res/res/values-mk-rMK/strings.xml +++ b/core/res/res/values-mk-rMK/strings.xml @@ -1041,7 +1041,6 @@ <string name="usb_mtp_notification_title" msgid="8396264943589760855">"УСБ за пренос на датотеки"</string> <string name="usb_ptp_notification_title" msgid="1347328437083192112">"УСБ за пренос на фотографии"</string> <string name="usb_midi_notification_title" msgid="4850904915889144654">"УСБ за МИДИ"</string> - <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"Поврзан како инсталатор"</string> <string name="usb_accessory_notification_title" msgid="7848236974087653666">"Поврзан со УСБ додаток"</string> <string name="usb_notification_message" msgid="7347368030849048437">"Допри за повеќе опции."</string> <string name="adb_active_notification_title" msgid="6729044778949189918">"Поврзано е отстранување грешки преку УСБ"</string> diff --git a/core/res/res/values-ml-rIN/strings.xml b/core/res/res/values-ml-rIN/strings.xml index 7a21d87dd13d..7cdabc53c9c7 100644 --- a/core/res/res/values-ml-rIN/strings.xml +++ b/core/res/res/values-ml-rIN/strings.xml @@ -123,7 +123,7 @@ <string name="roamingText11" msgid="4154476854426920970">"റോമിംഗ് ബാനർ ഓണാക്കുക"</string> <string name="roamingText12" msgid="1189071119992726320">"റോമിംഗ് ബാനർ ഓഫാക്കുക"</string> <string name="roamingTextSearching" msgid="8360141885972279963">"സേവനത്തിനായി തിരയുന്നു"</string> - <string name="wfcRegErrorTitle" msgid="2301376280632110664">"Wi-Fi കോളിംഗ്"</string> + <string name="wfcRegErrorTitle" msgid="2301376280632110664">"വൈഫൈ കോളിംഗ്"</string> <string-array name="wfcOperatorErrorAlertMessages"> </string-array> <string-array name="wfcOperatorErrorNotificationMessages"> @@ -131,9 +131,9 @@ <string name="wfcSpnFormat" msgid="8211621332478306568">"%s"</string> <string name="wfcDataSpnFormat" msgid="1118052028767666883">"%s"</string> <string name="wifi_calling_off_summary" msgid="8720659586041656098">"ഓഫ്"</string> - <string name="wfc_mode_wifi_preferred_summary" msgid="1994113411286935263">"Wi-Fi തിരഞ്ഞെടുത്തിരിക്കുന്നു"</string> + <string name="wfc_mode_wifi_preferred_summary" msgid="1994113411286935263">"വൈഫൈ തിരഞ്ഞെടുത്തിരിക്കുന്നു"</string> <string name="wfc_mode_cellular_preferred_summary" msgid="5920549484600758786">"സെല്ലുലാർ തിരഞ്ഞെടുത്തിരിക്കുന്നു"</string> - <string name="wfc_mode_wifi_only_summary" msgid="2379919155237869320">"Wi-Fi മാത്രം"</string> + <string name="wfc_mode_wifi_only_summary" msgid="2379919155237869320">"വൈഫൈ മാത്രം"</string> <string name="cfTemplateNotForwarded" msgid="1683685883841272560">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: കൈമാറിയില്ല"</string> <string name="cfTemplateForwarded" msgid="1302922117498590521">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: <xliff:g id="DIALING_NUMBER">{1}</xliff:g>"</string> <string name="cfTemplateForwardedTime" msgid="9206251736527085256">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: <xliff:g id="TIME_DELAY">{2}</xliff:g> നിമിഷത്തിനുശേഷം <xliff:g id="DIALING_NUMBER">{1}</xliff:g>"</string> @@ -161,10 +161,10 @@ <string name="contentServiceSync" msgid="8353523060269335667">"സമന്വയിപ്പിക്കുക"</string> <string name="contentServiceSyncNotificationTitle" msgid="397743349191901458">"സമന്വയിപ്പിക്കുക"</string> <string name="contentServiceTooManyDeletesNotificationDesc" msgid="8100981435080696431">"വളരെയധികം <xliff:g id="CONTENT_TYPE">%s</xliff:g> ഇല്ലാതാക്കലുകൾ."</string> - <string name="low_memory" product="tablet" msgid="6494019234102154896">"ടാബ്ലെറ്റ് സംഭരണം കഴിഞ്ഞു. ഇടം ശൂന്യമാക്കാൻ ചില ഫയലുകൾ ഇല്ലാതാക്കുക."</string> - <string name="low_memory" product="watch" msgid="4415914910770005166">"വാച്ചിലെ സംഭരണം നിറഞ്ഞു. ഇടം ശൂന്യമാക്കാൻ കുറച്ച് ഫയലുകൾ ഇല്ലാതാക്കുക."</string> - <string name="low_memory" product="tv" msgid="516619861191025923">"ടിവി സംഭരണം നിറഞ്ഞു. ഇടം ശൂന്യമാക്കാൻ കുറച്ച് ഫയലുകൾ ഇല്ലാതാക്കുക."</string> - <string name="low_memory" product="default" msgid="3475999286680000541">"ഫോൺ സംഭരണം കഴിഞ്ഞു. ഇടം ശൂന്യമാക്കാൻ ചില ഫയലുകൾ ഇല്ലാതാക്കുക."</string> + <string name="low_memory" product="tablet" msgid="6494019234102154896">"ടാബ്ലെറ്റ് സ്റ്റോറേജ് കഴിഞ്ഞു. ഇടം ശൂന്യമാക്കാൻ ചില ഫയലുകൾ ഇല്ലാതാക്കുക."</string> + <string name="low_memory" product="watch" msgid="4415914910770005166">"വാച്ചിലെ സ്റ്റോറേജ് നിറഞ്ഞു. ഇടം ശൂന്യമാക്കാൻ കുറച്ച് ഫയലുകൾ ഇല്ലാതാക്കുക."</string> + <string name="low_memory" product="tv" msgid="516619861191025923">"ടിവി സ്റ്റോറേജ് നിറഞ്ഞു. ഇടം ശൂന്യമാക്കാൻ കുറച്ച് ഫയലുകൾ ഇല്ലാതാക്കുക."</string> + <string name="low_memory" product="default" msgid="3475999286680000541">"ഫോൺ സ്റ്റോറേജ് കഴിഞ്ഞു. ഇടം ശൂന്യമാക്കാൻ ചില ഫയലുകൾ ഇല്ലാതാക്കുക."</string> <string name="ssl_ca_cert_warning" msgid="5848402127455021714">"നെറ്റ്വർക്ക് നിരീക്ഷിക്കപ്പെടാം"</string> <string name="ssl_ca_cert_noti_by_unknown" msgid="4475437862189850602">"അജ്ഞാത മൂന്നാം കക്ഷി നിരീക്ഷിക്കാം"</string> <string name="ssl_ca_cert_noti_by_administrator" msgid="550758088185764312">"നിങ്ങളുടെ ഔദ്യോഗിക പ്രൊഫൈൽ അഡ്മിനിസ്ട്രേറ്റർ"</string> @@ -234,7 +234,7 @@ <string name="permgroupdesc_calendar" msgid="3889615280211184106">"നിങ്ങളുടെ കലണ്ടർ ആക്സസ്സ് ചെയ്യുക"</string> <string name="permgrouplab_sms" msgid="228308803364967808">"SMS"</string> <string name="permgroupdesc_sms" msgid="4656988620100940350">"SMS സന്ദേശങ്ങൾ അയയ്ക്കുകയും കാണുകയും ചെയ്യുക"</string> - <string name="permgrouplab_storage" msgid="1971118770546336966">"സംഭരണം"</string> + <string name="permgrouplab_storage" msgid="1971118770546336966">"സ്റ്റോറേജ്"</string> <string name="permgroupdesc_storage" msgid="637758554581589203">"നിങ്ങളുടെ ഉപകരണത്തിലെ ഫോട്ടോകളും മീഡിയയും ഫയലുകളും ആക്സസ് ചെയ്യുക"</string> <string name="permgrouplab_microphone" msgid="171539900250043464">"മൈക്രോഫോണ്"</string> <string name="permgroupdesc_microphone" msgid="4988812113943554584">"ഓഡിയോ റെക്കോർഡ് ചെയ്യുക"</string> @@ -350,14 +350,12 @@ <string name="permdesc_camera" msgid="8497216524735535009">"ക്യാമറ ഉപയോഗിച്ച് ചിത്രങ്ങളും വീഡിയോകളും എടുക്കാൻ അപ്ലിക്കേഷനെ അനുവദിക്കുന്നു. നിങ്ങളുടെ സ്ഥിരീകരണമില്ലാതെ ഏതുസമയത്തും ക്യാമറ ഉപയോഗിക്കാൻ ഈ അനുമതി അപ്ലിക്കേഷനെ അനുവദിക്കുന്നു."</string> <string name="permlab_vibrate" msgid="7696427026057705834">"വൈബ്രേറ്റുചെയ്യൽ നിയന്ത്രിക്കുക"</string> <string name="permdesc_vibrate" msgid="6284989245902300945">"വൈബ്രേറ്റർ നിയന്ത്രിക്കുന്നതിന് അപ്ലിക്കേഷനെ അനുവദിക്കുന്നു."</string> - <string name="permlab_flashlight" msgid="2155920810121984215">"ഫ്ലാഷ്ലൈറ്റ് നിയന്ത്രിക്കുക"</string> + <string name="permlab_flashlight" msgid="2155920810121984215">"ടോർച്ച് നിയന്ത്രിക്കുക"</string> <string name="permdesc_flashlight" msgid="6522284794568368310">"ഫ്ലാഷ്ലൈറ്റിനെ നിയന്ത്രിക്കുന്നതിന് അപ്ലിക്കേഷനെ അനുവദിക്കുന്നു."</string> <string name="permlab_callPhone" msgid="3925836347681847954">"ഫോൺ നമ്പറുകളിലേക്ക് നേരിട്ട് വിളിക്കുക"</string> <string name="permdesc_callPhone" msgid="3740797576113760827">"നിങ്ങളുടെ ഇടപെടൽ ഇല്ലാതെ ഫോൺ നമ്പറുകളിലേക്ക് കോൾ ചെയ്യാൻ അപ്ലിക്കേഷനെ അനുവദിക്കുന്നു. ഇത് അപ്രതീക്ഷിത നിരക്കുകൾക്കോ കോളുകൾക്കോ ഇടയാക്കാം. ഇത് അടിയന്തര നമ്പറുകളിലേക്ക് വിളിക്കാൻ അപ്ലിക്കേഷനെ അനുവദിക്കില്ലെന്ന കാര്യം ശ്രദ്ധിക്കുക. ക്ഷുദ്രകരമായ അപ്ലിക്കേഷനുകൾ നിങ്ങളുടെ സ്ഥിരീകരണമില്ലാതെ കോളുകൾ ചെയ്യുന്നത് പണച്ചെലവിനിടയാക്കാം."</string> - <!-- no translation found for permlab_accessImsCallService (3574943847181793918) --> - <skip /> - <!-- no translation found for permdesc_accessImsCallService (8992884015198298775) --> - <skip /> + <string name="permlab_accessImsCallService" msgid="3574943847181793918">"IMS കോൾ സേവനം ആക്സസ് ചെയ്യുക"</string> + <string name="permdesc_accessImsCallService" msgid="8992884015198298775">"നിങ്ങളുടെ ഇടപെടൽ ഇല്ലാതെ കോളുകൾ ചെയ്യാൻ IMS സേവനം ഉപയോഗിക്കുന്നതിന് ആപ്പിനെ അനുവദിക്കുന്നു."</string> <string name="permlab_readPhoneState" msgid="9178228524507610486">"ഫോൺ നിലയും ഐഡന്റിറ്റിയും റീഡുചെയ്യുക"</string> <string name="permdesc_readPhoneState" msgid="1639212771826125528">"ഉപകരണത്തിന്റെ ഫോൺ സവിശേഷതകൾ ആക്സസ്സുചെയ്യാൻ അപ്ലിക്കേഷനെ അനുവദിക്കുന്നു. ഈ അനുമതി ഫോൺ നമ്പർ, ഉപകരണ ഐഡികൾ, ഒരു കോൾ സജീവമാണോയെന്നത്, ഒരു കോൾ കണക്റ്റുചെയ്ത വിദൂര നമ്പർ എന്നിവ നിർണ്ണയിക്കാൻ അപ്ലിക്കേഷനെ അനുവദിക്കുന്നു."</string> <string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"സുഷുപ്തിയിലാകുന്നതിൽ നിന്ന് ടാബ്ലെറ്റിനെ തടയുക"</string> @@ -390,14 +388,14 @@ <string name="permdesc_changeNetworkState" msgid="6789123912476416214">"നെറ്റ്വർക്ക് കണക്റ്റിവിറ്റിയുടെ നില മാറ്റുന്നതിന് അപ്ലിക്കേഷനെ അനുവദിക്കുന്നു."</string> <string name="permlab_changeTetherState" msgid="5952584964373017960">"ടെതർ ചെയ്ത കണക്റ്റിവിറ്റി മാറ്റുക"</string> <string name="permdesc_changeTetherState" msgid="1524441344412319780">"ടെതർചെയ്ത നെറ്റ്വർക്ക് കണക്റ്റിവിറ്റിയുടെ നിലമാറ്റുന്നതിന് അപ്ലിക്കേഷനെ അനുവദിക്കുന്നു."</string> - <string name="permlab_accessWifiState" msgid="5202012949247040011">"Wi-Fi കണക്ഷനുകൾ കാണുക"</string> - <string name="permdesc_accessWifiState" msgid="5002798077387803726">"Wi-Fi പ്രവർത്തനക്ഷമമാണോ എന്നതും കണക്റ്റുചെയ്തിരിക്കുന്ന Wi-Fi ഉപകരണങ്ങളുടെ പേരും പോലുള്ള, Wi-Fi നെറ്റ്വർക്കിംഗിനെക്കുറിച്ചുള്ള വിവരം കാണാൻ അപ്ലിക്കേഷനെ അനുവദിക്കുന്നു."</string> - <string name="permlab_changeWifiState" msgid="6550641188749128035">"Wi-Fi കണക്റ്റുചെയ്യുക, അതിൽ നിന്നും വിച്ഛേദിക്കുക"</string> - <string name="permdesc_changeWifiState" msgid="7137950297386127533">"Wi-Fi ആക്സസ്സ് പോയിന്റുകളിലേക്ക് കണക്റ്റുചെയ്യാനും അതിൽ നിന്ന് വിച്ഛേദിക്കാനും Wi-Fi നെറ്റ്വർക്കുകൾക്കായി ഉപകരണ കോൺഫിഗറേഷൻ മാറ്റാനും അപ്ലിക്കേഷനെ അനുവദിക്കുന്നു."</string> - <string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"Wi-Fi മൾട്ടികാസ്റ്റ് റിസപ്ഷൻ അനുവദിക്കുക"</string> - <string name="permdesc_changeWifiMulticastState" product="tablet" msgid="7969774021256336548">"മൾട്ടികാസ്റ്റ് വിലാസങ്ങൾ ഉപയോഗിച്ച് നിങ്ങളുടെ ടബ്ലെറ്റിലേക്ക് മാത്രമല്ലാതെ, ഒരു Wi-Fi നെറ്റ്വർക്കിലെ എല്ലാ ഉപകരണങ്ങളിലേക്കും അയച്ച പായ്ക്കറ്റുകൾ നേടാൻ അപ്ലിക്കേഷനെ അനുവദിക്കുന്നു. ഇത് മൾട്ടികാസ്റ്റ് ഇതര മോഡിനേക്കാൾ അധികം പവർ ഉപയോഗിക്കുന്നു."</string> - <string name="permdesc_changeWifiMulticastState" product="tv" msgid="9031975661145014160">"നിങ്ങളുടെ ടിവിയ്ക്ക് മാത്രമായിട്ടല്ലാതെ, മൾട്ടികാസ്റ്റ് വിലാസങ്ങൾ ഉപയോഗിച്ച്, ഒരു Wi-Fi നെറ്റ്വർക്കിലുള്ള എല്ലാ ഉപകരണങ്ങൾക്കും അയച്ച പാക്കറ്റുകൾ സ്വീകരിക്കുന്നതിന് അപ്ലിക്കേഷനെ അനുവദിക്കുന്നു. ഇത് മൾട്ടികാസ്റ്റ് അല്ലാത്ത മോഡിനെക്കാൾ കൂടുതൽ പവർ ഉപയോഗിക്കുന്നു."</string> - <string name="permdesc_changeWifiMulticastState" product="default" msgid="6851949706025349926">"മൾട്ടികാസ്റ്റ് വിലാസങ്ങൾ ഉപയോഗിച്ച് നിങ്ങളുടെ ഫോണിലേക്ക് മാത്രമല്ലാതെ, ഒരു Wi-Fi നെറ്റ്വർക്കിലെ എല്ലാ ഉപകരണങ്ങളിലേക്കും അയച്ച പായ്ക്കറ്റുകൾ നേടാൻ അപ്ലിക്കേഷനെ അനുവദിക്കുന്നു. ഇത് മൾട്ടികാസ്റ്റ് ഇതര മോഡിനേക്കാൾ അധികം പവർ ഉപയോഗിക്കുന്നു."</string> + <string name="permlab_accessWifiState" msgid="5202012949247040011">"വൈഫൈ കണക്ഷനുകൾ കാണുക"</string> + <string name="permdesc_accessWifiState" msgid="5002798077387803726">"വൈഫൈ പ്രവർത്തനക്ഷമമാണോ എന്നതും കണക്റ്റുചെയ്തിരിക്കുന്ന വൈഫൈ ഉപകരണങ്ങളുടെ പേരും പോലുള്ള, വൈഫൈ നെറ്റ്വർക്കിംഗിനെക്കുറിച്ചുള്ള വിവരം കാണാൻ അപ്ലിക്കേഷനെ അനുവദിക്കുന്നു."</string> + <string name="permlab_changeWifiState" msgid="6550641188749128035">"വൈഫൈ കണക്റ്റുചെയ്യുക, അതിൽ നിന്നും വിച്ഛേദിക്കുക"</string> + <string name="permdesc_changeWifiState" msgid="7137950297386127533">"വൈഫൈ ആക്സസ്സ് പോയിന്റുകളിലേക്ക് കണക്റ്റുചെയ്യാനും അതിൽ നിന്ന് വിച്ഛേദിക്കാനും വൈഫൈ നെറ്റ്വർക്കുകൾക്കായി ഉപകരണ കോൺഫിഗറേഷൻ മാറ്റാനും അപ്ലിക്കേഷനെ അനുവദിക്കുന്നു."</string> + <string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"വൈഫൈ മൾട്ടികാസ്റ്റ് റിസപ്ഷൻ അനുവദിക്കുക"</string> + <string name="permdesc_changeWifiMulticastState" product="tablet" msgid="7969774021256336548">"മൾട്ടികാസ്റ്റ് വിലാസങ്ങൾ ഉപയോഗിച്ച് നിങ്ങളുടെ ടബ്ലെറ്റിലേക്ക് മാത്രമല്ലാതെ, ഒരു വൈഫൈ നെറ്റ്വർക്കിലെ എല്ലാ ഉപകരണങ്ങളിലേക്കും അയച്ച പായ്ക്കറ്റുകൾ നേടാൻ അപ്ലിക്കേഷനെ അനുവദിക്കുന്നു. ഇത് മൾട്ടികാസ്റ്റ് ഇതര മോഡിനേക്കാൾ അധികം പവർ ഉപയോഗിക്കുന്നു."</string> + <string name="permdesc_changeWifiMulticastState" product="tv" msgid="9031975661145014160">"നിങ്ങളുടെ ടിവിയ്ക്ക് മാത്രമായിട്ടല്ലാതെ, മൾട്ടികാസ്റ്റ് വിലാസങ്ങൾ ഉപയോഗിച്ച്, ഒരു വൈഫൈ നെറ്റ്വർക്കിലുള്ള എല്ലാ ഉപകരണങ്ങൾക്കും അയച്ച പാക്കറ്റുകൾ സ്വീകരിക്കുന്നതിന് അപ്ലിക്കേഷനെ അനുവദിക്കുന്നു. ഇത് മൾട്ടികാസ്റ്റ് അല്ലാത്ത മോഡിനെക്കാൾ കൂടുതൽ പവർ ഉപയോഗിക്കുന്നു."</string> + <string name="permdesc_changeWifiMulticastState" product="default" msgid="6851949706025349926">"മൾട്ടികാസ്റ്റ് വിലാസങ്ങൾ ഉപയോഗിച്ച് നിങ്ങളുടെ ഫോണിലേക്ക് മാത്രമല്ലാതെ, ഒരു വൈഫൈ നെറ്റ്വർക്കിലെ എല്ലാ ഉപകരണങ്ങളിലേക്കും അയച്ച പായ്ക്കറ്റുകൾ നേടാൻ അപ്ലിക്കേഷനെ അനുവദിക്കുന്നു. ഇത് മൾട്ടികാസ്റ്റ് ഇതര മോഡിനേക്കാൾ അധികം പവർ ഉപയോഗിക്കുന്നു."</string> <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"ബ്ലൂടൂത്ത് ക്രമീകരണങ്ങൾ ആക്സസ്സുചെയ്യുക"</string> <string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"ഒരു പ്രാദേശിക ബ്ലൂടൂത്ത് ടാബ്ലെറ്റ് കോൺഫിഗർചെയ്യുന്നതിനും വിദൂര ഉപകരണങ്ങളെ കണ്ടെത്തി ജോടിയാക്കുന്നതിനും അപ്ലിക്കേഷനെ അനുവദിക്കുന്നു."</string> <string name="permdesc_bluetoothAdmin" product="tv" msgid="3373125682645601429">"പ്രാദേശിക Bluetooth ടിവി കോൺഫിഗർചെയ്യുന്നതിനും വിദൂര ഉപകരണങ്ങൾ കണ്ടെത്തി ജോടിയാക്കുന്നതിനും അപ്ലിക്കേഷനെ അനുവദിക്കുന്നു."</string> @@ -651,7 +649,7 @@ <string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"പിൻ കോഡ് തെറ്റാണ്."</string> <string name="keyguard_label_text" msgid="861796461028298424">"അൺലോക്ക് ചെയ്യുന്നതിന് മെനു, 0 എന്നിവ അമർത്തുക."</string> <string name="emergency_call_dialog_number_for_display" msgid="696192103195090970">"അടിയന്തര നമ്പർ"</string> - <string name="lockscreen_carrier_default" msgid="8963839242565653192">"സേവനമില്ല."</string> + <string name="lockscreen_carrier_default" msgid="8963839242565653192">"സേവനമില്ല"</string> <string name="lockscreen_screen_locked" msgid="7288443074806832904">"സ്ക്രീൻ ലോക്കുചെയ്തു."</string> <string name="lockscreen_instructions_when_pattern_enabled" msgid="46154051614126049">"അൺലോക്ക് ചെയ്യുന്നതിനായി മെനു അമർത്തുക അല്ലെങ്കിൽ അടിയന്തര കോൾ വിളിക്കുക."</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="686260028797158364">"അൺലോക്കുചെയ്യാൻ മെനു അമർത്തുക."</string> @@ -917,7 +915,7 @@ <string name="smv_process" msgid="5120397012047462446">"<xliff:g id="PROCESS">%1$s</xliff:g> എന്ന പ്രോസസ്സ് അതിന്റെ സ്വയം നടപ്പിലാക്കിയ StrictMode നയം ലംഘിച്ചു."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Android അപ്ഗ്രേഡുചെയ്യുന്നു…"</string> <string name="android_start_title" msgid="8418054686415318207">"Android ആരംഭിക്കുന്നു…"</string> - <string name="android_upgrading_fstrim" msgid="8036718871534640010">"സംഭരണം ഒപ്റ്റിമൈസ് ചെയ്യുന്നു."</string> + <string name="android_upgrading_fstrim" msgid="8036718871534640010">"സ്റ്റോറേജ് ഒപ്റ്റിമൈസ് ചെയ്യുന്നു."</string> <string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_0">%1$d</xliff:g> / <xliff:g id="NUMBER_1">%2$d</xliff:g> അപ്ലിക്കേഷൻ ഓപ്റ്റിമൈസ് ചെയ്യുന്നു."</string> <string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g> തയ്യാറാക്കുന്നു."</string> <string name="android_upgrading_starting_apps" msgid="451464516346926713">"അപ്ലിക്കേഷനുകൾ ആരംഭിക്കുന്നു."</string> @@ -955,14 +953,14 @@ <string name="ringtone_picker_title" msgid="3515143939175119094">"റിംഗ്ടോണുകൾ"</string> <string name="ringtone_unknown" msgid="5477919988701784788">"അജ്ഞാത റിംഗ്ടോൺ"</string> <plurals name="wifi_available" formatted="false" msgid="7900333017752027322"> - <item quantity="other">Wi-Fi നെറ്റ്വർക്കുകൾ ലഭ്യമാണ്</item> - <item quantity="one">Wi-Fi നെറ്റ്വർക്ക് ലഭ്യമാണ്</item> + <item quantity="other">വൈഫൈ നെറ്റ്വർക്കുകൾ ലഭ്യമാണ്</item> + <item quantity="one">വൈഫൈ നെറ്റ്വർക്ക് ലഭ്യമാണ്</item> </plurals> <plurals name="wifi_available_detailed" formatted="false" msgid="1140699367193975606"> - <item quantity="other">ലഭ്യമായ Wi-Fi നെറ്റ്വർക്കുകൾ തുറക്കുക</item> - <item quantity="one">ലഭ്യമായ Wi-Fi നെറ്റ്വർക്ക് തുറക്കുക</item> + <item quantity="other">ലഭ്യമായ വൈഫൈ നെറ്റ്വർക്കുകൾ തുറക്കുക</item> + <item quantity="one">ലഭ്യമായ വൈഫൈ നെറ്റ്വർക്ക് തുറക്കുക</item> </plurals> - <string name="wifi_available_sign_in" msgid="9157196203958866662">"Wi-Fi നെറ്റ്വർക്കിലേക്ക് സൈൻ ഇൻ ചെയ്യുക"</string> + <string name="wifi_available_sign_in" msgid="9157196203958866662">"വൈഫൈ നെറ്റ്വർക്കിലേക്ക് സൈൻ ഇൻ ചെയ്യുക"</string> <string name="network_available_sign_in" msgid="1848877297365446605">"നെറ്റ്വർക്കിലേക്ക് സൈൻ ഇൻ ചെയ്യുക"</string> <!-- no translation found for network_available_sign_in_detailed (8000081941447976118) --> <skip /> @@ -973,10 +971,10 @@ <string name="wifi_connect_alert_title" msgid="8455846016001810172">"കണക്ഷൻ അനുവദിക്കണോ?"</string> <string name="wifi_connect_alert_message" msgid="6451273376815958922">"അപ്ലിക്കേഷൻ %1$s Wifi നെറ്റ്വർക്കിലേക്ക് കണക്റ്റുചെയ്യാൻ താൽപ്പര്യപ്പെടുന്നു %2$s"</string> <string name="wifi_connect_default_application" msgid="7143109390475484319">"ഒരു അപ്ലിക്കേഷൻ"</string> - <string name="wifi_p2p_dialog_title" msgid="97611782659324517">"Wi-Fi ഡയറക്ട്"</string> - <string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Wi-Fi ഡയറക്റ്റ് ആരംഭിക്കുക. ഇത് Wi-Fi ക്ലയന്റ്/ഹോട്ട്സ്പോട്ട് ഓഫാക്കും."</string> - <string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Wi-Fi ഡയറക്റ്റ് ആരംഭിക്കാനായില്ല."</string> - <string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi ഡയറക്ട് ഓണാണ്"</string> + <string name="wifi_p2p_dialog_title" msgid="97611782659324517">"വൈഫൈ ഡയറക്ട്"</string> + <string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"വൈഫൈ ഡയറക്റ്റ് ആരംഭിക്കുക. ഇത് വൈഫൈ ക്ലയന്റ്/ഹോട്ട്സ്പോട്ട് ഓഫാക്കും."</string> + <string name="wifi_p2p_failed_message" msgid="3763669677935623084">"വൈഫൈ ഡയറക്റ്റ് ആരംഭിക്കാനായില്ല."</string> + <string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"വൈഫൈ ഡയറക്ട് ഓണാണ്"</string> <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"ക്രമീകരണങ്ങൾക്കായി സ്പർശിക്കുക"</string> <string name="accept" msgid="1645267259272829559">"അംഗീകരിക്കുക"</string> <string name="decline" msgid="2112225451706137894">"നിരസിക്കുക"</string> @@ -999,10 +997,10 @@ <string name="sms_premium_short_code_details" msgid="7869234868023975"><b>"ഇത് നിങ്ങളുടെ മൊബൈൽ അക്കൗണ്ടിൽ നിന്ന് നിരക്കുകൾ ഈടാക്കാൻ കാരണമാകും."</b></string> <string name="sms_short_code_confirm_allow" msgid="4458878637111023413">"അയയ്ക്കുക"</string> <string name="sms_short_code_confirm_deny" msgid="2927389840209170706">"റദ്ദാക്കുക"</string> - <string name="sms_short_code_remember_choice" msgid="5289538592272218136">"എന്റെ ചോയ്സ് ഓർമ്മിക്കുക"</string> + <string name="sms_short_code_remember_choice" msgid="5289538592272218136">"എന്റെ ഇഷ്ടം ഓർമ്മിച്ചുവയ്ക്കുക"</string> <string name="sms_short_code_remember_undo_instruction" msgid="4960944133052287484">"നിങ്ങൾക്ക് ഇത് പിന്നീട് ക്രമീകരണങ്ങൾ > അപ്ലിക്കേഷനുകൾ എന്നതിൽ മാറ്റാനാകും"</string> <string name="sms_short_code_confirm_always_allow" msgid="3241181154869493368">"എല്ലായ്പ്പോഴും അനുവദിക്കുക"</string> - <string name="sms_short_code_confirm_never_allow" msgid="446992765774269673">"ഒരിക്കലും അനുവദിക്കരുത്"</string> + <string name="sms_short_code_confirm_never_allow" msgid="446992765774269673">"ഒരിക്കലുമനുവദിക്കരുത്"</string> <string name="sim_removed_title" msgid="6227712319223226185">"സിം കാർഡ് നീക്കംചെയ്തു"</string> <string name="sim_removed_message" msgid="5450336489923274918">"സാധുതയുള്ള ഒരു സിം കാർഡ് ചേർത്ത് പുനരാരംഭിക്കുന്നതുവരെ സെല്ലുലാർ നെറ്റ്വർക്ക് ലഭ്യമാകില്ല."</string> <string name="sim_done_button" msgid="827949989369963775">"പൂർത്തിയായി"</string> @@ -1017,31 +1015,30 @@ <string name="perms_description_app" msgid="5139836143293299417">"<xliff:g id="APP_NAME">%1$s</xliff:g> നൽകുന്നത്."</string> <string name="no_permissions" msgid="7283357728219338112">"അനുമതികളൊന്നും ആവശ്യമില്ല"</string> <string name="perm_costs_money" msgid="4902470324142151116">"ഇത് നിങ്ങൾക്ക് പണച്ചെലവിനിടയാക്കാം"</string> - <string name="usb_storage_activity_title" msgid="4465055157209648641">"USB മാസ്സ് സംഭരണം"</string> + <string name="usb_storage_activity_title" msgid="4465055157209648641">"USB മാസ്സ് സ്റ്റോറേജ്"</string> <string name="usb_storage_title" msgid="5901459041398751495">"USB കണക്റ്റുചെയ്തു"</string> <string name="usb_storage_message" product="nosdcard" msgid="3308538094316477839">"നിങ്ങൾ USB മുഖേന നിങ്ങളുടെ കമ്പ്യൂട്ടറിൽ കണക്റ്റുചെയ്തു. നിങ്ങളുടെ കമ്പ്യൂട്ടറിനും Android-ന്റെ USB സംഭർണത്തിനുമിടയിൽ ഫയലുകൾ പകർത്തണമെങ്കിൽ ചുവടെയുള്ള ബട്ടൺ സ്പർശിക്കുക."</string> <string name="usb_storage_message" product="default" msgid="805351000446037811">"നിങ്ങൾ USB മുഖേന നിങ്ങളുടെ കമ്പ്യൂട്ടറിൽ കണക്റ്റുചെയ്തു. നിങ്ങളുടെ കമ്പ്യൂട്ടറിനും Android-ന്റെ SD കാർഡിനുമിടയിൽ ഫയലുകൾ പകർത്തണമെങ്കിൽ ചുവടെയുള്ള ബട്ടൺ സ്പർശിക്കുക."</string> - <string name="usb_storage_button_mount" msgid="1052259930369508235">"USB സംഭരണം ഓണാക്കുക"</string> - <string name="usb_storage_error_message" product="nosdcard" msgid="3017045217365540658">"USB മാസ്സ് സംഭരണത്തിനായി നിങ്ങളുടെ USB സംഭരണം ഉപയോഗിക്കുന്നതിൽ ഒരു പ്രശ്നമുണ്ട്."</string> + <string name="usb_storage_button_mount" msgid="1052259930369508235">"USB സ്റ്റോറേജ് ഓണാക്കുക"</string> + <string name="usb_storage_error_message" product="nosdcard" msgid="3017045217365540658">"USB മാസ്സ് സംഭരണത്തിനായി നിങ്ങളുടെ USB സ്റ്റോറേജ് ഉപയോഗിക്കുന്നതിൽ ഒരു പ്രശ്നമുണ്ട്."</string> <string name="usb_storage_error_message" product="default" msgid="2876018512716970313">"USB മാസ്സ് സംഭരണത്തിനായി നിങ്ങളുടെ SD കാർഡ് ഉപയോഗിക്കുന്നതിൽ ഒരു പ്രശ്നമുണ്ട്."</string> <string name="usb_storage_notification_title" msgid="8175892554757216525">"USB കണക്റ്റുചെയ്തു"</string> <string name="usb_storage_notification_message" msgid="939822783828183763">"നിങ്ങളുടെ കമ്പ്യൂട്ടറിലേക്ക്/കമ്പ്യൂട്ടറിൽ നിന്നും ഫയലുകൾ പകർത്താൻ സ്പർശിക്കുക."</string> - <string name="usb_storage_stop_notification_title" msgid="2336058396663516017">"USB സംഭരണം ഓഫാക്കുക"</string> - <string name="usb_storage_stop_notification_message" msgid="1656852098555623822">"USB സംഭരണം ഓഫുചെയ്യാൻ സ്പർശിക്കുക."</string> - <string name="usb_storage_stop_title" msgid="660129851708775853">"USB സംഭരണം ഉപയോഗത്തിലാണ്"</string> - <string name="usb_storage_stop_message" product="nosdcard" msgid="4264025280777219521">"USB സംഭരണം ഓഫുചെയ്യുന്നതിന് മുമ്പ്, നിങ്ങളുടെ കമ്പ്യൂട്ടറിൽ നിന്നും Android-ന്റെ USB സംഭരണം അൺമൗണ്ടുചെയ്യുക (\"ഒഴിവാക്കുക\")."</string> - <string name="usb_storage_stop_message" product="default" msgid="8043969782460613114">"USB സംഭരണം ഓഫുചെയ്യുന്നതിന് മുമ്പ്, നിങ്ങളുടെ കമ്പ്യൂട്ടറിൽ നിന്നും Android-ന്റെ SD കാർഡ് അൺമൗണ്ടുചെയ്യുക (\"ഒഴിവാക്കുക\")."</string> - <string name="usb_storage_stop_button_mount" msgid="7060218034900696029">"USB സംഭരണം ഓഫാക്കുക"</string> - <string name="usb_storage_stop_error_message" msgid="1970374898263063836">"USB സംഭരണം ഓഫുചെയ്യുന്നതിൽ ഒരു പ്രശ്നമുണ്ടായിരുന്നു. നിങ്ങൾ USB ഹോസ്റ്റ് മൗണ്ടുചെയ്തിട്ടുണ്ടെന്ന് ഉറപ്പുവരുത്തിയതിനുശേഷം വീണ്ടും ശ്രമിക്കുക."</string> - <string name="dlg_confirm_kill_storage_users_title" msgid="963039033470478697">"USB സംഭരണം ഓണാക്കുക"</string> - <string name="dlg_confirm_kill_storage_users_text" msgid="5100428757107469454">"നിങ്ങൾ USB സംഭരണം ഓൺ ചെയ്യുകയാണെങ്കിൽ, നിങ്ങൾ ഉപയോഗിക്കുന്ന ചില അപ്ലിക്കേഷനുകൾ USB സംഭരണം ഓഫുചെയ്യുന്നതുവരെ പ്രവർത്തനം നിർത്താനും ലഭ്യമാകാതിരിക്കാനും ഇടയുണ്ട്."</string> + <string name="usb_storage_stop_notification_title" msgid="2336058396663516017">"USB സ്റ്റോറേജ് ഓഫാക്കുക"</string> + <string name="usb_storage_stop_notification_message" msgid="1656852098555623822">"USB സ്റ്റോറേജ് ഓഫുചെയ്യാൻ സ്പർശിക്കുക."</string> + <string name="usb_storage_stop_title" msgid="660129851708775853">"USB സ്റ്റോറേജ് ഉപയോഗത്തിലാണ്"</string> + <string name="usb_storage_stop_message" product="nosdcard" msgid="4264025280777219521">"USB സ്റ്റോറേജ് ഓഫുചെയ്യുന്നതിന് മുമ്പ്, നിങ്ങളുടെ കമ്പ്യൂട്ടറിൽ നിന്നും Android-ന്റെ USB സ്റ്റോറേജ് അൺമൗണ്ടുചെയ്യുക (\"ഒഴിവാക്കുക\")."</string> + <string name="usb_storage_stop_message" product="default" msgid="8043969782460613114">"USB സ്റ്റോറേജ് ഓഫുചെയ്യുന്നതിന് മുമ്പ്, നിങ്ങളുടെ കമ്പ്യൂട്ടറിൽ നിന്നും Android-ന്റെ SD കാർഡ് അൺമൗണ്ടുചെയ്യുക (\"ഒഴിവാക്കുക\")."</string> + <string name="usb_storage_stop_button_mount" msgid="7060218034900696029">"USB സ്റ്റോറേജ് ഓഫാക്കുക"</string> + <string name="usb_storage_stop_error_message" msgid="1970374898263063836">"USB സ്റ്റോറേജ് ഓഫുചെയ്യുന്നതിൽ ഒരു പ്രശ്നമുണ്ടായിരുന്നു. നിങ്ങൾ USB ഹോസ്റ്റ് മൗണ്ടുചെയ്തിട്ടുണ്ടെന്ന് ഉറപ്പുവരുത്തിയതിനുശേഷം വീണ്ടും ശ്രമിക്കുക."</string> + <string name="dlg_confirm_kill_storage_users_title" msgid="963039033470478697">"USB സ്റ്റോറേജ് ഓണാക്കുക"</string> + <string name="dlg_confirm_kill_storage_users_text" msgid="5100428757107469454">"നിങ്ങൾ USB സ്റ്റോറേജ് ഓൺ ചെയ്യുകയാണെങ്കിൽ, നിങ്ങൾ ഉപയോഗിക്കുന്ന ചില അപ്ലിക്കേഷനുകൾ USB സ്റ്റോറേജ് ഓഫുചെയ്യുന്നതുവരെ പ്രവർത്തനം നിർത്താനും ലഭ്യമാകാതിരിക്കാനും ഇടയുണ്ട്."</string> <string name="dlg_error_title" msgid="7323658469626514207">"USB പ്രവർത്തനം പരാജയപ്പെട്ടു"</string> <string name="dlg_ok" msgid="7376953167039865701">"ശരി"</string> <string name="usb_charging_notification_title" msgid="4004114449249406402">"ചാർജ്ജിംഗിനായുള്ള USB"</string> <string name="usb_mtp_notification_title" msgid="8396264943589760855">"ഫയൽ കൈമാറ്റത്തിനുള്ള USB"</string> <string name="usb_ptp_notification_title" msgid="1347328437083192112">"ഫോട്ടോ കൈമാറ്റത്തിനായുള്ള USB"</string> <string name="usb_midi_notification_title" msgid="4850904915889144654">"MIDI-യ്ക്കായുള്ള USB"</string> - <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"ഇൻസ്റ്റാളറായി കണക്റ്റുചെയ്തു"</string> <string name="usb_accessory_notification_title" msgid="7848236974087653666">"ഒരു USB ആക്സസ്സറി കണക്റ്റുചെയ്തു"</string> <string name="usb_notification_message" msgid="7347368030849048437">"കൂടുതൽ ഓപ്ഷനുകൾക്ക് സ്പർശിക്കൂ."</string> <string name="adb_active_notification_title" msgid="6729044778949189918">"USB ഡീബഗ്ഗിംഗ് കണക്റ്റുചെയ്തു"</string> @@ -1155,13 +1152,13 @@ <string name="progress_unmounting" product="default" msgid="1327894998409537190">"SD കാർഡ് അൺമൗണ്ടുചെയ്യുന്നു…"</string> <string name="progress_erasing" product="nosdcard" msgid="4521573321524340058">"USB കാർഡ് മായ്ക്കുന്നു…"</string> <string name="progress_erasing" product="default" msgid="6596988875507043042">"SD കാർഡ് മായ്ക്കുന്നു…"</string> - <string name="format_error" product="nosdcard" msgid="6299769563624776948">"USB സംഭരണം മായ്ക്കാനായില്ല."</string> + <string name="format_error" product="nosdcard" msgid="6299769563624776948">"USB സ്റ്റോറേജ് മായ്ക്കാനായില്ല."</string> <string name="format_error" product="default" msgid="7315248696644510935">"SD കാർഡ് മായ്ക്കാനായില്ല."</string> <string name="media_bad_removal" msgid="7960864061016603281">"അൺമൗണ്ട് ചെയ്യുന്നതിനുമുമ്പ് SD കാർഡ് നീക്കംചെയ്തു."</string> - <string name="media_checking" product="nosdcard" msgid="418188720009569693">"നിലവിൽ USB സംഭരണം പരിശോധിക്കുന്നു."</string> + <string name="media_checking" product="nosdcard" msgid="418188720009569693">"നിലവിൽ USB സ്റ്റോറേജ് പരിശോധിക്കുന്നു."</string> <string name="media_checking" product="default" msgid="7334762503904827481">"നിലവിൽ SD കാർഡ് പരിശോധിക്കുന്നു."</string> <string name="media_removed" msgid="7001526905057952097">"SD കാർഡ് നീക്കംചെയ്തു."</string> - <string name="media_shared" product="nosdcard" msgid="5830814349250834225">"ഒരു കമ്പ്യൂട്ടറിൽ USB സംഭരണം നിലവിൽ ഉപയോഗത്തിലാണ്."</string> + <string name="media_shared" product="nosdcard" msgid="5830814349250834225">"ഒരു കമ്പ്യൂട്ടറിൽ USB സ്റ്റോറേജ് നിലവിൽ ഉപയോഗത്തിലാണ്."</string> <string name="media_shared" product="default" msgid="5706130568133540435">"ഒരു കമ്പ്യൂട്ടറിൽ SD കാർഡ് നിലവിൽ ഉപയോഗത്തിലാണ്."</string> <string name="media_unknown_state" msgid="729192782197290385">"അജ്ഞാത നിലയിലുള്ള ബാഹ്യ മീഡിയ."</string> <string name="share" msgid="1778686618230011964">"പങ്കിടുക"</string> @@ -1220,23 +1217,23 @@ <string name="action_menu_overflow_description" msgid="2295659037509008453">"കൂടുതല് ഓപ്ഷനുകള്"</string> <string name="action_bar_home_description_format" msgid="7965984360903693903">"%1$s, %2$s"</string> <string name="action_bar_home_subtitle_description_format" msgid="6985546530471780727">"%1$s, %2$s, %3$s"</string> - <string name="storage_internal" msgid="4891916833657929263">"ആന്തരിക സംഭരണം"</string> + <string name="storage_internal" msgid="4891916833657929263">"ആന്തരിക സ്റ്റോറേജ്"</string> <string name="storage_sd_card" msgid="3282948861378286745">"SD കാർഡ്"</string> <string name="storage_sd_card_label" msgid="6347111320774379257">"<xliff:g id="MANUFACTURER">%s</xliff:g> SD കാർഡ്"</string> <string name="storage_usb_drive" msgid="6261899683292244209">"USB ഡ്രൈവ്"</string> <string name="storage_usb_drive_label" msgid="4501418548927759953">"<xliff:g id="MANUFACTURER">%s</xliff:g> USB ഡ്രൈവ്"</string> - <string name="storage_usb" msgid="3017954059538517278">"USB സംഭരണം"</string> + <string name="storage_usb" msgid="3017954059538517278">"USB സ്റ്റോറേജ്"</string> <string name="data_usage_warning_title" msgid="1955638862122232342">"ഡാറ്റ ഉപയോഗ മുന്നറിയിപ്പ്"</string> <string name="data_usage_warning_body" msgid="2814673551471969954">"ഉപയോഗവും ക്രമീകരണങ്ങളും കാണാൻ സ്പർശിക്കുക."</string> <string name="data_usage_3g_limit_title" msgid="4361523876818447683">"2G-3G ഡാറ്റ പരിധിയിലെത്തി"</string> <string name="data_usage_4g_limit_title" msgid="4609566827219442376">"4G ഡാറ്റ പരിധിയിലെത്തി"</string> <string name="data_usage_mobile_limit_title" msgid="557158376602636112">"സെല്ലുലാർ ഡാറ്റ പരിധിയിലെത്തി"</string> - <string name="data_usage_wifi_limit_title" msgid="5803363779034792676">"Wi-Fi ഡാറ്റ പരിധിയിലെത്തി"</string> + <string name="data_usage_wifi_limit_title" msgid="5803363779034792676">"വൈഫൈ ഡാറ്റ പരിധിയിലെത്തി"</string> <string name="data_usage_limit_body" msgid="291731708279614081">"ശേഷിക്കുന്ന പ്രവർത്തനങ്ങൾക്കായി ഡാറ്റ താൽക്കാലികമായി നിർത്തി"</string> <string name="data_usage_3g_limit_snoozed_title" msgid="7026739121138005231">"2G-3G ഡാറ്റ പരിധി കവിഞ്ഞു"</string> <string name="data_usage_4g_limit_snoozed_title" msgid="1106562779311209039">"4G ഡാറ്റ പരിധി കവിഞ്ഞു"</string> <string name="data_usage_mobile_limit_snoozed_title" msgid="4941346653729943789">"സെല്ലുലാർ ഡാറ്റ പരിധി കവിഞ്ഞു"</string> - <string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Wi-Fi ഡാറ്റ പരിധി കവിഞ്ഞു"</string> + <string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"വൈഫൈ ഡാറ്റ പരിധി കവിഞ്ഞു"</string> <string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"നിശ്ചിത പരിധിയിലും <xliff:g id="SIZE">%s</xliff:g> കൂടുതലാണ്."</string> <string name="data_usage_restricted_title" msgid="5965157361036321914">"പശ്ചാത്തല ഡാറ്റ പരിമിതപ്പെടുത്തി"</string> <string name="data_usage_restricted_body" msgid="6741521330997452990">"നിയന്ത്രണം നീക്കംചെയ്യാൻ സ്പർശിക്കുക."</string> diff --git a/core/res/res/values-mn-rMN/strings.xml b/core/res/res/values-mn-rMN/strings.xml index 09673d1df7d7..35f06aea6b2b 100644 --- a/core/res/res/values-mn-rMN/strings.xml +++ b/core/res/res/values-mn-rMN/strings.xml @@ -1041,7 +1041,6 @@ <string name="usb_mtp_notification_title" msgid="8396264943589760855">"Файл шилжүүлэх USB"</string> <string name="usb_ptp_notification_title" msgid="1347328437083192112">"Фото зураг шилжүүлэх USB"</string> <string name="usb_midi_notification_title" msgid="4850904915889144654">"MIDI-ийн USB"</string> - <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"Суулгагч болгон холбогдсон"</string> <string name="usb_accessory_notification_title" msgid="7848236974087653666">"USB төхөөрөмжид холбогдов"</string> <string name="usb_notification_message" msgid="7347368030849048437">"Нэмэлт сонголтыг харахын тулд дарна."</string> <string name="adb_active_notification_title" msgid="6729044778949189918">"USB дебаг холбогдсон"</string> diff --git a/core/res/res/values-mr-rIN/strings.xml b/core/res/res/values-mr-rIN/strings.xml index aa5562a1d1f8..08fc712919ed 100644 --- a/core/res/res/values-mr-rIN/strings.xml +++ b/core/res/res/values-mr-rIN/strings.xml @@ -210,7 +210,7 @@ <string name="global_action_power_off" msgid="4471879440839879722">"बंद"</string> <string name="global_action_bug_report" msgid="7934010578922304799">"दोष अहवाल"</string> <string name="bugreport_title" msgid="2667494803742548533">"दोष अहवाल घ्या"</string> - <string name="bugreport_message" msgid="398447048750350456">"ई-मेल संदेश म्हणून पाठविण्यासाठी, हे आपल्या वर्तमान डिव्हाइस स्थितीविषयी माहिती संकलित करेल. यास दोष अहवाल प्रारंभ करण्यापासून तो पाठविला जाण्यापर्यंत थोडा वेळ लागेल; कृपया धीर धरा."</string> + <string name="bugreport_message" msgid="398447048750350456">"ई-मेल संदेश म्हणून पाठविण्यासाठी, हे आपल्या वर्तमान डिव्हाइस स्थितीविषयी माहिती संकलित करेल. दोष अहवाल प्रारंभ करण्यापासून तो पाठविण्यापर्यंत थोडा वेळ लागेल; कृपया धीर धरा."</string> <string name="global_action_toggle_silent_mode" msgid="8219525344246810925">"मूक मोड"</string> <string name="global_action_silent_mode_on_status" msgid="3289841937003758806">"ध्वनी बंद आहे"</string> <string name="global_action_silent_mode_off_status" msgid="1506046579177066419">"ध्वनी चालू आहे"</string> @@ -1041,7 +1041,6 @@ <string name="usb_mtp_notification_title" msgid="8396264943589760855">"स्थानांतरणासाठी USB"</string> <string name="usb_ptp_notification_title" msgid="1347328437083192112">"फोटो स्थानांतरणासाठी USB"</string> <string name="usb_midi_notification_title" msgid="4850904915889144654">"MIDI साठी USB"</string> - <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"स्थापनकर्ता म्हणून कनेक्ट केले"</string> <string name="usb_accessory_notification_title" msgid="7848236974087653666">"USB उपसाधनावर कनेक्ट केले"</string> <string name="usb_notification_message" msgid="7347368030849048437">"अधिक पर्यायांसाठी स्पर्श करा."</string> <string name="adb_active_notification_title" msgid="6729044778949189918">"USB डीबग करणे कनेक्ट केले"</string> diff --git a/core/res/res/values-ms-rMY/strings.xml b/core/res/res/values-ms-rMY/strings.xml index 9a6bd739e866..e82eff5bb3fb 100644 --- a/core/res/res/values-ms-rMY/strings.xml +++ b/core/res/res/values-ms-rMY/strings.xml @@ -1041,7 +1041,6 @@ <string name="usb_mtp_notification_title" msgid="8396264943589760855">"USB untuk pemindahan fail"</string> <string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB untuk pemindahan foto"</string> <string name="usb_midi_notification_title" msgid="4850904915889144654">"USB untuk MIDI"</string> - <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"Disambungkan sebagai pemasang"</string> <string name="usb_accessory_notification_title" msgid="7848236974087653666">"Disambungkan kepada aksesori USB"</string> <string name="usb_notification_message" msgid="7347368030849048437">"Sentuh untuk mendapatkan lagi pilihan."</string> <string name="adb_active_notification_title" msgid="6729044778949189918">"Penyahpepijatan USB disambungkan"</string> diff --git a/core/res/res/values-my-rMM/strings.xml b/core/res/res/values-my-rMM/strings.xml index a8761cea0f13..1cdb9fbe9662 100644 --- a/core/res/res/values-my-rMM/strings.xml +++ b/core/res/res/values-my-rMM/strings.xml @@ -1041,7 +1041,6 @@ <string name="usb_mtp_notification_title" msgid="8396264943589760855">"ဖိုင်လွှဲပြောင်းရန်အတွက် USB"</string> <string name="usb_ptp_notification_title" msgid="1347328437083192112">"ဓာတ်ပုံလွှဲပြောင်းရန်အတွက် USB"</string> <string name="usb_midi_notification_title" msgid="4850904915889144654">"MIDI အတွက် USB"</string> - <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"installerအနေဖြင့် ချိတ်ဆက်သည်"</string> <string name="usb_accessory_notification_title" msgid="7848236974087653666">"USBတွဲဖက်ပစ္စည်းအား ချိတ်ဆက်ထားသည်"</string> <string name="usb_notification_message" msgid="7347368030849048437">"ထပ်မံရွေးချယ်စရာများအတွက် ထိပါ"</string> <string name="adb_active_notification_title" msgid="6729044778949189918">"USB အမှားစစ်ခြင်းအား ချိတ်ဆက်ထားသည်"</string> diff --git a/core/res/res/values-nb/strings.xml b/core/res/res/values-nb/strings.xml index 9faf81144ea8..81d1ad75a852 100644 --- a/core/res/res/values-nb/strings.xml +++ b/core/res/res/values-nb/strings.xml @@ -227,15 +227,15 @@ <string name="user_owner_label" msgid="2804351898001038951">"Personlig"</string> <string name="managed_profile_label" msgid="6260850669674791528">"Jobb"</string> <string name="permgrouplab_contacts" msgid="3657758145679177612">"Kontakter"</string> - <string name="permgroupdesc_contacts" msgid="6951499528303668046">"få tilgang til kontaktene dine"</string> + <string name="permgroupdesc_contacts" msgid="6951499528303668046">"se kontaktene dine"</string> <string name="permgrouplab_location" msgid="7275582855722310164">"Posisjon"</string> <string name="permgroupdesc_location" msgid="1346617465127855033">"tilgang til enhetens plassering"</string> <string name="permgrouplab_calendar" msgid="5863508437783683902">"Kalender"</string> - <string name="permgroupdesc_calendar" msgid="3889615280211184106">"få tilgang til kalenderen din"</string> + <string name="permgroupdesc_calendar" msgid="3889615280211184106">"åpne kalenderen din"</string> <string name="permgrouplab_sms" msgid="228308803364967808">"SMS"</string> <string name="permgroupdesc_sms" msgid="4656988620100940350">"sende og lese SMS-meldinger"</string> <string name="permgrouplab_storage" msgid="1971118770546336966">"Lagring"</string> - <string name="permgroupdesc_storage" msgid="637758554581589203">"få tilgang til bilder, media og filer på enheten din"</string> + <string name="permgroupdesc_storage" msgid="637758554581589203">"åpne bilder, media og filer på enheten din"</string> <string name="permgrouplab_microphone" msgid="171539900250043464">"Mikrofon"</string> <string name="permgroupdesc_microphone" msgid="4988812113943554584">"spill inn lyd"</string> <string name="permgrouplab_camera" msgid="4820372495894586615">"Kamera"</string> @@ -1041,7 +1041,6 @@ <string name="usb_mtp_notification_title" msgid="8396264943589760855">"USB for filoverføring"</string> <string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB for bildeoverføring"</string> <string name="usb_midi_notification_title" msgid="4850904915889144654">"USB for MIDI"</string> - <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"Tilkoblet som installasjonsprogram"</string> <string name="usb_accessory_notification_title" msgid="7848236974087653666">"Koblet til et USB-tilbehør"</string> <string name="usb_notification_message" msgid="7347368030849048437">"Trykk for å se flere alternativer."</string> <string name="adb_active_notification_title" msgid="6729044778949189918">"USB-feilsøking tilkoblet"</string> diff --git a/core/res/res/values-ne-rNP/strings.xml b/core/res/res/values-ne-rNP/strings.xml index 04b9b3e0fb68..9d9279692c8b 100644 --- a/core/res/res/values-ne-rNP/strings.xml +++ b/core/res/res/values-ne-rNP/strings.xml @@ -1047,7 +1047,6 @@ <string name="usb_mtp_notification_title" msgid="8396264943589760855">"फाइल स्थानान्तरणको लागि USB"</string> <string name="usb_ptp_notification_title" msgid="1347328437083192112">"तस्बिर स्थानान्तरणको लागि USB"</string> <string name="usb_midi_notification_title" msgid="4850904915889144654">"MIDI को लागि USB"</string> - <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"एउटा स्थापनकर्ताको रूपमा जोडिएको छ"</string> <string name="usb_accessory_notification_title" msgid="7848236974087653666">"USB सहायकमा जोडिएको छ"</string> <string name="usb_notification_message" msgid="7347368030849048437">"थप विकल्पहरूका लागि छुनुहोस्।"</string> <string name="adb_active_notification_title" msgid="6729044778949189918">"USB डिबग गर्ने जडित छ"</string> diff --git a/core/res/res/values-nl/strings.xml b/core/res/res/values-nl/strings.xml index 2c1d9942446b..024551ac27fe 100644 --- a/core/res/res/values-nl/strings.xml +++ b/core/res/res/values-nl/strings.xml @@ -1041,7 +1041,6 @@ <string name="usb_mtp_notification_title" msgid="8396264943589760855">"USB voor bestandsoverdacht"</string> <string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB voor foto-overdracht"</string> <string name="usb_midi_notification_title" msgid="4850904915889144654">"USB voor MIDI"</string> - <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"Gekoppeld als installatieprogramma"</string> <string name="usb_accessory_notification_title" msgid="7848236974087653666">"Aangesloten op een USB-accessoire"</string> <string name="usb_notification_message" msgid="7347368030849048437">"Tik voor meer opties."</string> <string name="adb_active_notification_title" msgid="6729044778949189918">"USB-foutopsporing verbonden"</string> diff --git a/core/res/res/values-pa-rIN/strings.xml b/core/res/res/values-pa-rIN/strings.xml index 8a2c552c3037..ebdd3c823c60 100644 --- a/core/res/res/values-pa-rIN/strings.xml +++ b/core/res/res/values-pa-rIN/strings.xml @@ -1041,7 +1041,6 @@ <string name="usb_mtp_notification_title" msgid="8396264943589760855">"ਫ਼ਾਈਲ ਟ੍ਰਾਂਸਫ਼ਰ ਲਈ USB"</string> <string name="usb_ptp_notification_title" msgid="1347328437083192112">"ਫੋਟੋ ਟ੍ਰਾਂਸਫ਼ਰ ਲਈ USB"</string> <string name="usb_midi_notification_title" msgid="4850904915889144654">"MIDI ਲਈ USB"</string> - <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"ਇੱਕ ਇੰਸਟੌਲਰ ਦੇ ਤੌਰ ਤੇ ਕਨੈਕਟ ਕੀਤਾ"</string> <string name="usb_accessory_notification_title" msgid="7848236974087653666">"ਇੱਕ USB ਐਕਸੈਸਰੀ ਨਾਲ ਕਨੈਕਟ ਕੀਤਾ"</string> <string name="usb_notification_message" msgid="7347368030849048437">"ਹੋਰ ਵਿਕਲਪਾਂ ਲਈ ਸਪਰਸ਼ ਕਰੋ।"</string> <string name="adb_active_notification_title" msgid="6729044778949189918">"USB ਡੀਬਗਿੰਗ ਕਨੈਕਟ ਕੀਤੀ"</string> diff --git a/core/res/res/values-pl/strings.xml b/core/res/res/values-pl/strings.xml index fde814222fad..599999d813ed 100644 --- a/core/res/res/values-pl/strings.xml +++ b/core/res/res/values-pl/strings.xml @@ -1055,7 +1055,6 @@ <string name="usb_mtp_notification_title" msgid="8396264943589760855">"USB w trybie przesyłania plików"</string> <string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB w trybie przesyłania zdjęć"</string> <string name="usb_midi_notification_title" msgid="4850904915889144654">"USB w trybie MIDI"</string> - <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"Podłączono jako nośnik instalacyjny."</string> <string name="usb_accessory_notification_title" msgid="7848236974087653666">"Podłączono akcesorium USB"</string> <string name="usb_notification_message" msgid="7347368030849048437">"Kliknij, by zobaczyć więcej opcji."</string> <string name="adb_active_notification_title" msgid="6729044778949189918">"Podłączono moduł debugowania USB"</string> diff --git a/core/res/res/values-pt-rPT/strings.xml b/core/res/res/values-pt-rPT/strings.xml index 9eabfc545833..a343550dc256 100644 --- a/core/res/res/values-pt-rPT/strings.xml +++ b/core/res/res/values-pt-rPT/strings.xml @@ -1041,7 +1041,6 @@ <string name="usb_mtp_notification_title" msgid="8396264943589760855">"USB para transferência de ficheiros"</string> <string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB para transferência de fotos"</string> <string name="usb_midi_notification_title" msgid="4850904915889144654">"USB para MIDI"</string> - <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"Ligado como um instalador"</string> <string name="usb_accessory_notification_title" msgid="7848236974087653666">"Ligado a um acessório USB"</string> <string name="usb_notification_message" msgid="7347368030849048437">"Toque para ver mais opções."</string> <string name="adb_active_notification_title" msgid="6729044778949189918">"Depuração USB ligada"</string> diff --git a/core/res/res/values-pt/strings.xml b/core/res/res/values-pt/strings.xml index 9fada1c78169..62931c74fe1f 100644 --- a/core/res/res/values-pt/strings.xml +++ b/core/res/res/values-pt/strings.xml @@ -1041,7 +1041,6 @@ <string name="usb_mtp_notification_title" msgid="8396264943589760855">"USB para transferência de arquivos"</string> <string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB para transferência de fotos"</string> <string name="usb_midi_notification_title" msgid="4850904915889144654">"USB para MIDI"</string> - <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"Conectados como um instalador"</string> <string name="usb_accessory_notification_title" msgid="7848236974087653666">"Conectado a um acessório USB"</string> <string name="usb_notification_message" msgid="7347368030849048437">"Toque para ver mais opções."</string> <string name="adb_active_notification_title" msgid="6729044778949189918">"Depuração USB conectada"</string> diff --git a/core/res/res/values-ro/strings.xml b/core/res/res/values-ro/strings.xml index 7a6a14febea9..02d2c03e6f13 100644 --- a/core/res/res/values-ro/strings.xml +++ b/core/res/res/values-ro/strings.xml @@ -1048,7 +1048,6 @@ <string name="usb_mtp_notification_title" msgid="8396264943589760855">"Conexiune USB pentru transferul fișierelor"</string> <string name="usb_ptp_notification_title" msgid="1347328437083192112">"Conexiune USB pentru transferul fotografiilor"</string> <string name="usb_midi_notification_title" msgid="4850904915889144654">"Conexiune USB pentru MIDI"</string> - <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"Conectat ca program de instalare"</string> <string name="usb_accessory_notification_title" msgid="7848236974087653666">"Conectat la un accesoriu USB"</string> <string name="usb_notification_message" msgid="7347368030849048437">"Atingeți pentru mai multe opțiuni."</string> <string name="adb_active_notification_title" msgid="6729044778949189918">"Depanarea USB este conectată"</string> diff --git a/core/res/res/values-ru/strings.xml b/core/res/res/values-ru/strings.xml index bdf11e1185e7..edf7b2a0e1ed 100644 --- a/core/res/res/values-ru/strings.xml +++ b/core/res/res/values-ru/strings.xml @@ -1055,7 +1055,6 @@ <string name="usb_mtp_notification_title" msgid="8396264943589760855">"Передача файлов через USB"</string> <string name="usb_ptp_notification_title" msgid="1347328437083192112">"Передача фото через USB"</string> <string name="usb_midi_notification_title" msgid="4850904915889144654">"MIDI через USB"</string> - <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"Подключен как установщик"</string> <string name="usb_accessory_notification_title" msgid="7848236974087653666">"USB-устройство подключено"</string> <string name="usb_notification_message" msgid="7347368030849048437">"Ещё варианты"</string> <string name="adb_active_notification_title" msgid="6729044778949189918">"Отладка по USB разрешена"</string> diff --git a/core/res/res/values-si-rLK/strings.xml b/core/res/res/values-si-rLK/strings.xml index c26bc5a7e0f6..705d493e28b5 100644 --- a/core/res/res/values-si-rLK/strings.xml +++ b/core/res/res/values-si-rLK/strings.xml @@ -354,10 +354,8 @@ <string name="permdesc_flashlight" msgid="6522284794568368310">"සැණෙළිය පාලනයට යෙදුමට අවසර දෙන්න."</string> <string name="permlab_callPhone" msgid="3925836347681847954">"දුරකථන අංක වෙත ඍජුවම අමතන්න"</string> <string name="permdesc_callPhone" msgid="3740797576113760827">"ඔබගේ මැදිහත් වීමක් නොමැතිව දුරකථන අංක ඇමතීමට යෙදුමට අවසර දෙන්න. මෙහි ප්රතිඑලය වන්නේ අනපේක්ෂිත අයකිරීම් හෝ ඇමතුම් ඇතිවීමයි. මෙයන් හදිසි අංක වලට ඇමතුම් ගැනීමට යෙදුමට අවසර නොදෙන බවට සටහන් කරගන්න. ඔබගේ අනුදැනුමක් නොමැතිව ඇමතුම් ගැනීමෙන් අනිෂ්ට යෙදුම් ඔබගේ මුදල් නිකරුණේ වැය කරයි."</string> - <!-- no translation found for permlab_accessImsCallService (3574943847181793918) --> - <skip /> - <!-- no translation found for permdesc_accessImsCallService (8992884015198298775) --> - <skip /> + <string name="permlab_accessImsCallService" msgid="3574943847181793918">"IMS ඇමතුම් සේවාවට පිවිසෙන්න"</string> + <string name="permdesc_accessImsCallService" msgid="8992884015198298775">"ඔබේ මැදිහත්වීමකින් තොරව ඇමතුම් සිදු කිරීමට IMS සේවාව භාවිතයට යෙදුමට ඉඩ දෙන්න."</string> <string name="permlab_readPhoneState" msgid="9178228524507610486">"දුරකථනයේ තත්වය සහ අනන්යතාවය කියවීම"</string> <string name="permdesc_readPhoneState" msgid="1639212771826125528">"උපාංගයේ දුරකථන විශේෂාංග වෙත පිවිසීමට යෙදුමට අවසර දෙන්න. ඇමතුම සක්රිය වුවත් සහ ඇමතුමකින් දුරස්ථ අංකය සම්බන්ධ වුවත් දුරකථන අංකය සහ උපාංග ID හඳුනා ගැනීමට මෙම අවසරය යෙදුමට අවසර දෙයි."</string> <string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"ටැබ්ලටය නින්දෙන් වැළක්වීම"</string> @@ -1043,7 +1041,6 @@ <string name="usb_mtp_notification_title" msgid="8396264943589760855">"ගොනු හුවමාරුව සඳහා USB"</string> <string name="usb_ptp_notification_title" msgid="1347328437083192112">"ඡායාරූප හුවමාරුව සඳහා USB"</string> <string name="usb_midi_notification_title" msgid="4850904915889144654">"MIDI සඳහා USB"</string> - <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"ස්ථාපිතයක් ලෙස සම්බන්ධයි"</string> <string name="usb_accessory_notification_title" msgid="7848236974087653666">"USB මෙවලමකට සම්බන්ධිතයි"</string> <string name="usb_notification_message" msgid="7347368030849048437">"වඩා වැඩි විකල්ප සඳහා ස්පර්ශ කරන්න."</string> <string name="adb_active_notification_title" msgid="6729044778949189918">"USB නිදොස්කරණය සම්බන්ධිතයි"</string> diff --git a/core/res/res/values-sk/strings.xml b/core/res/res/values-sk/strings.xml index 9bca6668ec35..7275f9c223e9 100644 --- a/core/res/res/values-sk/strings.xml +++ b/core/res/res/values-sk/strings.xml @@ -1055,7 +1055,6 @@ <string name="usb_mtp_notification_title" msgid="8396264943589760855">"USB na prenos súborov"</string> <string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB na prenos fotiek"</string> <string name="usb_midi_notification_title" msgid="4850904915889144654">"USB na pripojenie zariadenia MIDI"</string> - <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"Pripojené ako inštalátor"</string> <string name="usb_accessory_notification_title" msgid="7848236974087653666">"Pripojené k periférnemu zariadeniu USB"</string> <string name="usb_notification_message" msgid="7347368030849048437">"Ďalšie možnosti zobrazíte klepnutím."</string> <string name="adb_active_notification_title" msgid="6729044778949189918">"Ladenie cez USB pripojené"</string> diff --git a/core/res/res/values-sl/strings.xml b/core/res/res/values-sl/strings.xml index 184595bf16b9..061d7c6e77dd 100644 --- a/core/res/res/values-sl/strings.xml +++ b/core/res/res/values-sl/strings.xml @@ -1055,7 +1055,6 @@ <string name="usb_mtp_notification_title" msgid="8396264943589760855">"USB za prenos datotek"</string> <string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB za prenos fotografij"</string> <string name="usb_midi_notification_title" msgid="4850904915889144654">"USB za MIDI"</string> - <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"Povezan kot namestitveni program"</string> <string name="usb_accessory_notification_title" msgid="7848236974087653666">"Priključen na dodatek USB"</string> <string name="usb_notification_message" msgid="7347368030849048437">"Za več možnosti se dotaknite."</string> <string name="adb_active_notification_title" msgid="6729044778949189918">"Iskanje in odpravljanje napak USB je povezano"</string> diff --git a/core/res/res/values-sq-rAL/strings.xml b/core/res/res/values-sq-rAL/strings.xml index e1508cbc8b29..3be2df0e64d7 100644 --- a/core/res/res/values-sq-rAL/strings.xml +++ b/core/res/res/values-sq-rAL/strings.xml @@ -1041,7 +1041,6 @@ <string name="usb_mtp_notification_title" msgid="8396264943589760855">"USB për transferimin e skedarëve"</string> <string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB për transferimin e fotografive"</string> <string name="usb_midi_notification_title" msgid="4850904915889144654">"USB për MIDI"</string> - <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"I lidhur si instalues"</string> <string name="usb_accessory_notification_title" msgid="7848236974087653666">"U lidh me një ndihmës USB-je"</string> <string name="usb_notification_message" msgid="7347368030849048437">"Prek për më shumë opsione."</string> <string name="adb_active_notification_title" msgid="6729044778949189918">"Korrigjuesi i USB-së i lidhur"</string> diff --git a/core/res/res/values-sr/strings.xml b/core/res/res/values-sr/strings.xml index e5c0b3d0ef17..7d1f2b2f3bbb 100644 --- a/core/res/res/values-sr/strings.xml +++ b/core/res/res/values-sr/strings.xml @@ -1048,7 +1048,6 @@ <string name="usb_mtp_notification_title" msgid="8396264943589760855">"USB за пренос датотека"</string> <string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB за пренос слика"</string> <string name="usb_midi_notification_title" msgid="4850904915889144654">"USB за MIDI"</string> - <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"Повезан као инсталациони програм"</string> <string name="usb_accessory_notification_title" msgid="7848236974087653666">"Повезано са USB додатком"</string> <string name="usb_notification_message" msgid="7347368030849048437">"Додирните за још опција."</string> <string name="adb_active_notification_title" msgid="6729044778949189918">"Отклањање грешака са USB-а је успостављено"</string> diff --git a/core/res/res/values-sv/strings.xml b/core/res/res/values-sv/strings.xml index cae88f44374a..7310934e9ca3 100644 --- a/core/res/res/values-sv/strings.xml +++ b/core/res/res/values-sv/strings.xml @@ -1041,7 +1041,6 @@ <string name="usb_mtp_notification_title" msgid="8396264943589760855">"USB för överföring av filer"</string> <string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB för överföring av foton"</string> <string name="usb_midi_notification_title" msgid="4850904915889144654">"USB för MIDI"</string> - <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"Ansluten som installationsprogram"</string> <string name="usb_accessory_notification_title" msgid="7848236974087653666">"Ansluten till ett USB-tillbehör"</string> <string name="usb_notification_message" msgid="7347368030849048437">"Visa fler alternativ genom att trycka."</string> <string name="adb_active_notification_title" msgid="6729044778949189918">"USB-felsökning ansluten"</string> diff --git a/core/res/res/values-sw/strings.xml b/core/res/res/values-sw/strings.xml index 0f8f19343963..c379fcd8b4de 100644 --- a/core/res/res/values-sw/strings.xml +++ b/core/res/res/values-sw/strings.xml @@ -1043,7 +1043,6 @@ <string name="usb_mtp_notification_title" msgid="8396264943589760855">"USB kwa ajili ya kuhamisha faili"</string> <string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB kwa ajili ya kuhamisha picha"</string> <string name="usb_midi_notification_title" msgid="4850904915889144654">"USB kwa ajili ya MIDI"</string> - <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"Imeunganishwa kama kisakinishi"</string> <string name="usb_accessory_notification_title" msgid="7848236974087653666">"Imeunganishwa kwa kifuasi cha USB"</string> <string name="usb_notification_message" msgid="7347368030849048437">"Gusa kwa chaguo zaidi."</string> <string name="adb_active_notification_title" msgid="6729044778949189918">"Utatuaji wa USB umeunganishwa"</string> diff --git a/core/res/res/values-ta-rIN/strings.xml b/core/res/res/values-ta-rIN/strings.xml index cf3238f85ecf..9d25d6cea72b 100644 --- a/core/res/res/values-ta-rIN/strings.xml +++ b/core/res/res/values-ta-rIN/strings.xml @@ -1041,7 +1041,6 @@ <string name="usb_mtp_notification_title" msgid="8396264943589760855">"USB, கோப்புப் பரிமாற்றத்துக்கு மட்டும்"</string> <string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB, படப் பரிமாற்றத்துக்கு மட்டும்"</string> <string name="usb_midi_notification_title" msgid="4850904915889144654">"USB, MIDIக்கு மட்டும்"</string> - <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"நிறுவியாக இணைக்கப்பட்டது"</string> <string name="usb_accessory_notification_title" msgid="7848236974087653666">"USB துணைக்கருவியுடன் இணைக்கப்பட்டுள்ளது"</string> <string name="usb_notification_message" msgid="7347368030849048437">"கூடுதல் விருப்பங்களுக்காகத் தொடவும்."</string> <string name="adb_active_notification_title" msgid="6729044778949189918">"USB பிழைதிருத்தம் இணைக்கப்பட்டது"</string> diff --git a/core/res/res/values-te-rIN/strings.xml b/core/res/res/values-te-rIN/strings.xml index b1feaac86c0c..3d753fb0b0f4 100644 --- a/core/res/res/values-te-rIN/strings.xml +++ b/core/res/res/values-te-rIN/strings.xml @@ -1041,7 +1041,6 @@ <string name="usb_mtp_notification_title" msgid="8396264943589760855">"ఫైల్ బదిలీ కోసం USB"</string> <string name="usb_ptp_notification_title" msgid="1347328437083192112">"ఫోటో బదిలీ కోసం USB"</string> <string name="usb_midi_notification_title" msgid="4850904915889144654">"MIDI కోసం USB"</string> - <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"ఇన్స్టాలర్గా కనెక్ట్ చేయబడింది"</string> <string name="usb_accessory_notification_title" msgid="7848236974087653666">"USB ఉపకరణానికి కనెక్ట్ చేయబడింది"</string> <string name="usb_notification_message" msgid="7347368030849048437">"మరిన్ని ఎంపికల కోసం తాకండి."</string> <string name="adb_active_notification_title" msgid="6729044778949189918">"USB డీబగ్గింగ్ కనెక్ట్ చేయబడింది"</string> diff --git a/core/res/res/values-th/strings.xml b/core/res/res/values-th/strings.xml index 5474fff84acb..dff9ed4fdb82 100644 --- a/core/res/res/values-th/strings.xml +++ b/core/res/res/values-th/strings.xml @@ -1041,7 +1041,6 @@ <string name="usb_mtp_notification_title" msgid="8396264943589760855">"USB สำหรับการโอนไฟล์"</string> <string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB สำหรับการโอนรูปภาพ"</string> <string name="usb_midi_notification_title" msgid="4850904915889144654">"USB สำหรับ MIDI"</string> - <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"เชื่อมต่อเป็นตัวติดตั้ง"</string> <string name="usb_accessory_notification_title" msgid="7848236974087653666">"เชื่อมต่อกับอุปกรณ์เสริม USB แล้ว"</string> <string name="usb_notification_message" msgid="7347368030849048437">"แตะเพื่อดูตัวเลือกเพิ่มเติม"</string> <string name="adb_active_notification_title" msgid="6729044778949189918">"เชื่อมต่อการแก้ไขข้อบกพร่อง USB แล้ว"</string> diff --git a/core/res/res/values-tl/strings.xml b/core/res/res/values-tl/strings.xml index 1fcc94269c90..2d8bb0b8679b 100644 --- a/core/res/res/values-tl/strings.xml +++ b/core/res/res/values-tl/strings.xml @@ -1041,7 +1041,6 @@ <string name="usb_mtp_notification_title" msgid="8396264943589760855">"USB para sa paglipat ng file"</string> <string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB para sa paglipat ng larawan"</string> <string name="usb_midi_notification_title" msgid="4850904915889144654">"USB para sa MIDI"</string> - <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"Nakakonekta bilang isang installer"</string> <string name="usb_accessory_notification_title" msgid="7848236974087653666">"Nakakonekta sa isang accessory ng USB"</string> <string name="usb_notification_message" msgid="7347368030849048437">"Pindutin para sa higit pang mga opsyon."</string> <string name="adb_active_notification_title" msgid="6729044778949189918">"Konektado ang debugging ng USB"</string> diff --git a/core/res/res/values-tr/strings.xml b/core/res/res/values-tr/strings.xml index b956a603c60d..2eebf8878925 100644 --- a/core/res/res/values-tr/strings.xml +++ b/core/res/res/values-tr/strings.xml @@ -1041,7 +1041,6 @@ <string name="usb_mtp_notification_title" msgid="8396264943589760855">"Dosya aktarımı için USB"</string> <string name="usb_ptp_notification_title" msgid="1347328437083192112">"Fotoğraf aktarımı için USB"</string> <string name="usb_midi_notification_title" msgid="4850904915889144654">"MIDI için USB"</string> - <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"Yükleyici olarak bağlandı"</string> <string name="usb_accessory_notification_title" msgid="7848236974087653666">"USB aksesuarına bağlandı"</string> <string name="usb_notification_message" msgid="7347368030849048437">"Daha fazla seçenek için dokunun."</string> <string name="adb_active_notification_title" msgid="6729044778949189918">"USB hata ayıklaması bağlandı"</string> diff --git a/core/res/res/values-uk/strings.xml b/core/res/res/values-uk/strings.xml index cfd3bab04412..7ef95371938b 100644 --- a/core/res/res/values-uk/strings.xml +++ b/core/res/res/values-uk/strings.xml @@ -1055,7 +1055,6 @@ <string name="usb_mtp_notification_title" msgid="8396264943589760855">"USB для перенесення файлів"</string> <string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB для перенесення фотографій"</string> <string name="usb_midi_notification_title" msgid="4850904915889144654">"USB для режиму MIDI"</string> - <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"Під’єднано як програму встановлення"</string> <string name="usb_accessory_notification_title" msgid="7848236974087653666">"Під’єднано до аксесуара USB"</string> <string name="usb_notification_message" msgid="7347368030849048437">"Торкніться, щоб побачити більше опцій."</string> <string name="adb_active_notification_title" msgid="6729044778949189918">"Налагодження USB завершено"</string> diff --git a/core/res/res/values-ur-rPK/strings.xml b/core/res/res/values-ur-rPK/strings.xml index 6cb0934fe066..169c426acfbb 100644 --- a/core/res/res/values-ur-rPK/strings.xml +++ b/core/res/res/values-ur-rPK/strings.xml @@ -1041,7 +1041,6 @@ <string name="usb_mtp_notification_title" msgid="8396264943589760855">"فائل کی منتقلی کیلئے USB"</string> <string name="usb_ptp_notification_title" msgid="1347328437083192112">"تصویر کی منتقلی کیلئے USB"</string> <string name="usb_midi_notification_title" msgid="4850904915889144654">"MIDI کیلئے USB"</string> - <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"ایک انسٹالر کے بطور مربوط ہے"</string> <string name="usb_accessory_notification_title" msgid="7848236974087653666">"ایک USB لوازم سے مربوط ہے"</string> <string name="usb_notification_message" msgid="7347368030849048437">"مزید اختیارات کیلئے ٹچ کریں۔"</string> <string name="adb_active_notification_title" msgid="6729044778949189918">"USB ڈیبگ کرنا مربوط ہو گیا"</string> diff --git a/core/res/res/values-uz-rUZ/strings.xml b/core/res/res/values-uz-rUZ/strings.xml index 72a0ca2931d7..8e8bb8c8a73e 100644 --- a/core/res/res/values-uz-rUZ/strings.xml +++ b/core/res/res/values-uz-rUZ/strings.xml @@ -1041,7 +1041,6 @@ <string name="usb_mtp_notification_title" msgid="8396264943589760855">"USB orqali fayl o‘tkazish"</string> <string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB orqali rasm o‘tkazish"</string> <string name="usb_midi_notification_title" msgid="4850904915889144654">"USB orqali MIDI"</string> - <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"O‘rnatgich sifatida ulandi"</string> <string name="usb_accessory_notification_title" msgid="7848236974087653666">"USB jihozga ulangan"</string> <string name="usb_notification_message" msgid="7347368030849048437">"Boshqa variantlar"</string> <string name="adb_active_notification_title" msgid="6729044778949189918">"USB orqali nosozlikni tuzatish"</string> diff --git a/core/res/res/values-vi/strings.xml b/core/res/res/values-vi/strings.xml index 5afd180ec6a7..936a1bb95602 100644 --- a/core/res/res/values-vi/strings.xml +++ b/core/res/res/values-vi/strings.xml @@ -1041,7 +1041,6 @@ <string name="usb_mtp_notification_title" msgid="8396264943589760855">"USB để truyền tệp"</string> <string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB để truyền ảnh"</string> <string name="usb_midi_notification_title" msgid="4850904915889144654">"USB cho MIDI"</string> - <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"Được kết nối như trình cài đặt"</string> <string name="usb_accessory_notification_title" msgid="7848236974087653666">"Đã kết nối với phụ kiện USB"</string> <string name="usb_notification_message" msgid="7347368030849048437">"Chạm để có các tùy chọn khác."</string> <string name="adb_active_notification_title" msgid="6729044778949189918">"Gỡ lỗi USB đã được kết nối"</string> diff --git a/core/res/res/values-zh-rCN/strings.xml b/core/res/res/values-zh-rCN/strings.xml index c55fa2df8c48..61f78ee13bed 100644 --- a/core/res/res/values-zh-rCN/strings.xml +++ b/core/res/res/values-zh-rCN/strings.xml @@ -1041,7 +1041,6 @@ <string name="usb_mtp_notification_title" msgid="8396264943589760855">"正在通过 USB 传输文件"</string> <string name="usb_ptp_notification_title" msgid="1347328437083192112">"正在通过 USB 传输照片"</string> <string name="usb_midi_notification_title" msgid="4850904915889144654">"正在通过 USB 连接到 MIDI 接口"</string> - <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"作为安装程序连接"</string> <string name="usb_accessory_notification_title" msgid="7848236974087653666">"已连接到USB配件"</string> <string name="usb_notification_message" msgid="7347368030849048437">"触摸以查看更多选项。"</string> <string name="adb_active_notification_title" msgid="6729044778949189918">"已连接到USB调试"</string> diff --git a/core/res/res/values-zh-rHK/strings.xml b/core/res/res/values-zh-rHK/strings.xml index 45581d986660..a1c63d79778f 100644 --- a/core/res/res/values-zh-rHK/strings.xml +++ b/core/res/res/values-zh-rHK/strings.xml @@ -1041,7 +1041,6 @@ <string name="usb_mtp_notification_title" msgid="8396264943589760855">"USB 檔案傳輸"</string> <string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB 相片傳輸"</string> <string name="usb_midi_notification_title" msgid="4850904915889144654">"USB MIDI"</string> - <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"已作為安裝程式連線"</string> <string name="usb_accessory_notification_title" msgid="7848236974087653666">"已連接到一個 USB 配件"</string> <string name="usb_notification_message" msgid="7347368030849048437">"輕觸以瀏覽更多選項。"</string> <string name="adb_active_notification_title" msgid="6729044778949189918">"已連接 USB 偵錯工具"</string> diff --git a/core/res/res/values-zh-rTW/strings.xml b/core/res/res/values-zh-rTW/strings.xml index 2d141dbe62cf..6dafd98689f3 100644 --- a/core/res/res/values-zh-rTW/strings.xml +++ b/core/res/res/values-zh-rTW/strings.xml @@ -1041,7 +1041,6 @@ <string name="usb_mtp_notification_title" msgid="8396264943589760855">"USB 檔案傳輸"</string> <string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB 相片傳輸"</string> <string name="usb_midi_notification_title" msgid="4850904915889144654">"USB MIDI"</string> - <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"已視為安裝程式連線"</string> <string name="usb_accessory_notification_title" msgid="7848236974087653666">"已連接 USB 配件"</string> <string name="usb_notification_message" msgid="7347368030849048437">"輕觸即可顯示更多選項。"</string> <string name="adb_active_notification_title" msgid="6729044778949189918">"已連接 USB 偵錯工具"</string> diff --git a/core/res/res/values-zu/strings.xml b/core/res/res/values-zu/strings.xml index 19a9653d9d84..1bc1cab6ccb8 100644 --- a/core/res/res/values-zu/strings.xml +++ b/core/res/res/values-zu/strings.xml @@ -354,10 +354,8 @@ <string name="permdesc_flashlight" msgid="6522284794568368310">"Ivumela uhlelo lokusebenza ukulawula ukukhanya kwefuleshi."</string> <string name="permlab_callPhone" msgid="3925836347681847954">"ngokuqondile shayela izinombolo zocingo"</string> <string name="permdesc_callPhone" msgid="3740797576113760827">"Ivumela uhlelo lokusebenza ukushayela izinombolo zefoni ngaphandle kokuhlanganyela kwakho. Lokhu kungaholela emashajini noma amakholi angalindelekile. Qaphela ukuthi lokhu akuvumeli uhlelo lokusebenza ukushayela izinombolo zesimo esiphuthumayo. Izinhlelo zokusebenza ezingalungile zingabiza imali ngokwenze amakholi ngaphandle kokuqinisekisa kwakho."</string> - <!-- no translation found for permlab_accessImsCallService (3574943847181793918) --> - <skip /> - <!-- no translation found for permdesc_accessImsCallService (8992884015198298775) --> - <skip /> + <string name="permlab_accessImsCallService" msgid="3574943847181793918">"finyelela kusevisi yekholi ye-IMS"</string> + <string name="permdesc_accessImsCallService" msgid="8992884015198298775">"Ivumela uhlelo lokusebenza ukuthi lusebenzise isevisi ye-IMS ukuze yenze amakholi ngaphandle kokungenelela kwakho."</string> <string name="permlab_readPhoneState" msgid="9178228524507610486">"funda isimo sefoni kanye nesazisi"</string> <string name="permdesc_readPhoneState" msgid="1639212771826125528">"Ivumela uhlelo lokusebenza ukufinyelela izici zefoni zedivayisi. Le mvume ivumela uhlelo lokusebenza ukucacisa inombolo yefoni nobunikazi bedivayisi, ukuthi noma ikholi iyasebenza, futhi nenombolo yesilawuli kude zixhunywe ngekholi."</string> <string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"gwema ithebhulethi ukuba ingalali"</string> @@ -1041,7 +1039,6 @@ <string name="usb_mtp_notification_title" msgid="8396264943589760855">"I-USB yokudluliswa kwefayela"</string> <string name="usb_ptp_notification_title" msgid="1347328437083192112">"I-USB yokudluliswa kwesithombe"</string> <string name="usb_midi_notification_title" msgid="4850904915889144654">"I-USB ye-MIDI"</string> - <string name="usb_cd_installer_notification_title" msgid="6774712827892090754">"Ixhunywe njengesifaki"</string> <string name="usb_accessory_notification_title" msgid="7848236974087653666">"Ixhunywe ku-accessory ye-USB"</string> <string name="usb_notification_message" msgid="7347368030849048437">"Thinta ukuze uthole ezinye izinketho."</string> <string name="adb_active_notification_title" msgid="6729044778949189918">"Ukulungisa iphutha le-USB kuxhunyiwe"</string> diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml index a6c4fcc331d6..35c1f0e5066f 100644 --- a/core/res/res/values/strings.xml +++ b/core/res/res/values/strings.xml @@ -3168,33 +3168,11 @@ <!-- Label for the "Done" button on the far left of action mode toolbars. --> <string name="action_mode_done">Done</string> - <!-- Strings for ExternalStorageFormatter service. --> - <!-- Text for progress dialog while unmounting USB storage volume [CHAR LIMIT=NONE] --> - <string name="progress_unmounting" product="nosdcard">Unmounting USB storage\u2026</string> - <!-- Text for progress dialog while unmounting SD card [CHAR LIMIT=NONE] --> - <string name="progress_unmounting" product="default">Unmounting SD card\u2026</string> + <!-- Strings for MasterClearReceiver. --> <!-- Text for progress dialog while erasing USB storage volume [CHAR LIMIT=NONE] --> <string name="progress_erasing" product="nosdcard">Erasing USB storage\u2026</string> <!-- Text for progress dialog while erasing SD card [CHAR LIMIT=NONE] --> <string name="progress_erasing" product="default">Erasing SD card\u2026</string> - <!-- Text for message to user that an error happened when formatting USB storage [CHAR LIMIT=NONE] --> - <string name="format_error" product="nosdcard">Couldn\'t erase USB storage.</string> - <!-- Text for message to user that an error happened when formatting SD card [CHAR LIMIT=NONE] --> - <string name="format_error" product="default">Couldn\'t erase SD card.</string> - <!-- Text for message to user that SD card has been removed while in use [CHAR LIMIT=NONE] --> - <string name="media_bad_removal">SD card was removed before being unmounted.</string> - <!-- Text for message to user USB storage is currently being checked [CHAR LIMIT=NONE] --> - <string name="media_checking" product="nosdcard">USB storage is currently being checked.</string> - <!-- Text for message to user SD card is currently being checked [CHAR LIMIT=NONE] --> - <string name="media_checking" product="default">SD card is currently being checked.</string> - <!-- Text for message to user SD card has been removed [CHAR LIMIT=NONE] --> - <string name="media_removed">SD card has been removed.</string> - <!-- Text for message to user USB storage is currently mounted on a computer [CHAR LIMIT=NONE] --> - <string name="media_shared" product="nosdcard">USB storage is currently in use by a computer.</string> - <!-- Text for message to user SD card is currently mounted on a computer [CHAR LIMIT=NONE] --> - <string name="media_shared" product="default">SD card is currently in use by a computer.</string> - <!-- Text for message for an unknown external media state [CHAR LIMIT=NONE] --> - <string name="media_unknown_state">External media in unknown state.</string> <!-- Text for WebView's text selection Action Mode --> <!-- ActionBar action to share the current selection [CHAR LIMIT=10] --> diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index fcdaba29c02f..d41031cba01b 100755 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -627,7 +627,6 @@ <java-symbol type="string" name="eventTypeOther" /> <java-symbol type="string" name="fileSizeSuffix" /> <java-symbol type="string" name="force_close" /> - <java-symbol type="string" name="format_error" /> <java-symbol type="string" name="gadget_host_error_inflating" /> <java-symbol type="string" name="gigabyteShort" /> <java-symbol type="string" name="gpsNotifMessage" /> @@ -711,11 +710,6 @@ <java-symbol type="string" name="lockscreen_emergency_call" /> <java-symbol type="string" name="lockscreen_return_to_call" /> <java-symbol type="string" name="low_memory" /> - <java-symbol type="string" name="media_bad_removal" /> - <java-symbol type="string" name="media_checking" /> - <java-symbol type="string" name="media_removed" /> - <java-symbol type="string" name="media_shared" /> - <java-symbol type="string" name="media_unknown_state" /> <java-symbol type="string" name="megabyteShort" /> <java-symbol type="string" name="midnight" /> <java-symbol type="string" name="mismatchPin" /> @@ -814,7 +808,6 @@ <java-symbol type="string" name="print_service_installed_title" /> <java-symbol type="string" name="print_service_installed_message" /> <java-symbol type="string" name="progress_erasing" /> - <java-symbol type="string" name="progress_unmounting" /> <java-symbol type="string" name="mobile_provisioning_apn" /> <java-symbol type="string" name="mobile_provisioning_url" /> <java-symbol type="string" name="quick_contacts_not_available" /> diff --git a/docs/html/about/versions/android-5.0-changes.jd b/docs/html/about/versions/android-5.0-changes.jd index f51af407a391..25d253fb8d2f 100644 --- a/docs/html/about/versions/android-5.0-changes.jd +++ b/docs/html/about/versions/android-5.0-changes.jd @@ -598,3 +598,8 @@ android.provider.MediaStore#EXTRA_OUTPUT EXTRA_OUTPUT} should contain a content URI specifying where the photo should be stored. The camera app can write the image to the location specified by that URI, and the app that fired the intent would be able to read that file, even if the app is on the other profile. </p> + +<h3>Lockscreen widget support removed</h3> + +<p>Android 5.0 removes support for lockscreen widgets; it continues to support +widgets on the home screen.</p>
\ No newline at end of file diff --git a/docs/html/guide/components/bound-services.jd b/docs/html/guide/components/bound-services.jd index 4215f0f29dce..c2ac6074aaec 100644 --- a/docs/html/guide/components/bound-services.jd +++ b/docs/html/guide/components/bound-services.jd @@ -649,8 +649,7 @@ clients.</p> <p>Additionally, if your service is started and accepts binding, then when the system calls your {@link android.app.Service#onUnbind onUnbind()} method, you can optionally return {@code true} if you would like to receive a call to {@link android.app.Service#onRebind -onRebind()} the next time a client binds to the service (instead of receiving a call to {@link -android.app.Service#onBind onBind()}). {@link android.app.Service#onRebind +onRebind()} the next time a client binds to the service. {@link android.app.Service#onRebind onRebind()} returns void, but the client still receives the {@link android.os.IBinder} in its {@link android.content.ServiceConnection#onServiceConnected onServiceConnected()} callback. Below, figure 1 illustrates the logic for this kind of lifecycle.</p> diff --git a/docs/html/guide/topics/appwidgets/index.jd b/docs/html/guide/topics/appwidgets/index.jd index a783ad1a4f05..c9575e025f05 100644 --- a/docs/html/guide/topics/appwidgets/index.jd +++ b/docs/html/guide/topics/appwidgets/index.jd @@ -26,12 +26,6 @@ from </ol> </li> <li><a href="#preview">Setting a Preview Image</a></li> - <li><a href="#lockscreen">Enabling App Widgets on the Lockscreen</a> - <ol> - <li><a href="#lockscreen-sizing">Sizing guidelines</a></li> - </ol> - </li> - <li><a href="#collections">Using App Widgets with Collections</a> <ol> <li><a href="#collection_sample">Sample application</a></li> @@ -175,8 +169,7 @@ folder.</p> android:initialLayout="@layout/example_appwidget" android:configure="com.example.android.ExampleAppWidgetConfigure" android:resizeMode="horizontal|vertical" - android:widgetCategory="home_screen|keyguard" - android:initialKeyguardLayout="@layout/example_keyguard"> + android:widgetCategory="home_screen"> </appwidget-provider> </pre> @@ -281,17 +274,11 @@ vertical resizing isn't enabled (see <code>resizeMode</code>). Introduced in And the widget can be resized. This field has no effect if it is greater than {@code minWidth} or if horizontal resizing isn't enabled (see <code>resizeMode</code>). Introduced in Android 4.0.</li> -<li>The <code>widgetCategory</code> attribute declares whether your App Widget can be displayed on the home screen, -the lock screen (keyguard), or both. Values for this attribute include "home_screen" and "keyguard". A widget that -is displayed on both needs to ensure that it follows the design guidelines for both widget classes. For more -information, see <a href="#lockscreen">Enabling App Widgets on the Lockscreen</a>. The default value is "home_screen". Introduced in Android 4.2. -</li> - -<li>The <code>initialKeyguardLayout</code> attribute points to the layout resource -that defines the lock screen App Widget layout. This works the same way as the -{@link android.appwidget.AppWidgetProviderInfo#initialLayout android:initialLayout}, -in that it provides a layout that can appear immediately until your app widget is initialized and able to update -the layout. Introduced in Android 4.2.</li> +<li>The <code>widgetCategory</code> attribute declares whether your App Widget +can be displayed on the home screen ({@code home_screen}), the lock screen +({@code keyguard}), or both. Only Android versions lower than 5.0 support +lock-screen widgets. For Android 5.0 and higher, only {@code home_screen} is +valid.</li> </ul> @@ -737,66 +724,6 @@ preview image, launch this application, select the app widget for your application and set it up how you'd like your preview image to appear, then save it and place it in your application's drawable resources.</p> -<h2 id="lockscreen">Enabling App Widgets on the Lockscreen</h2> - -<p>Android 4.2 introduces the ability for users to add widgets to the lock screen. To indicate that your app widget is available for use on the lock screen, declare the {@link android.appwidget.AppWidgetProviderInfo#widgetCategory android:widgetCategory} attribute in the XML file that specifies your {@link android.appwidget.AppWidgetProviderInfo}. This attribute supports two values: "home_screen" and "keyguard". An app widget can declare support for one or both.</p> - -<p>By default, every app widget supports placement on the Home screen, so "home_screen" is the default value for the -{@link android.appwidget.AppWidgetProviderInfo#widgetCategory android:widgetCategory} attribute. If you want your app widget to be available for the lock screen, add the "keyguard" value:</p> -<pre> -<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android" - ... - android:widgetCategory="keyguard|home_screen"> -</appwidget-provider> -</pre> - -<p>If you declare a widget to be displayable on both keyguard (lockscreen) and home, it's likely that you'll want to customize the widget depending on where it is displayed. For example, you might create a separate layout file for keyguard vs. home. The next step is to detect the widget category at runtime and respond accordingly. - -You can detect whether your widget is on the lockscreen or home screen by calling -{@link android.appwidget.AppWidgetManager#getAppWidgetOptions getAppWidgetOptions()} -to get the widget's options as a {@link android.os.Bundle}. The returned bundle will include the key -{@link android.appwidget.AppWidgetManager#OPTION_APPWIDGET_HOST_CATEGORY}, whose value will be one of {@link android.appwidget.AppWidgetProviderInfo#WIDGET_CATEGORY_HOME_SCREEN} or -{@link android.appwidget.AppWidgetProviderInfo#WIDGET_CATEGORY_KEYGUARD}. This value is determined by the host into which the widget is bound. In the {@link android.appwidget.AppWidgetProvider}, you can then check the widget's category, for example:</p> - -<pre> -AppWidgetManager appWidgetManager; -int widgetId; -Bundle myOptions = appWidgetManager.getAppWidgetOptions (widgetId); - -// Get the value of OPTION_APPWIDGET_HOST_CATEGORY -int category = myOptions.getInt(AppWidgetManager.OPTION_APPWIDGET_HOST_CATEGORY, -1); - -// If the value is WIDGET_CATEGORY_KEYGUARD, it's a lockscreen widget -boolean isKeyguard = category == AppWidgetProviderInfo.WIDGET_CATEGORY_KEYGUARD; -</pre> - -<p>Once you know the widget's category, you can optionally load a different base layout, set different properties, and so on. For example:</p> - -<pre> -int baseLayout = isKeyguard ? R.layout.keyguard_widget_layout : R.layout.widget_layout; -</pre> - - -<p>You should also specify an initial layout for your app widget when on the lock screen with the -{@link android.appwidget.AppWidgetProviderInfo#initialKeyguardLayout android:initialKeyguardLayout} attribute. This works the same way as the -{@link android.appwidget.AppWidgetProviderInfo#initialLayout android:initialLayout}, in that it provides a layout that can appear immediately until your app widget is initialized and able to update the layout.</p> - -<h3 id="lockscreen-sizing">Sizing guidelines</h3> - -<p>When a widget is hosted on the lockscreen, the framework ignores the {@code minWidth}, {@code minHeight}, {@code minResizeWidth}, and {@code minResizeHeight} fields. If a widget is also a home screen widget, these parameters are still needed as they're still used on home, but they will be ignored for purposes of the lockscreen.</p> - -<p>The width of a lockscreen widget always fills the provided space. For the height of a lockscreen widget, you have the following options:</p> - -<ul> - <li>If the widget does not mark itself as vertically resizable ({@code android:resizeMode="vertical"}), then the widget height will always be "small": - <ul> - <li>On a phone in portrait mode, "small" is defined as the space remaining when an unlock UI is being displayed.</li> - <li>On tablets and landscape phones, "small" is set on a per-device basis.</li> - </ul> - </li> - <li>If the widget marks itself as vertically resizable, then the widget height shows up as "small" on portrait phones displaying an unlock UI. In all other cases, the widget sizes to fill the available height.</li> -</ul> - <h2 id="collections">Using App Widgets with Collections</h2> <p>Android 3.0 introduces app widgets with collections. These kinds of App diff --git a/docs/html/preview/api-overview.jd b/docs/html/preview/api-overview.jd index 75b3c528b42b..4300b4356d91 100644 --- a/docs/html/preview/api-overview.jd +++ b/docs/html/preview/api-overview.jd @@ -120,14 +120,16 @@ manifest.</p> <uses-permission android:name="android.permission.USE_FINGERPRINT" /> </pre> - <img src="{@docRoot}preview/images/fingerprint-screen.png" srcset="{@docRoot}preview/images/fingerprint-screen.png 1x, {@docRoot}preview/images/fingerprint-screen_2x.png 2x" style="float:right; margin:0 0 10px 20px" width="282" height="476" /> <p>To see an app implementation of fingerprint authentication, refer to the <a href="https://github.com/googlesamples/android-FingerprintDialog" class="external-link"> - Fingerprint Dialog sample</a>.</p> + Fingerprint Dialog sample</a>. For a demonstration of how you can use these authentication + APIs in conjunction with other Android APIs, see the video + <a class="video-shadowbox-button" href="https://www.youtube.com/watch?v=VOn7VrTRlA4"> + Fingerprint and Payment APIs</a>.</p> <p>If you are testing this feature, follow these steps:</p> <ol> diff --git a/docs/html/tools/debugging/ddms.jd b/docs/html/tools/debugging/ddms.jd index 28ad11e14f56..becbdb1fe732 100644 --- a/docs/html/tools/debugging/ddms.jd +++ b/docs/html/tools/debugging/ddms.jd @@ -22,28 +22,23 @@ parent.link=index.html <li><a href="#logcat">Using LogCat</a></li> <li><a href="#ops-location">Emulating phone operations and location</a></li> </ol> - + </li> </ol> </div> </div> - <p>Android ships with a debugging tool called the Dalvik Debug Monitor Server (DDMS), which + <p>Android Studio includes a debugging tool called the Dalvik Debug Monitor Server (DDMS), which provides port-forwarding services, screen capture on the device, thread and heap information on the device, logcat, process, and radio state information, incoming call and SMS spoofing, location data spoofing, and more. This page provides a modest discussion of DDMS features; it is not an exhaustive exploration of all the features and capabilities.</p> - + <h2 id="running">Running DDMS</h2> - <p>DDMS is integrated into Eclipse and is also shipped in the <code>tools/</code> directory of the - SDK. DDMS works with both the emulator and a connected device. If both are connected and running simultaneously, - DDMS defaults to the emulator.</p> - - <ul> - <li>From Eclipse: Click <strong>Window > Open Perspective > Other... > DDMS</strong>.</li> - <li>From the command line: Type <code>ddms</code> (or <code>./ddms</code> on Mac/Linux) from the <code>tools/</code> - directory. </li> - </ul> + <p>DDMS is integrated into Android Studio. To use it, launch the + <a href="{@docRoot}tools/help/monitor.html">Android Device Monitor</a>, and click the + <strong>DDMS</strong> menu button. DDMS works with both the emulator and a + connected device. If both are connected and running simultaneously, DDMS defaults to the emulator.</p> <h2 id="how-ddms-works">How DDMS Interacts with a Debugger</h2> @@ -70,7 +65,7 @@ parent.link=index.html all the VMs on a device. The traffic that is forwarded is determined by the currently selected process in the DDMS Devices view.</p> - <p>The following screenshot shows a typical DDMS screen in Eclipse. If you are starting DDMS from + <p>The following screenshot shows a typical DDMS screen. If you are starting DDMS from the command line, the screen is slightly different, but much of the functionality is identical. Notice that the highlighted process, <code>com.android.email</code>, that is running in the emulator has the debugging port 8700 assigned to it as well as 8606. This signifies that DDMS is currently @@ -78,10 +73,10 @@ parent.link=index.html <img src="{@docRoot}images/debug-ddms.png" width="1024" /> - <p class="img-caption"><strong>Figure 1.</strong> - Screenshot of DDMS</p> + <p class="img-caption"><strong>Figure 1.</strong> + Screenshot of DDMS</p> - <p>If you are not using Eclipse and ADT, read <a href= + <p>If you are using the command line, read <a href= "{@docRoot}tools/debugging/debugging-projects-cmdline.html#debuggingPort">Configuring your IDE to attach to the debugging port</a>, for more information on attaching your debugger.</p> @@ -97,11 +92,11 @@ parent.link=index.html <h2 id="using-ddms">Using DDMS</h2> The following sections describe how to use DDMS and the various tabs and panes that are part of the - DDMS GUI. The Eclipse version and the command line version have minor UI differences, but the - same functionality. For information on running DDMS, see the previous section in this document, + DDMS GUI. The Android Studio version and the command line version have minor UI differences, but + the same functionality. For information on running DDMS, see the previous section in this document, <a href="#running">Running DDMS</a>. - - + + <h3 id="heap">Viewing heap usage for a process</h3> <p>DDMS allows you to view how much heap memory a process is using. This information is useful in @@ -129,7 +124,7 @@ parent.link=index.html objects are being allocated when you perform certain actions in your application. This information is valuable for assessing memory usage that can affect application performance. </p> - + <p>To track memory allocation of objects:</p> <ol> <li>In the Devices tab, select the process that you want to enable allocation tracking @@ -155,7 +150,7 @@ parent.link=index.html <p>DDMS provides a File Explorer tab that allows you to view, copy, and delete files on the device. This feature is useful in examining files that are created by your application or if you want to transfer files to and from the device.</p> - + <p>To work with an emulator or device's file system:</p> <ol> <li>In the Devices tab, select the emulator that you want to view the file system for.</li> @@ -166,7 +161,7 @@ parent.link=index.html <li>To copy a file to the device, click the <strong>Push file</strong> button on the File Explorer tab.</li> </ol> - + <!-- Need to elaborate more on where things are stored in the file system, databases, apks, user info, files that are important to look at --> @@ -189,7 +184,7 @@ parent.link=index.html where profiling data is collected, use the {@link android.os.Debug#startMethodTracing()} and {@link android.os.Debug#stopMethodTracing()} methods. For more information about generating trace logs, see <a href="debugging-tracing.html">Profiling and Debugging UIs</a>.</p> - + <p>Before you start method profiling in DDMS, be aware of the following restrictions:</p> <ul> <li>Android 2.1 and earlier devices must @@ -197,7 +192,7 @@ parent.link=index.html <li>Android 2.2 and later devices do not need an SD card. The trace log files are streamed directly to your development machine.</li> </ul> - + <p>To start method profiling:</p> <ol> <li>On the Devices tab, select the process that you want to enable method profiling for.</li> @@ -218,7 +213,7 @@ parent.link=index.html </ol> <h3 id="network">Using the Network Traffic tool</h3> - + <p>In Android 4.0, the DDMS (Dalvik Debug Monitor Server) includes a Detailed Network Usage tab that makes it possible to track when your application is making network requests. Using this tool, you can monitor how and when your app @@ -274,7 +269,7 @@ to clear the tag.</p> <p>Socket tagging is supported in Android 4.0, but real-time stats will only be displayed on devices running Android 4.0.3 or higher.</p> - + <h3 id="logcat">Using LogCat</h3> <p>LogCat is integrated into DDMS, and outputs the messages that you print out using the {@link android.util.Log} @@ -296,7 +291,7 @@ displayed on devices running Android 4.0.3 or higher.</p> <li>Error</li> </ul> - + <p>You can also setup your own custom filter to specify more details such as filtering messages with the log tags or with the process id that generated the log message. The add filter, edit filter, and delete filter buttons let you manage your custom filters.</p> @@ -351,7 +346,7 @@ displayed on devices running Android 4.0.3 or higher.</p> <li>KML - Keyhole Markup Language file</li> </ul> - + For more information about providing mock location data, see <a href="{@docRoot}guide/topics/location/strategies.html#MockData">Location Strategies</a>. diff --git a/docs/html/tools/debugging/debugging-tracing.jd b/docs/html/tools/debugging/debugging-tracing.jd index fa5b4e1254bc..829c82a19fc7 100644 --- a/docs/html/tools/debugging/debugging-tracing.jd +++ b/docs/html/tools/debugging/debugging-tracing.jd @@ -177,12 +177,15 @@ adb pull /sdcard/calc.trace /tmp <h2 id="runningtraceview">Viewing Trace Files in Traceview</h2> - <p>To run Traceview and view the trace files, enter <code>traceview - <trace-base-name></code>. For example, to run Traceview on the example files copied in the - previous section, use:</p> - <pre> -traceview /tmp/calc -</pre> + <p>To run Traceview and view the trace files:</p> + <ul> + <li>start the + <a href="{@docRoot}tools/help/monitor.html">Android Device Monitor</a>. </li> + <li>In the Android Device Monitor tool bar, click <strong>DDMS</strong> and select a process. </li> + <li>Click the <strong>Start Method Profiling</strong> icon to start method profiling. </li> + <li>After the profiling is complete, click the <strong>Stop Method Profiling</strong> icon to + display the traceview. </li> + </ul> <p class="note"><strong>Note:</strong> If you are trying to view the trace logs of an application that is built with ProGuard enabled (release mode build), some method and member names might be obfuscated. diff --git a/docs/html/tools/help/monitor.jd b/docs/html/tools/help/monitor.jd index 513eb10b8b06..5f7b5ce9a19b 100644 --- a/docs/html/tools/help/monitor.jd +++ b/docs/html/tools/help/monitor.jd @@ -15,8 +15,8 @@ page.title=Device Monitor <p>Android Device Monitor is a stand-alone tool that provides a graphical user interface for several Android application debugging and analysis tools. The Monitor tool does not -require installation of an integrated development environment, such as Eclipse, and encapsulates the -following tools:</p> +require installation of an integrated development environment, such as Android Studio, and +encapsulates the following tools:</p> <ul> <li><a href="{@docRoot}tools/debugging/ddms.html">DDMS</a></li> @@ -30,9 +30,19 @@ following tools:</p> <h2 id="usage">Usage</h2> -<p>To start Device Monitor, enter the following command from the SDK <code>tools/</code> -directory:</p> +<p>To start Device Monitor:</p> + +<ul> + <li>From Android Studio, choose <strong>Tools > Android Device Monitor</strong> or click + the Android Device Monitor icon + <img src="{@docRoot}images/tools/hierarchicalviewer-icon.png" alt=""/>. + </li> + <li>From the command line, in the SDK <code>tools/</code> directory, enter the following command: <pre>monitor</pre> + </li> +</ul> + + <p>Start an Android emulator or connect an Android device via USB cable, and connect Device Monitor to the device by selecting it in the <strong>Devices</strong> window.</p> diff --git a/docs/html/tools/help/traceview.jd b/docs/html/tools/help/traceview.jd index 6555ac08cc83..a26829132760 100644 --- a/docs/html/tools/help/traceview.jd +++ b/docs/html/tools/help/traceview.jd @@ -3,14 +3,26 @@ parent.title=Tools parent.link=index.html @jd:body -<p>Traceview is a graphical viewer for execution logs saved by your application. +<p>Traceview is a graphical viewer for execution logs saved by your application. Traceview can help you debug your application and profile its performance.</p> -<p>To start Traceview, enter the following command from the SDK <code>tools/</code> directory:</p> - <pre>traceview</pre> -</ol> +<p>To start the Traceview tool:</p> -<p>For more information on how to use Traceview, see -<a href="{@docRoot}tools/debugging/debugging-tracing.html">Profiling with Traceview and dmtracedump</a> +<ul> + <li>Start the <a href="{@docRoot}tools/help/monitor.html">Android Device Monitor</a>. </li> + <li>In the Android Device Monitor tool bar, click <strong>DDMS</strong> and select a process. </li> + <li>Click the <strong>Start Method Profiling</strong> icon to start method profiling. </li> + <li>After the profiling is complete, click the <strong>Stop Method Profiling</strong> icon to + display the traceview. </li> +</ul> + + +<p>For more information on how to use Traceview, see +<a href="{@docRoot}tools/debugging/debugging-tracing.html">Profiling with Traceview and +dmtracedump</a>. </p> +<p class="note"><strong>Note:</strong> Running <code>traceview</code> from the command line +has been deprecated. </p> + + diff --git a/docs/html/training/tv/start/layouts.jd b/docs/html/training/tv/start/layouts.jd index a3780960bb5c..2b190b44b75c 100644 --- a/docs/html/training/tv/start/layouts.jd +++ b/docs/html/training/tv/start/layouts.jd @@ -262,14 +262,16 @@ trainingnavtop=true <h2 id="advertising">Provide Effective Advertising</h2> -<p>Advertising on Android TV must always be full-screen. Ads must not appear alongside or over -content. The user must be able to dismiss an advertisement with the D-pad controller. Video ads must -be dismissible within 30 seconds of their start time.</p> +<p>For the living room environment, we recommend you use video ads solutions +that are full-screen and dismissable within 30 seconds. Functionality for +advertising on Android TV, such as dismiss buttons and clickthroughs, must be +accessible using the D-pad rather than touch.</p> -<p>Android TV does not provide a web browser. Your ads must not attempt to launch a web browser or -redirect to the Google Play Store.</p> +<p>Android TV does not provide a web browser. Your ads must not attempt to +launch a web browser or redirect to Google Play Store content that is not +approved for Android TV devices.</p> <p class="note"> - <strong>Note:</strong> You can use the {@link android.webkit.WebView} class for logins to - services like Google+ and Facebook. + <strong>Note:</strong> You can use the {@link android.webkit.WebView} class + for logins to services like Google+ and Facebook. </p>
\ No newline at end of file diff --git a/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java b/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java index 581c15b4b3ad..6574e4e2ffb4 100644 --- a/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java +++ b/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java @@ -67,6 +67,8 @@ import android.util.SparseIntArray; import com.google.android.collect.Lists; +import java.io.FileDescriptor; +import java.io.PrintWriter; import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.HashMap; @@ -1397,4 +1399,22 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { } return null; // not found } + + public void dump(FileDescriptor fd, PrintWriter pw, String[] args) { + pw.println("KeyguardUpdateMonitor state:"); + pw.println(" SIM States:"); + for (SimData data : mSimDatas.values()) { + pw.println(" " + data.toString()); + } + pw.println(" Subs:"); + if (mSubscriptionInfo != null) { + for (int i = 0; i < mSubscriptionInfo.size(); i++) { + pw.println(" " + mSubscriptionInfo.get(i)); + } + } + pw.println(" Service states:"); + for (int subId : mServiceStates.keySet()) { + pw.println(" " + subId + "=" + mServiceStates.get(subId)); + } + } } diff --git a/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java b/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java index 932524683b3a..348d0ec0d682 100644 --- a/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java +++ b/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java @@ -293,7 +293,8 @@ public class AccessPoint implements Comparable<AccessPoint> { public String getSecurityString(boolean concise) { Context context = mContext; if (mConfig != null && mConfig.isPasspoint()) { - return context.getString(R.string.wifi_security_passpoint); + return concise ? context.getString(R.string.wifi_security_short_eap) : + context.getString(R.string.wifi_security_eap); } switch(security) { case SECURITY_EAP: @@ -624,9 +625,13 @@ public class AccessPoint implements Comparable<AccessPoint> { mNetworkInfo != null && mNetworkInfo.getState() != State.DISCONNECTED; } + public boolean isPasspoint() { + return mConfig != null && mConfig.isPasspoint(); + } + /** Return whether the given {@link WifiInfo} is for this access point. */ private boolean isInfoForThisAccessPoint(WifiInfo info) { - if (networkId != WifiConfiguration.INVALID_NETWORK_ID) { + if (isPasspoint() == false && networkId != WifiConfiguration.INVALID_NETWORK_ID) { return networkId == info.getNetworkId(); } else { // Might be an ephemeral connection with no WifiConfiguration. Try matching on SSID. diff --git a/packages/SystemUI/AndroidManifest.xml b/packages/SystemUI/AndroidManifest.xml index b41e1ac8db80..6e5dc3fabd83 100644 --- a/packages/SystemUI/AndroidManifest.xml +++ b/packages/SystemUI/AndroidManifest.xml @@ -51,7 +51,6 @@ <uses-permission android:name="android.permission.BLUETOOTH_PRIVILEGED" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /> - <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.READ_PRIVILEGED_PHONE_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> diff --git a/packages/SystemUI/res/values-ml-rIN/strings.xml b/packages/SystemUI/res/values-ml-rIN/strings.xml index 68b8603a9056..edd8ff3ebb73 100644 --- a/packages/SystemUI/res/values-ml-rIN/strings.xml +++ b/packages/SystemUI/res/values-ml-rIN/strings.xml @@ -22,7 +22,7 @@ <string name="app_label" msgid="7164937344850004466">"സിസ്റ്റം UI"</string> <string name="status_bar_clear_all_button" msgid="7774721344716731603">"മായ്ക്കുക"</string> <string name="status_bar_recent_remove_item_title" msgid="6026395868129852968">"ലിസ്റ്റിൽ നിന്നും നീക്കംചെയ്യുക"</string> - <string name="status_bar_recent_inspect_item_title" msgid="7793624864528818569">"അപ്ലിക്കേഷൻ വിവരം"</string> + <string name="status_bar_recent_inspect_item_title" msgid="7793624864528818569">"ആപ്പ് വിവരം"</string> <string name="status_bar_no_recent_apps" msgid="7374907845131203189">"നിങ്ങളുടെ പുതിയ സ്ക്രീനുകൾ ഇവിടെ ദൃശ്യമാകുന്നു"</string> <string name="status_bar_accessibility_dismiss_recents" msgid="4576076075226540105">"സമീപകാല അപ്ലിക്കേഷനുകൾ നിരസിക്കുക"</string> <plurals name="status_bar_accessibility_recent_apps" formatted="false" msgid="9138535907802238759"> @@ -43,7 +43,7 @@ <string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"ഓൺ ചെയ്യുക"</string> <string name="battery_saver_start_action" msgid="5576697451677486320">"ബാറ്ററി സേവർ ഓണാക്കുക"</string> <string name="status_bar_settings_settings_button" msgid="3023889916699270224">"ക്രമീകരണങ്ങൾ"</string> - <string name="status_bar_settings_wifi_button" msgid="1733928151698311923">"Wi-Fi"</string> + <string name="status_bar_settings_wifi_button" msgid="1733928151698311923">"വൈഫൈ"</string> <string name="status_bar_settings_auto_rotation" msgid="3790482541357798421">"സ്ക്രീൻ സ്വയമേതിരിക്കുക"</string> <string name="status_bar_settings_mute_label" msgid="554682549917429396">"മ്യൂട്ടുചെയ്യുക"</string> <string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"യാന്ത്രികം"</string> @@ -150,7 +150,7 @@ <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string> <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"റോമിംഗ്"</string> <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string> - <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string> + <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"വൈഫൈ"</string> <string name="accessibility_no_sim" msgid="8274017118472455155">"സിം ഇല്ല."</string> <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"ബ്ലൂടൂത്ത് ടെതറിംഗ്."</string> <string name="accessibility_airplane_mode" msgid="834748999790763092">"ഫ്ലൈറ്റ് മോഡ്."</string> @@ -209,10 +209,10 @@ <string name="accessibility_quick_settings_close" msgid="3115847794692516306">"പാനൽ അടയ്ക്കുക."</string> <string name="accessibility_quick_settings_more_time" msgid="3659274935356197708">"കൂടുതൽ സമയം."</string> <string name="accessibility_quick_settings_less_time" msgid="2404728746293515623">"സമയം കുറയ്ക്കുക."</string> - <string name="accessibility_quick_settings_flashlight_off" msgid="4936432000069786988">"ഫ്ലാഷ്ലൈറ്റ് ഓഫാണ്."</string> - <string name="accessibility_quick_settings_flashlight_on" msgid="2003479320007841077">"ഫ്ലാഷ്ലൈറ്റ് ഓണാണ്."</string> - <string name="accessibility_quick_settings_flashlight_changed_off" msgid="3303701786768224304">"ഫ്ലാഷ്ലൈറ്റ് ഓഫാക്കി."</string> - <string name="accessibility_quick_settings_flashlight_changed_on" msgid="6531793301533894686">"ഫ്ലാഷ്ലൈറ്റ് ഓണാക്കി."</string> + <string name="accessibility_quick_settings_flashlight_off" msgid="4936432000069786988">"ടോർച്ച് ഓഫാണ്."</string> + <string name="accessibility_quick_settings_flashlight_on" msgid="2003479320007841077">"ടോർച്ച് ഓണാണ്."</string> + <string name="accessibility_quick_settings_flashlight_changed_off" msgid="3303701786768224304">"ടോർച്ച് ഓഫാക്കി."</string> + <string name="accessibility_quick_settings_flashlight_changed_on" msgid="6531793301533894686">"ടോർച്ച് ഓണാക്കി."</string> <string name="accessibility_quick_settings_color_inversion_changed_off" msgid="4406577213290173911">"വർണ്ണ വൈപരീത്യം ഓഫാക്കി."</string> <string name="accessibility_quick_settings_color_inversion_changed_on" msgid="6897462320184911126">"വർണ്ണ വൈപരീത്യം ഓണാക്കി."</string> <string name="accessibility_quick_settings_hotspot_changed_off" msgid="5004708003447561394">"മൊബൈൽ ഹോട്ട്സ്പോട്ട് ഓഫാക്കി."</string> @@ -226,7 +226,7 @@ <string name="data_usage_disabled_dialog" msgid="8453242888903772524">"നിങ്ങൾ നേരത്തെ ക്രമീകരിച്ച ഡാറ്റ പരിധിയിലെത്തിയതിനാൽ, ഈ സൈക്കിളിന്റെ അവശേഷിക്കുന്ന ഡാറ്റ ഉപയോഗം, ഉപകരണം താൽക്കാലികമായി നിർത്തി.\n\nപുനരാരംഭിക്കുന്നത്, നിങ്ങളുടെ കാരിയറിൽ നിന്ന് നിരക്കുകൾക്ക് ഇടയാക്കാം."</string> <string name="data_usage_disabled_dialog_enable" msgid="1412395410306390593">"പുനരാരംഭിക്കുക"</string> <string name="status_bar_settings_signal_meter_disconnected" msgid="1940231521274147771">"ഇന്റർനെറ്റ് കണക്ഷൻ ഇല്ല"</string> - <string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi കണക്റ്റുചെയ്തു"</string> + <string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"വൈഫൈ കണക്റ്റുചെയ്തു"</string> <string name="gps_notification_searching_text" msgid="8574247005642736060">"GPS-നായി തിരയുന്നു"</string> <string name="gps_notification_found_text" msgid="4619274244146446464">"ലൊക്കേഷൻ സജ്ജീകരിച്ചത് GPS ആണ്"</string> <string name="accessibility_location_active" msgid="2427290146138169014">"ലൊക്കേഷൻ അഭ്യർത്ഥനകൾ സജീവമാണ്"</string> @@ -251,7 +251,7 @@ <string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"ബ്ലൂടൂത്ത് ഓഫുചെയ്യുക"</string> <string name="quick_settings_bluetooth_detail_empty_text" msgid="4910015762433302860">"ജോടിയാക്കിയ ഉപകരണങ്ങളൊന്നും ലഭ്യമല്ല"</string> <string name="quick_settings_brightness_label" msgid="6968372297018755815">"തെളിച്ചം"</string> - <string name="quick_settings_rotation_unlocked_label" msgid="7305323031808150099">"ഓട്ടോ റൊട്ടേറ്റ്"</string> + <string name="quick_settings_rotation_unlocked_label" msgid="7305323031808150099">"ആവശ്യാനുസരണം തിരിയുക"</string> <string name="quick_settings_rotation_locked_label" msgid="6359205706154282377">"റൊട്ടേഷൻ ലോക്കുചെയ്തു"</string> <string name="quick_settings_rotation_locked_portrait_label" msgid="5102691921442135053">"പോർട്രെയ്റ്റ്"</string> <string name="quick_settings_rotation_locked_landscape_label" msgid="8553157770061178719">"ലാൻഡ്സ്കേപ്പ്"</string> @@ -266,11 +266,11 @@ <string name="quick_settings_user_label" msgid="5238995632130897840">"ഞാന്"</string> <string name="quick_settings_user_title" msgid="4467690427642392403">"ഉപയോക്താവ്"</string> <string name="quick_settings_user_new_user" msgid="9030521362023479778">"പുതിയ ഉപയോക്താവ്"</string> - <string name="quick_settings_wifi_label" msgid="9135344704899546041">"Wi-Fi"</string> + <string name="quick_settings_wifi_label" msgid="9135344704899546041">"വൈഫൈ"</string> <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"കണക്റ്റുചെയ്തിട്ടില്ല"</string> <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"നെറ്റ്വർക്ക് ഒന്നുമില്ല"</string> - <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi ഓഫുചെയ്യുക"</string> - <string name="quick_settings_wifi_detail_empty_text" msgid="269990350383909226">"Wi-Fi നെറ്റ്വർക്കുകളൊന്നും ലഭ്യമല്ല"</string> + <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"വൈഫൈ ഓഫുചെയ്യുക"</string> + <string name="quick_settings_wifi_detail_empty_text" msgid="269990350383909226">"വൈഫൈ നെറ്റ്വർക്കുകളൊന്നും ലഭ്യമല്ല"</string> <string name="quick_settings_cast_title" msgid="7709016546426454729">"കാസ്റ്റുചെയ്യുക"</string> <string name="quick_settings_casting" msgid="6601710681033353316">"കാസ്റ്റുചെയ്യുന്നു"</string> <string name="quick_settings_cast_device_default_name" msgid="5367253104742382945">"പേരിടാത്ത ഉപകരണം"</string> @@ -287,7 +287,7 @@ <string name="quick_settings_tethering_label" msgid="7153452060448575549">"ടെതറിംഗ്"</string> <string name="quick_settings_hotspot_label" msgid="6046917934974004879">"ഹോട്ട്സ്പോട്ട്"</string> <string name="quick_settings_notifications_label" msgid="4818156442169154523">"അറിയിപ്പുകൾ"</string> - <string name="quick_settings_flashlight_label" msgid="2133093497691661546">"ഫ്ലാഷ്ലൈറ്റ്"</string> + <string name="quick_settings_flashlight_label" msgid="2133093497691661546">"ടോർച്ച്"</string> <string name="quick_settings_cellular_detail_title" msgid="8575062783675171695">"സെല്ലുലാർ ഡാറ്റ"</string> <string name="quick_settings_cellular_detail_data_usage" msgid="1964260360259312002">"ഡാറ്റ ഉപയോഗം"</string> <string name="quick_settings_cellular_detail_remaining_data" msgid="722715415543541249">"ശേഷിക്കുന്ന ഡാറ്റ"</string> @@ -296,7 +296,7 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"<xliff:g id="DATA_LIMIT">%s</xliff:g> പരിധി"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"<xliff:g id="DATA_LIMIT">%s</xliff:g> മുന്നറിയിപ്പ്"</string> <string name="recents_empty_message" msgid="8682129509540827999">"നിങ്ങളുടെ പുതിയ സ്ക്രീനുകൾ ഇവിടെ ദൃശ്യമാകുന്നു"</string> - <string name="recents_app_info_button_label" msgid="2890317189376000030">"അപ്ലിക്കേഷൻ വിവരം"</string> + <string name="recents_app_info_button_label" msgid="2890317189376000030">"ആപ്പ് വിവരം"</string> <string name="recents_lock_to_app_button_label" msgid="6942899049072506044">"സ്ക്രീൻ പിൻ ചെയ്യൽ"</string> <string name="recents_search_bar_label" msgid="8074997400187836677">"തിരയുക"</string> <string name="recents_launch_error_message" msgid="2969287838120550506">"<xliff:g id="APP">%s</xliff:g> ആരംഭിക്കാനായില്ല."</string> diff --git a/packages/SystemUI/src/com/android/systemui/SysUIToast.java b/packages/SystemUI/src/com/android/systemui/SysUIToast.java new file mode 100644 index 000000000000..89bc82f87930 --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/SysUIToast.java @@ -0,0 +1,31 @@ +/* + * Copyright (C) 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. + */ +package com.android.systemui; + +import android.content.Context; +import android.view.WindowManager; +import android.widget.Toast; + +public class SysUIToast { + + public static Toast makeText(Context context, CharSequence text, int duration) { + Toast toast = Toast.makeText(context, text, duration); + toast.getWindowParams().privateFlags |= + WindowManager.LayoutParams.PRIVATE_FLAG_SHOW_FOR_ALL_USERS; + return toast; + } + +} diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/DndTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/DndTile.java index 359ed5f0afd0..781ab1c7363c 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/DndTile.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/DndTile.java @@ -33,6 +33,7 @@ import android.widget.Toast; import com.android.internal.logging.MetricsLogger; import com.android.systemui.Prefs; import com.android.systemui.R; +import com.android.systemui.SysUIToast; import com.android.systemui.qs.QSTile; import com.android.systemui.statusbar.policy.ZenModeController; import com.android.systemui.volume.ZenModePanel; @@ -102,7 +103,7 @@ public class DndTile extends QSTile<QSTile.BooleanState> { if (mController.isVolumeRestricted()) { // Collapse the panels, so the user can see the toast. mHost.collapsePanels(); - Toast.makeText(mContext, mContext.getString( + SysUIToast.makeText(mContext, mContext.getString( com.android.internal.R.string.error_message_change_not_allowed), Toast.LENGTH_LONG).show(); return; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java index bda137466059..f0e50f8645d3 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java @@ -98,6 +98,7 @@ import com.android.internal.logging.MetricsLogger; import com.android.internal.statusbar.NotificationVisibility; import com.android.internal.statusbar.StatusBarIcon; import com.android.keyguard.KeyguardHostView.OnDismissAction; +import com.android.keyguard.KeyguardUpdateMonitor; import com.android.keyguard.ViewMediatorCallback; import com.android.systemui.BatteryMeterView; import com.android.systemui.DemoMode; @@ -1700,7 +1701,10 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, Log.v(TAG, "DEBUG_MEDIA: Fading out album artwork"); } mBackdrop.animate() - .alpha(0f) + // Never let the alpha become zero - otherwise the RenderNode + // won't draw anything and uninitialized memory will show through + // if mScrimSrcModeEnabled. Note that 0.001 is rounded down to 0 in libhwui. + .alpha(0.002f) .setInterpolator(mBackdropInterpolator) .setDuration(300) .setStartDelay(0) @@ -2701,6 +2705,9 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, } else { pw.println(" mHeadsUpManager: null"); } + if (KeyguardUpdateMonitor.getInstance(mContext) != null) { + KeyguardUpdateMonitor.getInstance(mContext).dump(fd, pw, args); + } pw.println("SharedPreferences:"); for (Map.Entry<String, ?> entry : Prefs.getAll(mContext).entrySet()) { @@ -3030,11 +3037,14 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, } final int N = newlyVisible.size(); - String[] newlyVisibleKeyAr = new String[N]; - for (int i = 0; i < N; i++) { - newlyVisibleKeyAr[i] = newlyVisibleAr[i].key; + if (N > 0) { + String[] newlyVisibleKeyAr = new String[N]; + for (int i = 0; i < N; i++) { + newlyVisibleKeyAr[i] = newlyVisibleAr[i].key; + } + + setNotificationsShown(newlyVisibleKeyAr); } - setNotificationsShown(newlyVisibleKeyAr); } // State logging diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java index 24e3c78679f6..81f2d532de35 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java @@ -661,8 +661,8 @@ public class NetworkControllerImpl extends BroadcastReceiver for (int i = start /* get out of normal index range */; i < start + num; i++) { subs.add(addSignalController(i, i)); } + mCallbackHandler.setSubs(subs); } - mCallbackHandler.setSubs(subs); } String nosim = args.getString("nosim"); if (nosim != null) { diff --git a/packages/SystemUI/src/com/android/systemui/tuner/DemoModeFragment.java b/packages/SystemUI/src/com/android/systemui/tuner/DemoModeFragment.java index ca6aaeba8c0a..3f5ca58fe6ca 100644 --- a/packages/SystemUI/src/com/android/systemui/tuner/DemoModeFragment.java +++ b/packages/SystemUI/src/com/android/systemui/tuner/DemoModeFragment.java @@ -103,6 +103,11 @@ public class DemoModeFragment extends PreferenceFragment implements OnPreference @Override public boolean onPreferenceChange(Preference preference, Object newValue) { if (preference == mEnabledSwitch) { + if (newValue != Boolean.TRUE) { + // Make sure we aren't in demo mode when disabling it. + mOnSwitch.setChecked(false); + stopDemoMode(); + } setGlobal(DEMO_MODE_ALLOWED, newValue == Boolean.TRUE ? 1 : 0); } else if (preference == mOnSwitch) { if (newValue == Boolean.TRUE) { @@ -123,7 +128,7 @@ public class DemoModeFragment extends PreferenceFragment implements OnPreference getContext().sendBroadcast(intent); intent.putExtra(DemoMode.EXTRA_COMMAND, DemoMode.COMMAND_CLOCK); - intent.putExtra("hhmm", "0520"); + intent.putExtra("hhmm", "0600"); getContext().sendBroadcast(intent); intent.putExtra(DemoMode.EXTRA_COMMAND, DemoMode.COMMAND_NETWORK); diff --git a/services/core/java/com/android/server/ConnectivityService.java b/services/core/java/com/android/server/ConnectivityService.java index 39c2891f81e7..daac52104498 100644 --- a/services/core/java/com/android/server/ConnectivityService.java +++ b/services/core/java/com/android/server/ConnectivityService.java @@ -559,8 +559,9 @@ public class ConnectivityService extends IConnectivityManager.Stub final DetailedState state = nai.networkInfo.getDetailedState(); for (int type = 0; type < mTypeLists.length; type++) { final ArrayList<NetworkAgentInfo> list = mTypeLists[type]; + final boolean contains = (list != null && list.contains(nai)); final boolean isFirst = (list != null && list.size() > 0 && nai == list.get(0)); - if (isFirst || isDefault) { + if (isFirst || (contains && isDefault)) { maybeLogBroadcast(nai, state, type, isDefault); sendLegacyNetworkBroadcast(nai, state, type); } diff --git a/services/core/java/com/android/server/TelephonyRegistry.java b/services/core/java/com/android/server/TelephonyRegistry.java index 36d64aa7e98b..a06bb3069d64 100644 --- a/services/core/java/com/android/server/TelephonyRegistry.java +++ b/services/core/java/com/android/server/TelephonyRegistry.java @@ -16,6 +16,7 @@ package com.android.server; +import android.Manifest; import android.app.ActivityManager; import android.app.AppOpsManager; import android.content.BroadcastReceiver; @@ -360,12 +361,20 @@ class TelephonyRegistry extends ITelephonyRegistry.Stub { + " callback.asBinder=" + callback.asBinder()); } - mContext.enforceCallingOrSelfPermission( - android.Manifest.permission.READ_PHONE_STATE, null); + try { + mContext.enforceCallingPermission( + android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, + "addOnSubscriptionsChangedListener"); + // SKIP checking for run-time permission since obtained PRIVILEGED + } catch (SecurityException e) { + mContext.enforceCallingOrSelfPermission( + android.Manifest.permission.READ_PHONE_STATE, + "addOnSubscriptionsChangedListener"); - if (mAppOps.noteOp(AppOpsManager.OP_READ_PHONE_STATE, Binder.getCallingUid(), - callingPackage) != AppOpsManager.MODE_ALLOWED) { - return; + if (mAppOps.noteOp(AppOpsManager.OP_READ_PHONE_STATE, Binder.getCallingUid(), + callingPackage) != AppOpsManager.MODE_ALLOWED) { + return; + } } Record r; @@ -471,9 +480,15 @@ class TelephonyRegistry extends ITelephonyRegistry.Stub { checkListenerPermission(events); if ((events & ENFORCE_PHONE_STATE_PERMISSION_MASK) != 0) { - if (mAppOps.noteOp(AppOpsManager.OP_READ_PHONE_STATE, Binder.getCallingUid(), - callingPackage) != AppOpsManager.MODE_ALLOWED) { - return; + try { + mContext.enforceCallingPermission( + android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, null); + // SKIP checking for run-time permission since obtained PRIVILEGED + } catch (SecurityException e) { + if (mAppOps.noteOp(AppOpsManager.OP_READ_PHONE_STATE, Binder.getCallingUid(), + callingPackage) != AppOpsManager.MODE_ALLOWED) { + return; + } } } @@ -646,6 +661,12 @@ class TelephonyRegistry extends ITelephonyRegistry.Stub { } private boolean canReadPhoneState(String callingPackage) { + if (mContext.checkCallingPermission( + android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) == + PackageManager.PERMISSION_GRANTED) { + // SKIP checking for run-time permission since obtained PRIVILEGED + return true; + } boolean canReadPhoneState = mContext.checkCallingOrSelfPermission( android.Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED; if (canReadPhoneState && @@ -1432,6 +1453,10 @@ class TelephonyRegistry extends ITelephonyRegistry.Stub { intent.putExtra(PhoneConstants.SUBSCRIPTION_KEY, subId); } + // Send broadcast twice, once for apps that have PRIVILEGED permission and once for those + // that have the runtime one + mContext.sendBroadcastAsUser(intent, UserHandle.ALL, + android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE); mContext.sendBroadcastAsUser(intent, UserHandle.ALL, android.Manifest.permission.READ_PHONE_STATE, AppOpsManager.OP_READ_PHONE_STATE); @@ -1563,8 +1588,14 @@ class TelephonyRegistry extends ITelephonyRegistry.Stub { } if ((events & ENFORCE_PHONE_STATE_PERMISSION_MASK) != 0) { - mContext.enforceCallingOrSelfPermission( - android.Manifest.permission.READ_PHONE_STATE, null); + try { + mContext.enforceCallingPermission( + android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, null); + // SKIP checking for run-time permission since obtained PRIVILEGED + } catch (SecurityException e) { + mContext.enforceCallingOrSelfPermission( + android.Manifest.permission.READ_PHONE_STATE, null); + } } if ((events & PRECISE_PHONE_STATE_PERMISSION_MASK) != 0) { diff --git a/services/core/java/com/android/server/am/ActivityStack.java b/services/core/java/com/android/server/am/ActivityStack.java index 31cdcd51aff9..470bbb0e29e3 100644 --- a/services/core/java/com/android/server/am/ActivityStack.java +++ b/services/core/java/com/android/server/am/ActivityStack.java @@ -2669,8 +2669,13 @@ final class ActivityStack { if (!r.finishing) { if (!mService.isSleeping()) { if (DEBUG_STATES) Slog.d(TAG_STATES, "no-history finish of " + r); - requestFinishActivityLocked(r.appToken, Activity.RESULT_CANCELED, null, - "stop-no-history", false); + if (requestFinishActivityLocked(r.appToken, Activity.RESULT_CANCELED, null, + "stop-no-history", false)) { + // Activity was finished, no need to continue trying to schedule stop. + adjustFocusedActivityLocked(r, "stopActivityFinished"); + r.resumeKeyDispatchingLocked(); + return; + } } else { if (DEBUG_STATES) Slog.d(TAG_STATES, "Not finishing noHistory " + r + " on stop because we're just sleeping"); diff --git a/services/core/java/com/android/server/pm/DefaultPermissionGrantPolicy.java b/services/core/java/com/android/server/pm/DefaultPermissionGrantPolicy.java index bf372c8b382d..e3c6037fa9ab 100644 --- a/services/core/java/com/android/server/pm/DefaultPermissionGrantPolicy.java +++ b/services/core/java/com/android/server/pm/DefaultPermissionGrantPolicy.java @@ -29,6 +29,7 @@ import android.content.pm.ProviderInfo; import android.content.pm.ResolveInfo; import android.net.Uri; import android.os.Build; +import android.os.Debug; import android.os.UserHandle; import android.provider.CalendarContract; import android.provider.ContactsContract; @@ -262,7 +263,6 @@ final class DefaultPermissionGrantPolicy { && doesPackageSupportRuntimePermissions(setupPackage)) { grantRuntimePermissionsLPw(setupPackage, PHONE_PERMISSIONS, userId); grantRuntimePermissionsLPw(setupPackage, CONTACTS_PERMISSIONS, userId); - grantRuntimePermissionsLPw(setupPackage, SETTINGS_PERMISSIONS, userId); } // Camera @@ -345,7 +345,6 @@ final class DefaultPermissionGrantPolicy { Intent cbrIntent = new Intent(Intents.SMS_CB_RECEIVED_ACTION); PackageParser.Package cbrPackage = getDefaultSystemHandlerActivityPackageLPr(cbrIntent, userId); - if (cbrPackage != null && doesPackageSupportRuntimePermissions(cbrPackage)) { grantRuntimePermissionsLPw(cbrPackage, SMS_PERMISSIONS, false, userId); } @@ -626,8 +625,9 @@ final class DefaultPermissionGrantPolicy { private PackageParser.Package getDefaultSystemHandlerActivityPackageLPr( Intent intent, int userId) { - List<ResolveInfo> handlers = mService.queryIntentActivities(intent, - intent.resolveType(mService.mContext.getContentResolver()), 0, userId); + List<ResolveInfo> handlers = mService.mActivities.queryIntent(intent, + intent.resolveType(mService.mContext.getContentResolver()), + PackageManager.GET_DISABLED_COMPONENTS, userId); final int handlerCount = handlers.size(); for (int i = 0; i < handlerCount; i++) { ResolveInfo handler = handlers.get(i); @@ -651,8 +651,9 @@ final class DefaultPermissionGrantPolicy { for (String syncAdapterPackageName : syncAdapterPackageNames) { homeIntent.setPackage(syncAdapterPackageName); - List<ResolveInfo> homeActivities = mService.queryIntentActivities(homeIntent, - homeIntent.resolveType(mService.mContext.getContentResolver()), 0, userId); + List<ResolveInfo> homeActivities = mService.mActivities.queryIntent(homeIntent, + homeIntent.resolveType(mService.mContext.getContentResolver()), + PackageManager.GET_DISABLED_COMPONENTS, userId); if (!homeActivities.isEmpty()) { continue; } diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index 5e37df33cdb0..c844753f55c1 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -146,7 +146,6 @@ import android.net.Uri; import android.os.Binder; import android.os.Build; import android.os.Bundle; -import android.os.Debug; import android.os.Environment; import android.os.Environment.UserEnvironment; import android.os.FileUtils; @@ -284,7 +283,7 @@ public class PackageManagerService extends IPackageManager.Stub { static final boolean DEBUG_PREFERRED = false; static final boolean DEBUG_UPGRADE = false; static final boolean DEBUG_DOMAIN_VERIFICATION = false; - private static final boolean DEBUG_BACKUP = true; + private static final boolean DEBUG_BACKUP = false; private static final boolean DEBUG_INSTALL = false; private static final boolean DEBUG_REMOVE = false; private static final boolean DEBUG_BROADCASTS = false; @@ -3458,12 +3457,17 @@ public class PackageManagerService extends IPackageManager.Stub { mSettings.writeRuntimePermissionsForUserLPr(userId, false); } + // Only need to do this if user is initialized. Otherwise it's a new user + // and there are no processes running as the user yet and there's no need + // to make an expensive call to remount processes for the changed permissions. if (READ_EXTERNAL_STORAGE.equals(name) || WRITE_EXTERNAL_STORAGE.equals(name)) { final long token = Binder.clearCallingIdentity(); try { - final StorageManager storage = mContext.getSystemService(StorageManager.class); - storage.remountUid(uid); + if (sUserManager.isInitialized(userId)) { + final StorageManager storage = mContext.getSystemService(StorageManager.class); + storage.remountUid(uid); + } } finally { Binder.restoreCallingIdentity(token); } @@ -4427,8 +4431,11 @@ public class PackageManagerService extends IPackageManager.Stub { // cross-profile app linking works only towards the parent. final UserInfo parent = getProfileParent(sourceUserId); synchronized(mPackages) { - return getCrossProfileDomainPreferredLpr(intent, resolvedType, 0, sourceUserId, - parent.id) != null; + CrossProfileDomainInfo xpDomainInfo = getCrossProfileDomainPreferredLpr( + intent, resolvedType, 0, sourceUserId, parent.id); + return xpDomainInfo != null + && xpDomainInfo.bestDomainVerificationStatus != + INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_NEVER; } } return false; @@ -4524,7 +4531,7 @@ public class PackageManagerService extends IPackageManager.Stub { return result; } result = filterCandidatesWithDomainPreferredActivitiesLPr(flags, result, - xpDomainInfo); + xpDomainInfo, userId); Collections.sort(result, mResolvePrioritySorter); } return result; @@ -4573,7 +4580,8 @@ public class PackageManagerService extends IPackageManager.Stub { if (ps == null) { continue; } - int status = getDomainVerificationStatusLPr(ps, parentUserId); + long verificationState = getDomainVerificationStatusLPr(ps, parentUserId); + int status = (int)(verificationState >> 32); if (result == null) { result = new CrossProfileDomainInfo(); result.resolveInfo = @@ -4641,13 +4649,13 @@ public class PackageManagerService extends IPackageManager.Stub { } private List<ResolveInfo> filterCandidatesWithDomainPreferredActivitiesLPr( - int flags, List<ResolveInfo> candidates, CrossProfileDomainInfo xpDomainInfo) { + int flags, List<ResolveInfo> candidates, CrossProfileDomainInfo xpDomainInfo, + int userId) { if (DEBUG_PREFERRED || DEBUG_DOMAIN_VERIFICATION) { - Slog.v("TAG", "Filtering results with preferred activities. Candidates count: " + + Slog.v(TAG, "Filtering results with preferred activities. Candidates count: " + candidates.size()); } - final int userId = UserHandle.getCallingUserId(); ArrayList<ResolveInfo> result = new ArrayList<ResolveInfo>(); ArrayList<ResolveInfo> alwaysList = new ArrayList<ResolveInfo>(); ArrayList<ResolveInfo> undefinedList = new ArrayList<ResolveInfo>(); @@ -4670,11 +4678,17 @@ public class PackageManagerService extends IPackageManager.Stub { continue; } // Try to get the status from User settings first - int status = getDomainVerificationStatusLPr(ps, userId); + long packedStatus = getDomainVerificationStatusLPr(ps, userId); + int status = (int)(packedStatus >> 32); + int linkGeneration = (int)(packedStatus & 0xFFFFFFFF); if (status == INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ALWAYS) { if (DEBUG_DOMAIN_VERIFICATION) { - Slog.i(TAG, " + always: " + info.activityInfo.packageName); + Slog.i(TAG, " + always: " + info.activityInfo.packageName + + " : linkgen=" + linkGeneration); } + // Use link-enabled generation as preferredOrder, i.e. + // prefer newly-enabled over earlier-enabled. + info.preferredOrder = linkGeneration; alwaysList.add(info); } else if (status == INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_NEVER) { if (DEBUG_DOMAIN_VERIFICATION) { @@ -4690,7 +4704,7 @@ public class PackageManagerService extends IPackageManager.Stub { } } } - // First try to add the "always" resolution for the current user if there is any + // First try to add the "always" resolution(s) for the current user, if any if (alwaysList.size() > 0) { result.addAll(alwaysList); // if there is an "always" for the parent user, add it. @@ -4751,15 +4765,19 @@ public class PackageManagerService extends IPackageManager.Stub { return result; } - private int getDomainVerificationStatusLPr(PackageSetting ps, int userId) { - int status = ps.getDomainVerificationStatusForUser(userId); + // Returns a packed value as a long: + // + // high 'int'-sized word: link status: undefined/ask/never/always. + // low 'int'-sized word: relative priority among 'always' results. + private long getDomainVerificationStatusLPr(PackageSetting ps, int userId) { + long result = ps.getDomainVerificationStatusForUser(userId); // if none available, get the master status - if (status == INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_UNDEFINED) { + if (result >> 32 == INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_UNDEFINED) { if (ps.getIntentFilterVerificationInfo() != null) { - status = ps.getIntentFilterVerificationInfo().getStatus(); + result = ((long)ps.getIntentFilterVerificationInfo().getStatus()) << 32; } } - return status; + return result; } private ResolveInfo querySkipCurrentProfileIntents( @@ -12955,7 +12973,7 @@ public class PackageManagerService extends IPackageManager.Stub { false, //hidden null, null, null, false, // blockUninstall - INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_UNDEFINED); + INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_UNDEFINED, 0); if (!isSystemApp(ps)) { if (ps.isAnyInstalled(sUserManager.getUserIds())) { // Other user still have this package installed, so all @@ -14878,8 +14896,8 @@ public class PackageManagerService extends IPackageManager.Stub { pw.println(); count = 0; for (PackageSetting ps : allPackageSettings) { - final int status = ps.getDomainVerificationStatusForUser(userId); - if (status == INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_UNDEFINED) { + final long status = ps.getDomainVerificationStatusForUser(userId); + if (status >> 32 == INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_UNDEFINED) { continue; } pw.println(prefix + "Package: " + ps.name); @@ -15965,16 +15983,8 @@ public class PackageManagerService extends IPackageManager.Stub { } } - void newUserCreatedLILPw(final int userHandle) { - // We cannot grant the default permissions with a lock held as - // we query providers from other components for default handlers - // such as enabled IMEs, etc. - mHandler.post(new Runnable() { - @Override - public void run() { - mDefaultPermissionPolicy.grantDefaultPermissions(userHandle); - } - }); + void newUserCreated(final int userHandle) { + mDefaultPermissionPolicy.grantDefaultPermissions(userHandle); } @Override diff --git a/services/core/java/com/android/server/pm/PackageSettingBase.java b/services/core/java/com/android/server/pm/PackageSettingBase.java index 6f46f697efc4..4faf75a3deab 100644 --- a/services/core/java/com/android/server/pm/PackageSettingBase.java +++ b/services/core/java/com/android/server/pm/PackageSettingBase.java @@ -341,7 +341,8 @@ abstract class PackageSettingBase extends SettingBase { void setUserState(int userId, int enabled, boolean installed, boolean stopped, boolean notLaunched, boolean hidden, String lastDisableAppCaller, ArraySet<String> enabledComponents, - ArraySet<String> disabledComponents, boolean blockUninstall, int domainVerifState) { + ArraySet<String> disabledComponents, boolean blockUninstall, int domainVerifState, + int linkGeneration) { PackageUserState state = modifyUserState(userId); state.enabled = enabled; state.installed = installed; @@ -353,6 +354,7 @@ abstract class PackageSettingBase extends SettingBase { state.disabledComponents = disabledComponents; state.blockUninstall = blockUninstall; state.domainVerificationStatus = domainVerifState; + state.appLinkGeneration = linkGeneration; } ArraySet<String> getEnabledComponents(int userId) { @@ -449,12 +451,23 @@ abstract class PackageSettingBase extends SettingBase { verificationInfo = info; } - int getDomainVerificationStatusForUser(int userId) { - return readUserState(userId).domainVerificationStatus; + // Returns a packed value as a long: + // + // high 'int'-sized word: link status: undefined/ask/never/always. + // low 'int'-sized word: relative priority among 'always' results. + long getDomainVerificationStatusForUser(int userId) { + PackageUserState state = readUserState(userId); + long result = (long) state.appLinkGeneration; + result |= ((long) state.domainVerificationStatus) << 32; + return result; } - void setDomainVerificationStatusForUser(int status, int userId) { - modifyUserState(userId).domainVerificationStatus = status; + void setDomainVerificationStatusForUser(final int status, int generation, int userId) { + PackageUserState state = modifyUserState(userId); + state.domainVerificationStatus = status; + if (status == PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ALWAYS) { + state.appLinkGeneration = generation; + } } void clearDomainVerificationStatusForUser(int userId) { diff --git a/services/core/java/com/android/server/pm/Settings.java b/services/core/java/com/android/server/pm/Settings.java index bdcd71464721..312b7b37d732 100644 --- a/services/core/java/com/android/server/pm/Settings.java +++ b/services/core/java/com/android/server/pm/Settings.java @@ -87,6 +87,7 @@ import android.util.ArraySet; import android.util.Log; import android.util.Slog; import android.util.SparseArray; +import android.util.SparseIntArray; import android.util.Xml; import java.io.BufferedOutputStream; @@ -196,6 +197,7 @@ final class Settings { private static final String ATTR_DOMAIN_VERIFICATON_STATE = "domainVerificationStatus"; private static final String ATTR_PACKAGE_NAME= "packageName"; private static final String ATTR_FINGERPRINT = "fingerprint"; + private static final String ATTR_APP_LINK_GENERATION = "app-link-generation"; private final Object mLock; @@ -294,6 +296,9 @@ final class Settings { // For every user, it is used to find the package name of the default Browser App. final SparseArray<String> mDefaultBrowserApp = new SparseArray<String>(); + // App-link priority tracking, per-user + final SparseIntArray mNextAppLinkGeneration = new SparseIntArray(); + final StringBuilder mReadMessages = new StringBuilder(); /** @@ -624,7 +629,7 @@ final class Settings { false, // hidden null, null, null, false, // blockUninstall - INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_UNDEFINED); + INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_UNDEFINED, 0); writePackageRestrictionsLPr(user.id); } } @@ -1051,7 +1056,7 @@ final class Settings { } return INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_UNDEFINED; } - int status = ps.getDomainVerificationStatusForUser(userId); + int status = (int)(ps.getDomainVerificationStatusForUser(userId) >> 32); if (status == INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_UNDEFINED) { if (ps.getIntentFilterVerificationInfo() != null) { status = ps.getIntentFilterVerificationInfo().getStatus(); @@ -1060,7 +1065,7 @@ final class Settings { return status; } - boolean updateIntentFilterVerificationStatusLPw(String packageName, int status, int userId) { + boolean updateIntentFilterVerificationStatusLPw(String packageName, final int status, int userId) { // Update the status for the current package PackageSetting current = mPackages.get(packageName); if (current == null) { @@ -1070,7 +1075,15 @@ final class Settings { return false; } - current.setDomainVerificationStatusForUser(status, userId); + final int alwaysGeneration; + if (status == INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ALWAYS) { + alwaysGeneration = mNextAppLinkGeneration.get(userId) + 1; + mNextAppLinkGeneration.put(userId, alwaysGeneration); + } else { + alwaysGeneration = 0; + } + + current.setDomainVerificationStatusForUser(status, alwaysGeneration, userId); return true; } @@ -1382,7 +1395,7 @@ final class Settings { false, // hidden null, null, null, false, // blockUninstall - INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_UNDEFINED); + INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_UNDEFINED, 0); } return; } @@ -1404,6 +1417,8 @@ final class Settings { return; } + int maxAppLinkGeneration = 0; + int outerDepth = parser.getDepth(); PackageSetting ps = null; while ((type=parser.next()) != XmlPullParser.END_DOCUMENT @@ -1457,6 +1472,12 @@ final class Settings { PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_UNDEFINED : Integer.parseInt(verifStateStr); + final String linkGenStr = parser.getAttributeValue(null, ATTR_APP_LINK_GENERATION); + final int linkGeneration = linkGenStr == null ? 0 : Integer.parseInt(linkGenStr); + if (linkGeneration > maxAppLinkGeneration) { + maxAppLinkGeneration = linkGeneration; + } + ArraySet<String> enabledComponents = null; ArraySet<String> disabledComponents = null; @@ -1478,7 +1499,7 @@ final class Settings { ps.setUserState(userId, enabled, installed, stopped, notLaunched, hidden, enabledCaller, enabledComponents, disabledComponents, blockUninstall, - verifState); + verifState, linkGeneration); } else if (tagName.equals("preferred-activities")) { readPreferredActivitiesLPw(parser, userId); } else if (tagName.equals(TAG_PERSISTENT_PREFERRED_ACTIVITIES)) { @@ -1496,6 +1517,8 @@ final class Settings { str.close(); + mNextAppLinkGeneration.put(userId, maxAppLinkGeneration + 1); + } catch (XmlPullParserException e) { mReadMessages.append("Error reading: " + e.toString()); PackageManagerService.reportSettingsProblem(Log.ERROR, @@ -1749,6 +1772,10 @@ final class Settings { serializer.attribute(null, ATTR_DOMAIN_VERIFICATON_STATE, Integer.toString(ustate.domainVerificationStatus)); } + if (ustate.appLinkGeneration != 0) { + serializer.attribute(null, ATTR_APP_LINK_GENERATION, + Integer.toString(ustate.appLinkGeneration)); + } if (ustate.enabledComponents != null && ustate.enabledComponents.size() > 0) { serializer.startTag(null, TAG_ENABLED_COMPONENTS); diff --git a/services/core/java/com/android/server/pm/UserManagerService.java b/services/core/java/com/android/server/pm/UserManagerService.java index 1a79b4eff6ed..23cb76771b58 100644 --- a/services/core/java/com/android/server/pm/UserManagerService.java +++ b/services/core/java/com/android/server/pm/UserManagerService.java @@ -1220,6 +1220,7 @@ public class UserManagerService extends IUserManager.Stub { final boolean isManagedProfile = (flags & UserInfo.FLAG_MANAGED_PROFILE) != 0; final long ident = Binder.clearCallingIdentity(); UserInfo userInfo = null; + final int userId; try { synchronized (mInstallLock) { synchronized (mPackagesLock) { @@ -1240,7 +1241,7 @@ public class UserManagerService extends IUserManager.Stub { if (isGuest && findCurrentGuestUserLocked() != null) { return null; } - int userId = getNextAvailableIdLocked(); + userId = getNextAvailableIdLocked(); userInfo = new UserInfo(userId, name, null, flags); userInfo.serialNumber = mNextSerialNumber++; long now = System.currentTimeMillis(); @@ -1274,9 +1275,9 @@ public class UserManagerService extends IUserManager.Stub { updateUserIdsLocked(); Bundle restrictions = new Bundle(); mUserRestrictions.append(userId, restrictions); - mPm.newUserCreatedLILPw(userId); } } + mPm.newUserCreated(userId); if (userInfo != null) { Intent addedIntent = new Intent(Intent.ACTION_USER_ADDED); addedIntent.putExtra(Intent.EXTRA_USER_HANDLE, userInfo.id); @@ -2015,4 +2016,12 @@ public class UserManagerService extends IUserManager.Stub { } } } + + /** + * @param userId + * @return whether the user has been initialized yet + */ + boolean isInitialized(int userId) { + return (getUserInfo(userId).flags & UserInfo.FLAG_INITIALIZED) != 0; + } } diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java index 87efb8da3c48..9e41f70a8326 100644 --- a/services/core/java/com/android/server/policy/PhoneWindowManager.java +++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java @@ -44,6 +44,9 @@ import android.content.res.TypedArray; import android.database.ContentObserver; import android.graphics.PixelFormat; import android.graphics.Rect; +import android.hardware.hdmi.HdmiControlManager; +import android.hardware.hdmi.HdmiPlaybackClient; +import android.hardware.hdmi.HdmiPlaybackClient.OneTouchPlayCallback; import android.media.AudioAttributes; import android.media.AudioManager; import android.media.AudioSystem; @@ -356,6 +359,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { boolean mSystemReady; boolean mSystemBooted; boolean mHdmiPlugged; + HdmiControl mHdmiControl; IUiModeManager mUiModeManager; int mUiMode; int mDockMode = Intent.EXTRA_DOCK_STATE_UNDOCKED; @@ -1212,6 +1216,9 @@ public class PhoneWindowManager implements WindowManagerPolicy { } private void handleShortPressOnHome() { + // Turn on the connected TV and switch HDMI input if we're a HDMI playback device. + getHdmiControl().turnOnTv(); + // If there's a dream running then use home to escape the dream // but don't actually go home. if (mDreamManagerInternal != null && mDreamManagerInternal.isDreaming()) { @@ -1223,6 +1230,46 @@ public class PhoneWindowManager implements WindowManagerPolicy { launchHomeFromHotKey(); } + /** + * Creates an accessor to HDMI control service that performs the operation of + * turning on TV (optional) and switching input to us. If HDMI control service + * is not available or we're not a HDMI playback device, the operation is no-op. + */ + private HdmiControl getHdmiControl() { + if (null == mHdmiControl) { + HdmiControlManager manager = (HdmiControlManager) mContext.getSystemService( + Context.HDMI_CONTROL_SERVICE); + HdmiPlaybackClient client = null; + if (manager != null) { + client = manager.getPlaybackClient(); + } + mHdmiControl = new HdmiControl(client); + } + return mHdmiControl; + } + + private static class HdmiControl { + private final HdmiPlaybackClient mClient; + + private HdmiControl(HdmiPlaybackClient client) { + mClient = client; + } + + public void turnOnTv() { + if (mClient == null) { + return; + } + mClient.oneTouchPlay(new OneTouchPlayCallback() { + @Override + public void onComplete(int result) { + if (result != HdmiControlManager.RESULT_SUCCESS) { + Log.w(TAG, "One touch play failed: " + result); + } + } + }); + } + } + private void handleLongPressOnHome(int deviceId) { if (mLongPressOnHomeBehavior != LONG_PRESS_HOME_NOTHING) { mHomeConsumed = true; diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java index 89e9d2e1eb12..0bb04f8378b8 100644 --- a/telephony/java/android/telephony/TelephonyManager.java +++ b/telephony/java/android/telephony/TelephonyManager.java @@ -4230,7 +4230,7 @@ public class TelephonyManager { } catch (RemoteException e) { Log.e(TAG, "Error calling ITelephony#canChangeDtmfToneLength", e); } catch (SecurityException e) { - Log.w(TAG, "Permission error calling ITelephony#canChangeDtmfToneLength", e); + Log.e(TAG, "Permission error calling ITelephony#canChangeDtmfToneLength", e); } return false; } @@ -4248,6 +4248,8 @@ public class TelephonyManager { } } catch (RemoteException e) { Log.e(TAG, "Error calling ITelephony#isWorldPhone", e); + } catch (SecurityException e) { + Log.e(TAG, "Permission error calling ITelephony#isWorldPhone", e); } return false; } @@ -4265,6 +4267,8 @@ public class TelephonyManager { } } catch (RemoteException e) { Log.e(TAG, "Error calling ITelephony#isTtyModeSupported", e); + } catch (SecurityException e) { + Log.e(TAG, "Permission error calling ITelephony#isTtyModeSupported", e); } return false; } @@ -4283,6 +4287,8 @@ public class TelephonyManager { } } catch (RemoteException e) { Log.e(TAG, "Error calling ITelephony#isHearingAidCompatibilitySupported", e); + } catch (SecurityException e) { + Log.e(TAG, "Permission error calling ITelephony#isHearingAidCompatibilitySupported", e); } return false; } |